1 Plan for developing Micropolis for OLPC.
3 First, get it running on the current OLPC platform.
7 Screen depth and size: fixed size of OLPC screen.
8 Window management: one window.
9 Simplify window management. Single map and editor view. Tiled graph and evaluation windows.
10 Rearrange startup screen so it works in the full window mode.
11 Make budget window and file dialogs be transient popup windows.
12 Add "Enable/Disable Auto Budget" button to budget window.
13 Click on small R/C/I gauge to toggle evaluation window.
14 Click on small graph to toggle graph window.
15 Click on funds or tax rate to show budget window.
16 Disable multi player features by default (added -m flag to enable multi player mode).
17 Disable other experimental features (cellular automata, dynamic query, etc).
18 Add -S flag to enable Sugar features, and TCL access to test flag.
19 Enable audio: Use Sugar audio server.
20 Convert sounds to new audio format (currently wav).
23 Pick nice Sugar fonts to use, based on Sugar flag.
26 Update manual and documentation.
28 Make Sugar activity wrapper in Python.
30 Put new graphics and icons into interface and menus.
33 Replace TCL/Tk with Python/GTK, and use Pango/Cairo for graphics.
34 Implement custom Tk components in GTK.
40 Cellular Automata Machine view.
42 Integrate with Sugar and OLPC hardware.
44 Support CSound audio mixer.
45 Switch to a smaller audio format.
50 SVG graphics and icons.
53 Integrate with OLPC activity system, window manager, etc.
54 Rework user interface to follow Sugar user interface guidelines.
56 Support OLPC keyboard layout and device buttons.
57 Game keypad interface for book mode.
59 Optimize power management.
63 Integrated help, tutorials, essays on city design from manual, etc.
64 Voiceovers, demos, journal playback.
72 Rewinding and fast forwarding.
73 Publishing newspaper articles linking to save files.
74 URL to link into a city at a particular location on the map.
76 Multi player stupport.
83 Bring old Micropolis courseware up to date, and integrate with the game.
84 Export simulation data to spreadsheet or xml.
85 Creative writing, storytelling, newspaper reporting, blogging, etc.
86 Scenarios and experiments.
88 Branching history at decision point, and comparing different results.
90 Open up the simulator to Python.
91 Web services to remotely monitor and control simulation.
92 HTML or AJAX web server remote control interface.
93 Support multi player interactions through web server.
94 Submit a proposal to build a stadium over the web.
95 Style it like a real civic government web page, that allows citizens to participate online.
96 Enable extending the graphics, tiles, sprites.
97 Enable programming behaviors, defining new zones, new global variables, overlays, etc.
100 Programming by example.
105 Simplify the Micropolis interface and make it easier for kids to
106 use it with the game controller, in a way that will support
107 multi player interaction.
109 Collapse the separate concepts of game editing tool (bulldozer,
110 road, residential zone, etc) and agent (sprites like the
111 monster, tornado, helicopter, train, etc).
113 Agents with specialized tool represent different roles that kids
114 can play. A bunch of kids can join together and play different
115 roles at the same time in the same city. Instead of having a
116 bunch of editing tools to switch between, you have a bunch of
117 different agents you can drive around the map, like using a
118 monster to crush things instead of a bulldozer, or riding around
119 in a helicopter to scroll around and observe the map. Make a
120 meta-game like pokemon trading cards or magic the gathering,
121 about acquiring and deploying and using agents on the map. Give
122 agents different budgets and constraints.
124 Use an agent to represent a user in the world, and control an
125 editing tool. You see other users in the map driving around
126 their editing tool agents.
128 Each editing tool can be associated with a particular agent,
129 with a keyboard/game controller based user interface for moving
130 around, as well as a mouse based interface for picking it up and
133 The road tool becomes a road building vehicle, that you can
134 easily move up/down/left/right/diagonally with the game
135 controller directional input. Requires much less coordination to
136 draw straight roads than with a mouse.
138 The bulldozer tool becomes an actual bulldozer that you can
139 drive around the map, crushing things in your wake.
141 This makes the game easily usable by little kids in book mode.
143 Also support small children using Micropolis like a drawing tool or
144 etch-a-sketch, simply doodling with the editing tools for the
145 visceral pleasure of it, and setting fires and other disasters
146 to watch it burn and mutate.
148 Logo Turtles (as a generalization of the monster, tornado,
151 Implement programmable logo turtles as agents that can move
152 around on the map, sense it, and edit it.
154 Like Robot Odyssey agents, so you can go "inside" an agent,
155 and travel around with it, operate its controls, read its
156 sensors, and automate its behvior by wiring up visual programs
157 with logic and math and nested "ic chip" components.
159 Plug in graphics to represent the agent: use classic logo
160 turtle and Micropolis sprites, but also allow kids to plug in
162 Micropolis sprites have 8 rotations.
163 SVG or Cairo drawings can be rotated continuously.
165 Re-implement the classic Micropolis agents like the monster,
166 tornado, helicopter, train, etc in terms of logo turtles, that
167 kids can drive around, learn to use, open up and modify (by
168 turning internal tuning knobs, or even rewiring).
170 Let kids reprogram the agents to do all kinds of other stuff.
172 Mobile robots, that you can double click to open up into
173 Robot-Odyssey-esque visual program editors.
175 Agents have local cellular-automata-like sensors to read
176 information about the current and surrounding tiles.
178 KidSim / Cocoa / StageCraft Creator let kids define visual
179 cellular automata rules by example, based on tile patterns and
180 rules. Show it a pattern that you want to match by selecting
181 an instance of that pattern in the world, then abstract it
182 with wildcards if necessary, then demonstrate the result you
183 want it to change the cell to in the next generation.
185 Sense high level information about zones and overlays, so the
186 agents can base their behavior on any aspect of the world
189 Support an extensible model by allowing users to add more
192 Add layers with arbitrary names and data types at
193 different resolutions:
195 byte, int, float, n-dimensional vector, color, boolean
196 mask, musical note, dict, parametric field (i.e. perlin
197 noise or other mathematical function) at each cell, etc.
201 All Micropolis editing tools (including colored pens that draw
202 on overlays) should be available to the agent.
204 Enable users to plug in their own editing tools, that they
205 can use themselves with the mouse, keyboard or game
206 controller, or program agents to use to edit the map under
211 Build your own universal programmable editing tool.
212 Roll your own von Neuman Universal Constructor.
213 Smart robots you program to perform special purpose editing tasks.
215 The "Painter" picture editing program had a way of recording
216 and playing back high level editing commands, relative to the
217 current cursor position.
219 Remixing. Journaling. Programming by demonstration or example.
220 You could use a tape recorder to record a bunch of Micropolis
221 editing commands that you act out (or you can just select them
222 from the journal), then you can play those tapes back with
223 relative coordinates, so they apply relative to where the
224 agent currently is on the map. You can copy and paste and cut
225 and splice any editing commands into tapes that you can use to
226 program the robot to play back in arbitrary sequences.
228 Program an urban sprawl development-bot to lay out entire
229 residential subdivisions, complete with zones, roads, parks and
230 wires. Then program a luddite roomba-bot that sucks them all
231 up and plants trees in their place.
233 This becomes really fun when we let players plug in their own
234 programmed zones for the robot to lay out, and layers of data
235 to control the robot's behavior, out of which they can program
236 their own cellular automata rules and games (like KidSim /
237 Cocoa / StageCraft Creator).
240 Micropolis, Unix Version. This game was released for the Unix platform
241 in or about 1990 and has been modified for inclusion in the One Laptop
242 Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If
243 you need assistance with this program, you may contact:
244 http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.
246 This program is free software: you can redistribute it and/or modify
247 it under the terms of the GNU General Public License as published by
248 the Free Software Foundation, either version 3 of the License, or (at
249 your option) any later version.
251 This program is distributed in the hope that it will be useful, but
252 WITHOUT ANY WARRANTY; without even the implied warranty of
253 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
254 General Public License for more details. You should have received a
255 copy of the GNU General Public License along with this program. If
256 not, see <http://www.gnu.org/licenses/>.
258 ADDITIONAL TERMS per GNU GPL Section 7
260 No trademark or publicity rights are granted. This license does NOT
261 give you any right, title or interest in the trademark SimCity or any
262 other Electronic Arts trademark. You may not distribute any
263 modification of this program using the trademark SimCity or claim any
264 affliation or association with Electronic Arts Inc. or its employees.
266 Any propagation or conveyance of this program must include this
267 copyright notice and these terms.
269 If you convey this program (or any modifications of it) and assume
270 contractual liability for the program to recipients of it, you agree
271 to indemnify Electronic Arts for any liability that those contractual
272 assumptions impose on Electronic Arts.
274 You may not misrepresent the origins of this program; modified
275 versions of the program must be marked as such and not identified as
276 the original program.
278 This disclaimer supplements the one included in the General Public
279 License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS
280 PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY
281 OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF
282 SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS
283 DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES,
284 INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY,
285 FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY
286 RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING,
287 USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST
288 INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL
289 MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE
290 UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE
291 WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE
292 CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR
293 ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME
294 JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED
295 WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A
296 CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY