Annotation of micropolis/src/PLAN.txt, revision 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.