
The "Progressive Engine" has been a pet project of mine that I would dabble with occasionally throughout college. As I worked my way through school and increased my experience developing games, I would add new features to this engine as a testbed. It also serves as a basis for any experimental projects I do, removing the need to write boilerplate code to get something working. It is designed to be an example of the breadth of some of my knowledge, not necessarily the depth. The main engine components are written in C/C++, the content pipeline is written in C# .NET 2.0 and the game world interface is written in Python.
Features:
The renderer is a scene graph based system that tracks and displays various types of scene objects. These scene objects can have specialized materials and customized shaders attached to them dynamically at runtime. Rendering data is passed around system and to shaders using an advanced render transfer system that minimizes bandwidth. All materials, meshes, and shaders are data driven by an artist. Data given by artist is all run through the content pipeline and exported into an efficient binary format that is read by the engine.
The resource system is responsible for loading all data into the system. The resource system is designed to run in the background on a separate thread and process asynchronous resource load requests for the main thread. Because of this design, its implementation uses a combination of mutexes, condition variables, and other concurrency tools to maintain proper function. The system takes resource archives generated by the content pipeline and loads individual records which are converted into resources by a resource factory and then given to the requesting client.
The audio system uses OpenAL to provide directional sound rendering to the world. I have implemented a resource sound management system to allow the user to play as many sources as the hardware can support natively.
The physics system is powered by the Open Dynamics Engine (ODE) and simulates gravity, friction, and collisions. The simulation collaborates with ai and other components of the game object.
The content pipeline reads in a variety of raw assets, performs any valid optimizations, and then merges and packs the assets into binary archive files for use by the engine. The pipeline consists of a variety of stages that get a chance to process an asset. The stages to be run on a given asset are specified by an xml template that is setup by the user of the pipeline. Along with the binary data archives, the pipeline exports a build report that specifies exactly what has been exported to each archive along with the compression, sizes, and resource keys that are associated with the compiled asset. The content pipeline is written entirely in C# using .NET 2.0.
Media:
Downloads:
September 16, 2007 release
Full Release - Compiled Assets + Executables + Source Code
Runtime Release - Compiled Assets + Executables