citylimits/docs/HackingAtRandomTalk.txt
2024-05-03 22:50:34 -04:00

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.