Our custom game engine is built on a multi-layered architecture that separates concerns across rendering, physics, audio, and input systems. The rendering pipeline uses OpenGL 4.6 with a deferred shading model, supporting up to 512 dynamic lights per scene through a clustered lighting approach. The physics engine integrates a rigid body solver with support for convex hull collision detection using the GJK algorithm, with a broadphase BVH tree for spatial partitioning. We implemented a custom entity-component system (ECS) using a sparse set architecture to maximize cache coherency, with archetypes stored in contiguous memory pools.
The audio system leverages OpenAL Soft with a custom DSP chain for reverb, occlusion, and distance attenuation. Input is handled through a buffered event queue that abstracts platform-specific APIs (Win32, SDL2) behind a unified interface. Our asset pipeline runs as a separate tool that compiles raw assets (FBX, PNG, WAV) into a custom binary format for fast runtime loading. The scripting layer exposes engine functionality to Lua via a hand-written binding layer, allowing designers to author gameplay logic without recompiling. Networking uses a lockstep model with deterministic simulation and delta-compressed snapshots sent at 20Hz, with client-side prediction and server reconciliation to mask latency. Memory management is handled through a hierarchy of allocators: a stack allocator for per-frame data, a pool allocator for fixed-size objects, and a general-purpose heap for everything else.


Slides: https://simonguest.github.io/CSP/
simon.guest@digipen.edu

