mirror of
https://github.com/tonytins/citylimits.git
synced 2025-03-15 04:11:23 +00:00
93 lines
4.4 KiB
Text
93 lines
4.4 KiB
Text
Micropolis, the open source version of SimCity, is a fun, engaging
|
|
game, that helps teach kids about science, language, mathematics, art
|
|
and politics. Its goal is to fulfill SimCity's potential as a
|
|
microworld for children's learning and exploration.
|
|
|
|
A web based version of Micropolis is the best way to quickly reach the
|
|
largest audience, and an important step towards the long term goal of
|
|
developing an open source, collaborative multi player, educationally
|
|
oriented simulation gaming platform.
|
|
|
|
This project is about creating educational open source software. It's
|
|
the culmination of years of research and development, that is now
|
|
possible thanks to Electronic Arts making SimCity open source.
|
|
|
|
Will Wright wrote the original SimCity city simulation game, first
|
|
released in 1989. Since 1992, Don Hopkins ported SimCity to various
|
|
platforms, redesigned the user interface, added multi player support,
|
|
cleaned and refactored the code, and integrated it with scripting
|
|
languages and web servers.
|
|
|
|
On January 10, 2008 the SimCity source code was released under the
|
|
free software GPL 3 license, under the name "Micropolis". Now that
|
|
it's GPL, it can be adapted to many platforms, including Linux, Mac,
|
|
and Windows guis, as well as web servers, cell phones and embedded
|
|
devices! And it can be improved and extended to make it a better
|
|
educational tool and open source programming example.
|
|
|
|
The Micropolis project is building an exemplary open source game out
|
|
of modular reusable components, that other people can learn from,
|
|
build on top of, integrate with other languages and user interfaces,
|
|
and use as a starting point for their own projects.
|
|
|
|
The plan to develop Micropolis into an educational gaming platform
|
|
draws heavily on the vision and experience of educators, researchers
|
|
and designers including Seymour Papert, Hal Abelson, Alan Kay, Will
|
|
Wright, Ben Shneiderman, and Mark Weiser.
|
|
|
|
Accomplishments of the Micropolis project so far:
|
|
|
|
Translated the original C SimCity code to C++.
|
|
|
|
Cleaned up all the code, organized into types and classes, refactored
|
|
and rewrote old crappy code, renamed variables and functions, measured
|
|
performance and optimized bottlenecks, applied a consistent
|
|
programming style, and heavily commented the code, wrote lots of
|
|
documentation and designs.
|
|
|
|
Used doxygen to generate extensive online documentation from formatted
|
|
commments in the code, with an html reference manual, member and
|
|
parameter descriptions, usage cross references, hyperlinked listings,
|
|
bug and todo lists, etc.
|
|
|
|
Removed all of the user interface code from the core simulation engine
|
|
(called MicropolisCore), and added programming interfaces to
|
|
efficiently access the internal data and control the simulation.
|
|
|
|
Implemented a general purpose TileEngine module, used by but
|
|
independent of Micropolis. Supports various memory formats, efficient
|
|
rendering techniques, graphics sets, tile mapping, lazy procedural
|
|
tile rendering, scaling and panning, caching, and tile animation
|
|
compressed network protocols. The CellEngine cellular automata machine
|
|
module also uses the TileEngine.
|
|
|
|
Integrated MicropolisCore, TileEngine and CellEngine with Python by
|
|
using SWIG, a scripting language interface wrapper generator. SWIG
|
|
makes it easy to develop and change the programming interface (C++
|
|
classes, etc), and automatically generate all the glue code that makes
|
|
it possible to access and control the C++ objects from Python (or
|
|
other languages). SWIG's advantage is that it makes it easy to plug
|
|
the same C++ code into many other languages like Lua, Ruby, Java, etc.
|
|
|
|
Implemented a desktop based GTK user interface to Micropolis, which
|
|
runs on Mac, Windows and Linux. The user interface is written in
|
|
Python, and based on PyGTK for user interface widgets, Cairo for
|
|
graphics, and Pango for text.
|
|
|
|
Implemented a desktop based GTK user interface to the CellEngine
|
|
module, a cellular automata machine simulation, which uses the same
|
|
TileEngine as Micropolis.
|
|
|
|
Implemented a web server based OpenLaszlo (Flash) user interface to
|
|
Micropolis, which runs the simulation on the web server, and displays
|
|
the user interface in a web browser with Flash (or eventually any
|
|
mainstream DHTML browser).
|
|
|
|
Internationalized the web based version of Micropolis, and implemented
|
|
a web based tool for localization, managing and editing translations
|
|
into different languages.
|
|
|
|
Implemented a MediaWiki extension for embedding OpenLaszlo
|
|
applications in wiki pages, so you can write Wiki pages including live
|
|
playable views of cities.
|
|
|