The high level goal is a game that kids play. As they get through successive levels of this game they learn two different sets of skills:
In the on-line version of the game, they also learn social engagement with other kids through jointly creating interactive worlds of socially engaging narrative characters.
Each level consists of a sequence of puzzles. When a player solves a puzzle she advances to the next puzzle. After having solved all the puzzles in a level, the player advances to the next level. The first three levels teach successively more advanced forms of narrative authoring. Here are the three first levels:
sally.setColor(red);
In English this might be described as follows:
A player might specify this in Java with something like:Things about Sally: Whenever Sally is hungry, Sally finds food. Whenever Sally is sleepy, Sally finds a bed. The scene: Sally becomes hungry. Once Sally is no longer hungry, Sally becomes sleepy.
There are some difficult questions here. For example:// Things about Sally: sally.whenever("hungry", "find", "food"); sally.whenever("sleepy", "find", "bed"); // The scene: sally.set("hungry"); sally.once("not hungry", "set", "sleepy");
Note that if we were able to make a custom syntax, we could say things like:
But then we're not working in Java.// Things about Sally: sally.whenever("hungry", "find", "food"); sally.whenever("sleepy", "find", "bed"); // The scene: sally.set("hungry"); sally.when("not hungry") { sally.set("sleepy"); }
This level teaches how to set properties, and how to make decisions when conditions have been satisfied.
This level teaches interaction between two different characters, as well as sequencing and picking up objects.
This level teaches choosing variation in a storylines.
The above scene raises some questions. For example, consider the bits of business in the scene "I'm the polly that goes off with the third one" and, alternately, "I'm the polly that doesn't goes off with the third one, but instead finds a toy and then joins the other two." These could each be defined as dynamic properties of a particular polly. A scene could be authored by handing such dynamic properties off to the various pollys as a scene progresses.