##master-page:ProjectTemplate
#format wiki
#language en
#title Python Game Idea

||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>||

== Summary ==

A Python learning game where you must solve a series of puzzles in each level to advance to the next level, 
only you solve them by writing Python snippets that will modify your character or the environment in
a way that makes the level passable.

== Technical Details ==

|| Type || Programming, Puzzle ||
|| Age Range || 10+ ||
|| Profile || TBD ||
|| Website || TBD ||
|| Launchpad || TBD ||
|| License || TBD, probably GPLv2 ||
|| Language || Python ||
|| Toolkit || !PyGame ||

== Plot ==

'''This game is in the initial conception phase, the plot is subject to change'''

Your character lives in a virtual world, like the 1990's computer animated series "Reboot".
Your world is "broken", some of the objects in it aren't working as they should.  You need
to get to a certain place in the world to fix it.  However, your path is blocked along
the way by the broken objects, and you must fix them to move on.  To fix them, you have to
change their source code (python snippets), so that they have the expected behavior.  At
each level, the user will learn and have to use a certain programming concept, such as
if/else conditions, looping, recursion, even OOP.

 The idea that the game environment is "broken" and needs to be repaired is a good frame to place a game.  There is a pitfall in edutainment games of creating a fun activity, and creating learning exercises as obstacles to that activity (math crunchers &etc).  Learning exercises should be more-closely integrated into the gameplay experience.

 To expand upon your idea, here is an exercise that fits the Reboot-style environment:

 *The Player Character (Player) is attempting to travel down a street.  A library has collapsed and is blocking her path.  This library stores books on shelves, shelves in bookcases, and bookcases in rows.  Player can organize these books using python to repair the library.

 *Each book has several characteristics, including: Topic, Size, Color, and Title.  It is up to the player to choose an organization scheme based on a few limits.  For instance, the player could place every {Color : 'Purple'} book in the West-most room of the library.  Place each book with {Size : 'Small'}, {Size : 'Medium'}, and {Size : 'Large'} in their own bookcases.  And place 25 books on each shelf, sorted in reverse-Alphanumeric order.

 *Once the Player has completed her library the game generates an explorable library for the player, filled in turn with other exercises on the theme of sorting.

== Brainstorming ==

'''This game is in the initial conception phase, so add your thoughts and ideas here'''

 * A Myst-style first-person, or Machinarium-syle third person control, where the
 character is limited in the choices of where they can go, and what they can interact with.
 * All objects will have snippets of Python code that control their behavior, whether they
 are necessary for completing a level or not.
 * Level completion should be determined by the result of the user's code changes, not on
 them making the correct changes.  If they user thinks of a different way to accomplish
 the same goal, that should let them advance to the next level
 * Instead of saving a user's progress, save the results of their code changes.  Upon 
 restarting the game, the user's changes will be played in fast-forward style, until they
 reach the point where they have not made the changes necessary to advance further. (This
 has the added benefit of encouraging time-efficient solutions).

== Screenshots ==

N/A

== User Comments ==

None

== References ==

[[https://code.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/edubuntu.lucid]]