|This article needs additional citations for verification. (December 2009)|
Stagecast Creator is a visual programming language intended for use in teaching programming to children. It is based on the programming by demonstration concept, where rules are created by giving examples of what actions should take place in a given situation. It can be used to construct simulations, animations and games, which run under Java on any suitable platform.
What is today known as Creator originally started as a project by Allen Cypher and David Canfield Smith in Apple's Advanced Technology Group (ATG) known as KidSim. As the name implies, it was intended to allow kids to construct their own simulations, reducing the programming task to something that anyone could handle. Programming in Creator uses graphical rewrite rules augmented with non-graphical tests and actions.
In 1994, Kurt Schmucker became the project manager, and under him, the project was renamed Cocoa, and expanded to include a Netscape plug-in. It was also repositioned as "Internet Authoring for Kids", as the Internet was becoming increasingly accessible. The project was officially announced on May 13, 1996. There were three releases:
- DR1 (Developer Release 1) on October 31, 1996
- DR2 in June, 1997
- DR3 in June, 1998
When Steve Jobs returned to Apple in 1997, he began dismantling a number of non-productive departments. One of these was the ATG. Larry Tesler, Cypher, and Smith, left to form Stagecast Software after retaining the rights to the Cocoa system.
Apple went on to reuse the Cocoa name for the entirely unrelated Cocoa application framework, which had originated as OpenStep. Apparently due to time constraints—it was easier to reuse an already-registered name than to register a new term.
Creator is based on the idea of independent characters that have a graphical appearance and non-graphical properties. Each character has a list of rules that determine how it behaves. The rules are created by demonstrating what the character does in a specific situation. Each rule is a before / after rule, stating that when the before conditions of the rule are met, the after actions of the rule are performed.
For a simple example, let's consider a simulation showing a character walking across a field, jumping over any rocks it encounters. Such a simulation would start with the construction of the playfield, in this case a line of icons representing the grass and a few rocks. A character is then placed on the playfield and double-clicked to open a rule editor. The rule editor will start by displaying the current conditions, that is, the character is standing on the grass. Below is an area to place the various "after" conditions, in this case the user drags open the default grid to two spaces, drags the character into the new grid cell, say to the right, and closes the rule editor.
If the simulation is started at this point, the character will start walking across the playfield to the right until it reaches the first rock. Since there is no rule showing what should happen when a rock is to the character's right, the character simply stops. At this point the rule editor is opened again, but now it shows the new condition that applies, the character is to the left of a rock. The actions in this case would be two steps, the first showing the character moving up and to the right, the next down and to the right. When the simulation is re-run, the character will walk to the right, and then "jump" over the rocks. In this case the character will now stop moving when it reaches the side of the screen, and a new rule could be added at that point to "wrap around" to the left side again.
Additional rules can be added "on the fly" to flesh out the simulation. In this example additional rules would likely be added to allow the conditions to apply no matter which direction the character is walking, duplicating the existing set of two rules for movement to the left, and up and down. To make the simulation interactive, the "automatic movement" rules can be removed, and replaced by ones that move only when the cursor keys are held down, and jump only if the user presses space. Now the simulation becomes a simple game.
Many new features were added to the system during its evolution from KidSim/Cocoa to Creator. These include the introduction of 'jars' as a means of object classification, a new z-variable that allows Creator to simulate a 3-D space (as a stack of 2-D sheets), the ability to control more than one character at a time, and the option to redraw the screen only after all moves in a turn have been made.
In order to ensure Creator's cross-platform compatibility, the entire system was ported to the Java programming language. As Cocoa, the system was a Mac-only product and included an 'Autoplayer' functionality that allowed a Cocoa simulation to be run as a stand-alone program on any Mac. With the port to Java, Creator simulations can be posted on a Web page and run as an applet.