Graphics & Games ยท 2010 to 2019
Sauce3D
A custom C++ and OpenGL game engine with asset management, sprite batching, rigid body physics and a UI system.
1 / 5
Sauce3D was a custom game engine I worked on from mid-2010 to 2019. Its main purpose was to help me understand how a modern game engine is constructed, and many of its design decisions were inspired by engines and libraries such as Unreal Engine, libGDX and Torque3D. I put great emphasis on ease of use for the programmer while striving for excellent run-time performance.
Sauce3D is written in C++. It uses OpenGL 3.2 for rendering and SDL for window management and communication with the OS.
Engine
- Automatic asset management, ensuring that:
- Assets are easily available to all game classes.
- Assets are only loaded once they are needed.
- Logging macros that can dump detailed information.
- Scene management that automatically propagates events through a scene hierarchy.
- Input handling for keyboard, mouse and gamepads.
Graphics
- Easy-to-use primitive rendering (indexed and non-indexed).
.objmesh loading.- Sprite batching to reduce draw calls.
- Bitmap font rendering through BMFont.
- Textures and render targets supporting a variety of formats, including integer and double precision.
- Multiple render targets.
- Automatic texture atlas generation.
- Vertex, fragment and geometry shaders.
Physics
- A custom rigid body dynamics system that supports up to 1,500 bodies while maintaining 30 FPS on a 2.8GHz Intel i7.
UI
- Resizable bitmap buttons.
- Modal dialog boxes.
- Single-line input fields.
- Cross-fade transitions.
Networking
Networking is not part of the engine, but it can easily be added with a library such as RakNet, as I did in Overworld.