]>
Commit | Line | Data |
---|---|---|
6a5fa4e0 MG |
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 micropolis@laptop.org. | |
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. |