Page MenuHomePhabricator

KISS-DemosAndGames
Updated 2,026 Days AgoPublic

Introduction

In order to showcase the EFL and have some real development fun, let's create some very simplistic yet cool demos and games. The purpose is not to have a framework, a multiplayer-world-scalable game... rather have a nice good old days demos that developers have fun to develop. If we have to set a rule to motivate: make the code as small and simple as possible! Of course people are free to later improve their babies to do fancy stuff, but the rule of thumb is to have something usable in less than one day!

Hint: as you should use EFL, do all your code in an even driven way! That means you should call some functions to change the game state when events happen, be them mouse, keyboard or timeouts. This makes easier for later change of keyboard to mouse interaction and even introduction of network play.

Demos List

Sounds: can be produced with emotion, libcanberra or directly with any multimedia library such as gstreamer or xine. It is recommended to use emotion or libcanberra as they are super-easy to use.

Annoying Sounds

Plays one of more annoying sound when activated (iFart/vuvuzela like)

  • Required skills: basic (elementary)
  • Proposed development time: short (<1h)

Slap the bitch

Interact with an actor (your favorite hated pet, coworker, classmate) making him suffer

  • Required skills: basic (elementary)
  • Proposed development time: short-medium (1-2h)

Kill the bugs

Kill the stupid bugs as they appear on your screen (xbill like)

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)

Games List

These games should be very simple, yet they are addictive and people from all ages like them. They are very handy for a phone or desktop.

Development hint: try to isolate the game core logic. This does not mean you should create a framework or predict all the usage cases in the world (IOW: don't overengineer it!), but try to isolate game state inputs and outputs, for instance call functions like "player_input_moved(+1, -1)" then update it with "pad_move(+100, -50)". You're free to use globals and any handy context you want.

Goals: do not allocate memory for the game logic, they are often fixed and known beforehand.

Sounds: can be produced with emotion, libcanberra or directly with any multimedia library such as gstreamer or xine. It is recommended to use emotion or libcanberra as they are super-easy to use.

Network play: although many mention a network play, before doing that, please take the time to create a simple lib using ecore-con to announce and find peers, that will save duplicate code.

Input method: choose the easiest method that you will use, don't try to cover all in one or you'll end with none! If you think mouse is fine, then mouse it is (ie: board games where you have to pick stuff). If you think keys are better, then keyboard it is (ie: action games where you need repetitive fast responses like jump). If you do a nice core, then you can always provide a different version of your game later with a minimum set of #ifdefs or runtime toggles.

Screen Resolution: nowadays it's hard to predict the resolution someone will use, and how to adapt to it. For instance some games may scale proportionally, while others may just increase the scene viewport. Don't try to couple with them all or you'll end with none! Choose one and stick to it. If you did a nice game core, then you can always create a different version of your game later with a minimum set of #ifdefs or runtime toggles.

Tic Tac Toe

http://en.wikipedia.org/wiki/Tic-tac-toe

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)
  • Extra goals: do not allocate memory for the game logic
  • Further extensions: network play

Bejeweled

http://en.wikipedia.org/wiki/Bejeweled

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)
  • Extra goals: always check if your initially provided board is not solved already; check if it is impossible to solve it
  • Further extensions: network play; provide solve hints (counted to avoid abuses)

Sudoku

http://en.wikipedia.org/wiki/Sudoku

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)
  • Further extensions: provide solve hints (counted to avoid abuses)

Minesweeper

http://en.wikipedia.org/wiki/Minesweeper_(computer_game)

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)
  • Further extensions: provide solve hints (counted to avoid abuses)

Connect the Dots

http://orion.math.iastate.edu/danwell/MathNight/ppg.html

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)

Simon (Genius, Bliken)

http://en.wikipedia.org/wiki/Simon_(game)

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)

Tetris

http://en.wikipedia.org/wiki/Tetris

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)
  • Further extensions: provide solve hints (counted to avoid abuses)

Arkanoid

http://en.wikipedia.org/wiki/Arkanoid

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)

Enduro

http://en.wikipedia.org/wiki/Enduro_(video_game)

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-2h)

Infinite-run games

This one have some actions like jump or slide, the scene moves constantly and the player have to avoid traps and get as many points as possible. Traps are generated randomly so user don't get bored

Side-scrolling games

http://en.wikipedia.org/wiki/Side-scrolling_video_game

Based on a loadable game plan, the player walks in it to get as many points as possible and find the exit on the other side. Loadable game plan can be a text file with pre-defined characters to define the components such as walls, passages, bonus, traps, etc

  • Required skills: basic (elementary, edje)
  • Proposed development time: medium-large (2-12h)
  • Further extensions: specify barriers that depend on user finding some specific element before he is allowed to go further.

Netwalk

http://www.beiks.com/palm/netwalk.htm
http://code.google.com/p/netwalk/

  • Required skills: basic (elementary, edje)
  • Proposed development time: short-medium (1-1.5h)

Imported from https://trac.enlightenment.org/e/wiki/KISS-DemosAndGames
History:
1 barbieri 2010-09-06 10:18:03
2 dmn9 2010-09-14 18:24:40 May I add game that I would like to be developed in EFL?
3 barbieri 2010-11-15 16:36:56

Last Author
beber
Last Edited
Sep 5 2013, 2:30 PM
Projects
None
Subscribers
None