Micropolis
|
Micropolis is one of the oldest and grandest of city simulation games. A Linux port by Don Hopkins was released by Electronic Arts under the GPL for distribution on the XO. (See Don Hopkins' blog for more background.)
Installing Binaries
Installing activity bundles can be simple or complex.
If you are running Build 623, Ship.1, Ship.2, or something similar, and you have never installed Micropolis before, it should be easy. On your XO, open the web browser, and go to this page. Click on the link for Micropolis-1.xo. As it starts to download, you should see the Frame pop up briefly around the edge of the screen, with a document icon along the upper left side of the frame. When the download is done, the browser and the journal will automatically install the Micropolis activity. You should be able to find it by going into the frame (with the upper right corner "frame key"; it has a rectangle on it). Use the (<) and (>) circles along the bottom of the screen, to see all the different activity icons. Click on the one for Micropolis (as shown at the top of this web page).
If you are running a different build, I'm not sure what to suggest.
Latest stable XO activity bundle: Micropolis-1.xo (coming soon).
Obtaining Sources
The source code of Micropolis is checked into "git" here.
The Micropolis source code release includes two different generations of code: old and new.
Old Generation: C TCL/Tk Micropolis
The old generation of the source code is the TCL/Tk version of Micropolis (based on SimCity for X11). It is written in C, and the user interface is scripted in TCL with extensions to the Tk user interface toolkit, which runs on X11. It uses an old version of TCL/Tk from 1993.
It currently doesn't support 24 and 32 bit screens, only 16 bit, 8 bit and 1 bit. (This bug may be fixed soon.)
New Generation: C++ Python Micropolis
The new generation of the source code is MicropolisCore. It is based on the TCL/Tk code, but all of the scripting language, user interface and operating system dependent code has been removed. It's been translated to C++, reorganized and cleaned up.
The SWIG interface generation tool was used to integrate Micropolis with Python as an extension module. It also includes a general purpose Cairo based TileEngine that renders the SimCity tiles, and a Cellular Automata Machine engine, which also uses the TileEngine to render the cells.
MicropolisCore is not yet a playable game, but it's the beginning of an engine that can be used in many different situations, like OLPC XO-1 laptops, desktop applications, embedded devices, and web servers.
Why Change a Good Thing?
Rewriting Micropolis in C++ is the first step towards rewriting it in other better languages, and necessary for integrating it with Python. There is only one thing worse than C++, and that's C. And it just happens to be quite easy to translate C to C++, without heavily modifying it or changing its meaning, because "this" is implicit.
The entire state of the simulation is encapsulated inside of a C++ object, instead of global variables and functions, so it's possible to have any number of them running in parallel without interfering with each other (for a web server, or a multi player game).
C++ also makes it very easy to use SWIG to integrate the code with many different scripting languages. SWIG opens Micropolis up to many different scripting languages, instead of locking it into one scripting language or user interface toolkit.
Eventually we can rewrite more and more of Micropolis in an easier to understand and maintain language like Python, and put a high-level kid-friendly visual programming language interface over it. But the first step is to clean up and rationalize the existing code base, and make the basic game playable.
Building Micropolis
The old generation code builds on Fedora 7. It doesn't depend on the sugar-jhbuild environment.
The new generation code builds and runs on Fedora 7 as well as Windows (with Microsoft Visual Studio 8). Other people will port it to other platforms like the Mac in the future.
Bil Simser has written a series of articles on his blog about building Micropolis on Windows: Building A City - The Series.
License
The bulk of the code and images in Micropolis are copyrighted by Electronic Arts Inc. The word SimCityTM and many others that begin with Sim are also trademarked by Electronic Arts. EA has released the game under the GNU General Public License, version 3. As permitted under the GPL, EA has licensed the code with some additional terms:
Micropolis! This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org . This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ . ADDITIONAL TERMS per GNU GPL Section 7 No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees. Any propagation or conveyance of this program must include this copyright notice and these terms. If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts. You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program. This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.
In case this confuses you, here is a simpler explanation. The Micropolis code is free software. But the code as released by EA used EA trademarks. We could not modify the code and distribute it unless we (1) made it clear to the player that we have modified it, and (2) removed all the EA trademarks from the game. (We also have to follow all the other rules in the GPLv3, the EA additional terms, and the copyrights of other contributors. This was just a very brief summary.)
A small team of people is working on Micropolis (which was Will Wright's original code name for the game as he was designing it). If you want to improve the game, come help!
History
This Micropolis game came from the original SimCity, through a complex lineage.
Don Hopkins breaks it down like so:
- I ported the Mac version of SimCity to SunOS Unix running the NeWS window system about 15 years ago, writing the user interface in PostScript. And a year or so later I ported it to various versions of Unix running X-Windows, using the TCL/Tk scripting language and gui toolkit. Several years later when Linux became viable, it was fairly straightforward to port that code to Linux, and then to port that to the OLPC. After removing all EA trademarks, we have... Micropolis!
More information
- Micropolis source code release
- SimCity page for the Electronic Arts trademarked GPL city simulation game.
- OLPC SimCity Demo
- SimCity for OLPC (One Laptop Per Child): Applying Papert's Ideas About Constructionist Education and Teaching Kids to Program
- GPL Open Source Code of "OLPC SimCity" to be called "Micropolis"
- History and Future of OLPC SimCity / Micropolis
- SimCity Info
- Video Tape Transcript of Toronto Usenix Symposium Keynote Address
- Video Tape Transcript of HyperLook SimCity Demo
- HyperLook SimCity Demo Video
- Video Tape Transcript of X11 SimCity Demo
- X11 SimCity Demo Video
- Linux SimCityNet Demo Video
- Cellular Automata in SimCityNet on Unix Video
- Unix World 1993 Review of SimCity
- Multi-Player SimCity for X11 Announcement
- SimCityNet: a Cooperative Multi User City Simulation
- SimCity-For-X11.gif : Screen shot of SimCity running on X11.
- SimCity-Indigo.gif : Multi player X11 SimCity running on an SGI Indigo.
- SimCity-NCD.gif : Multi player X11 SimCity running on an NCD X Terminal.
- SimCity-Sun.gif : Multi player X11 SimCity running on an Sun.
- HyperLook-SimCity.gif : SimCity HyperLook Edition. SimCity running on HyperLook, a user interface development environment for the NeWS window system.
Ideas
- "The goal is to enable the open source community to renovate SimCity and take it in new educational directions" [1]
Game examples
- A Micropolis-based engine could be used for games along the lines of
- Genius Politik: The player is a politician and has to mediate between different political currents and make decisions about city planning and urban management, following proper political procedure instead of a "point and click" decision-making process. (Citizenship education)
- Genius - Task Force Biologie: The player is a biologist and works for the UN to restore lost biotopes around the world.
The player could be required to take care of the education of children (e.g. to co-finance schools, to address school issues and to buy OLPC laptops) and to participate in the education and upbringing of his or her own children in the game. (In a game like Task Force Biologie the player could, for instance, need the school to be able to employ qualified biologists later on) This would add a further level of complexity to the game: The player would have to decide whether to attend to private issues or issues of professional life. An in-game calendar application could frequently show conflicting appointments and allow the player to choose. The selection of appointments could also lead to a different social environment: The player would only be able to contact people he had previously met somewhere.