Custom C++ Component-Based Game Engine (raylib)
Work in progress
This project explores engine architecture and systems commonly abstracted by modern game engines. I wanted to understand how component systems, rendering pipelines, data flow, and asset ownership actually function beneath the surface.
Built on top of raylib as a lightweight rendering and input layer, the focus was on designing a component-based entity system and a centralised rendering pipeline with material and shader management - rather than low-level graphics API boilerplate.
The project was developed as both an engine and a small gameplay prototype, ensuring systems were tested against real gameplay rather than developed in a vacuum.Demo
Future Direction
The engine was built around swarm-style gameplay involving large numbers of dynamic enemies and lights. The current architecture provides a solid foundation for exploring more advanced, performance-focused systems, with future work exploring GPU-driven approaches to gameplay simulation and rendering.
- OpenCL-based GPU compute – Offloading enemy and projectile logic to the GPU taking advantage of parallel processing.
- Deferred rendering – Investigating a deferred pipeline to better support high light counts and more complex scenes.
- Hardware instancing – Reducing draw calls for repeated meshes to improve scalability.
- Frustum culling – Adding view-based render culling to reduce unnecessary draw calls.