Annotation of micropolis/src/PLAN.txt, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.