This 3D game engine was written in 2012 using the OpenGL Utility Toolkit (GLUT) to create simple games based around physics objects bound to arbitrary 3D planes. The initial spec required an engine capable of supporting a minigolf game, but like all good game engines, the RACE! engine allows many types of games to be built using it, such as the time trial racing demo on the right.
The RACE! engine supports various static and physics-based objects bound to a graph of connected 3D planes. Multiple game states can be loaded and updated at different times, allowing for easy development of menu systems, pause screens, or multiple levels spread across separate game states. Levels and other data can be loaded from text files – game developers can link keywords in these files to data processing functions in their game initialization code, allowing them to write application-specific data handling without having to touch the engine codebase.
I co-wrote the RACE! engine with my frequent collaborator Rob Giusti. I focused on coding a lot of the 3D vector math that underpins the physics and camera systems (the latter of which I also wrote). I also built a library of graphical and UI helper functions, including a system for building complicated GUI widgets by parenting together multiple simple components.