GNU Aetherspace - Game Engine
When Aetherspace was started we used a game engine licensed under the GNU
GPL and believed this was sufficient. As development continued we found this
engine contained many features which were only usable with proprietary drivers
which that engine's maintainer recommended.
After evaluating several other game engines available under a GPL-compatible
license we reached the conclusion that the only way to develop a truely free
software game would be to write our own engine, and so we started to.
This page details the engine design and purpose. For technical information
see the game engine's page.
The engine is designed with these three priorities;
feature of the engine is designed to require proprietary software.
engine should run on any modern device.
- The engine should be as easy to
use as possible to attract new Aetherspace developers and developers of other
free software games.
These priorities are very carefully ordered; there are many platforms which
the engine could run on but would require depending on proprietary software or
making the engine available on those devices only under a restricted license.
Examples include Apple's phones and Microsoft's game consoles.
Additionally, many contributors may be more comfortable working with tools
which only support proprietary codecs or only export to formats which require
proprietary software to edit. We hope that such artists will understand that
the time needed to learn new tools is worth the freedom offered by them.
Most free software graphics tools (and many proprietary tools as well) use
Python, most notably including
Blender. As its often difficult to draw
a line between "code" and "content" in a game, most artists need to work
directly with the instruction code that use their contributions.
For this reason we started and remain with Python for most game code.
The game engine itself is written in C,
assembly, and OpenGL vertex shaders.
The engine frontend is a Python library
written in pure C that depends only on Python 3 and the engine's backend.
The engine backend is primarily built on
Gnome libraries such as
GLib, GDK, and
Cairo. The backend does not depend on
Python so it may be useful for other Gnome-based applications.
OpenGL is used for 3d rendering and is ensured to work with both
Mesa and Gallium. Our baseline for
graphics support is the free software r200 (Radeon 9000) and i915 drivers.
Any accelerated free software drivers should be able to support the same
OpenGL extensions as these older drivers. The engine is occassionally tested
to also work with proprietary drivers for X11, Apple's OSX, and Microsoft
See the game engine project site for a
complete list of dependencies for both the backend and Python frontend listed
The GNU Affero General Public License
was chosen because the
engine is intended to support play through a web browser plugin or mobile
phone app with the game running primarily on a server. We call this
to leverage this form of distribution for web and mobile game markets.
If you'd like to get involved in engine development, a good place to start
is on irc.freenode.net in the game engine
project IRC channel (#PySoy).