|
|
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.