I started to work on my own open source game engine a while ago. Just to learn game engine architecture and design. My ultimate goal would be to make it into a general purpose game engine, but I have focused on FPS games in 3D so far. And I'm sure I will continue that path.
The features of this game engine includes, but are not limited to, the following:
- A Java2D based scan-line rasterizer, for 3D rendering.
- A camera that can be controlled in the 3D environment.
- Keyboard- and mouse input.
- A depth-cue rendering option.
- A wire-frame rendering option.
- Groups of polygons can be rotated and moved independently of others.
- A particle system, that currently only supports one type of particle, namely blood splatter.
- Point light sources.
- Shaded textures, created using the point light sources.
- A progress update screen, for loading resources and configuring a game.
- Map loading, currently only via XML-files.
- Toggling of mouse re-centering, useful for FPS games.
- Toggling of paused mode, in which various aspects of the game is not updated, but you can roam around.
- Toggling of a cursor, that is, you can show it or hide it.
- Toggling of FPS rendering.
- Toggling of texture rendering.
- A simple sound manager, with support for guitars, tones and byte arrays of sound data.
- Configurable map boundaries for X and Z, instead of real collision detection, as of yet.
A few days ago I GitHub:ed it, so it can be used in competitions, such as Ludum Dare. I did use it in the latest Ludum Dare 29. My game entry is called Surface Invaders and can be found in the links section below.
If anyone has any feedback or suggestions for improvement, features or critisism, please let me know.
A screenshot of the game and parts of the game engine:
Surface Invaders website: http://www.martus.se/ld29/surface_invaders/