|
|
1.1 root 1: Plan for developing Micropolis for OLPC.
2:
3: First, get it running on the current OLPC platform.
4:
5: DONE:
6:
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).
21:
22: Fix fonts.
23: Pick nice Sugar fonts to use, based on Sugar flag.
24:
25: TODO:
26: Update manual and documentation.
27:
28: Make Sugar activity wrapper in Python.
29:
30: Put new graphics and icons into interface and menus.
31:
32:
33: Replace TCL/Tk with Python/GTK, and use Pango/Cairo for graphics.
34: Implement custom Tk components in GTK.
35: Map view.
36: Editor view.
37: Date view.
38: Graph view.
39: Pie menus.
40: Cellular Automata Machine view.
41:
42: Integrate with Sugar and OLPC hardware.
43: Audio.
44: Support CSound audio mixer.
45: Switch to a smaller audio format.
46: Record better sounds.
47: Internationalization.
48: Graphics.
49: Hires monochrome.
50: SVG graphics and icons.
51: Create better icons.
52: Sugar integration.
53: Integrate with OLPC activity system, window manager, etc.
54: Rework user interface to follow Sugar user interface guidelines.
55: Keyboard control.
56: Support OLPC keyboard layout and device buttons.
57: Game keypad interface for book mode.
58: Optimization.
59: Optimize power management.
60: Optimize size.
61: Optimize speed.
62: Documentation.
63: Integrated help, tutorials, essays on city design from manual, etc.
64: Voiceovers, demos, journal playback.
65: Courseware.
66: Map annotation.
67: Journaling.
68: Event history.
69: Edit history.
70: Checkpointing.
71: Branching histories.
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.
75: Grid networking.
76: Multi player stupport.
77: Sharing cities.
78: Colaborative editing.
79: Voting.
80: Chat.
81: White board.
82: Educational.
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.
87: What-if?
88: Branching history at decision point, and comparing different results.
89: Scripting.
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.
98: Cellular automata.
99: Visual programming.
100: Programming by example.
101: KidSim, AgentSheets.
102:
103: Visual Programming
104:
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.
108:
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).
112:
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.
123:
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.
127:
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
131: dragging it around.
132:
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.
137:
138: The bulldozer tool becomes an actual bulldozer that you can
139: drive around the map, crushing things in your wake.
140:
141: This makes the game easily usable by little kids in book mode.
142:
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.
147:
148: Logo Turtles (as a generalization of the monster, tornado,
149: helicopter, etc)
150:
151: Implement programmable logo turtles as agents that can move
152: around on the map, sense it, and edit it.
153:
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.
158:
159: Plug in graphics to represent the agent: use classic logo
160: turtle and Micropolis sprites, but also allow kids to plug in
161: their own.
162: Micropolis sprites have 8 rotations.
163: SVG or Cairo drawings can be rotated continuously.
164:
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).
169:
170: Let kids reprogram the agents to do all kinds of other stuff.
171:
172: Mobile robots, that you can double click to open up into
173: Robot-Odyssey-esque visual program editors.
174:
175: Agents have local cellular-automata-like sensors to read
176: information about the current and surrounding tiles.
177:
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.
184:
185: Sense high level information about zones and overlays, so the
186: agents can base their behavior on any aspect of the world
187: model.
188:
189: Support an extensible model by allowing users to add more
190: layers.
191:
192: Add layers with arbitrary names and data types at
193: different resolutions:
194:
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.
198:
199: Edit the world.
200:
201: All Micropolis editing tools (including colored pens that draw
202: on overlays) should be available to the agent.
203:
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
207: program control.
208:
209: Robot Odyssey
210:
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.
214:
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.
218:
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.
227:
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.
232:
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).
238:
239: --
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 [email protected].
245:
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.
250:
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/>.
257:
258: ADDITIONAL TERMS per GNU GPL Section 7
259:
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.
265:
266: Any propagation or conveyance of this program must include this
267: copyright notice and these terms.
268:
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.
273:
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.
277:
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
297: NOT APPLY TO YOU.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.