GNU Aetherspace - Game Engine

History

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 truly 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.

Priorities

The engine is designed with these three priorities;

  1. No feature of the engine is designed to require proprietary software.
  2. The engine should run on any modern device.
  3. 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.

Programming Language

Most free software graphics tools (and many proprietary tools as well) use Python, most notably including GIMP and Blender. As it's 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, GObject, cross-platform SIMD assembly, and OpenGL vertex shaders.

Dependencies

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 Windows.

See the game engine project site for a complete list of dependencies for both the backend and Python frontend listed as requirements.

Licensing

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 cloud gaming and hope to leverage this form of distribution for web and mobile game markets.

Getting involved

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).