
STAGE2D
A CUSTOM C++ GAME ENGINE
Exploring game engine architecture, entity management, and Lua-driven gameplay.
.png)
Custom ECS
.png)
Lua Scripting
Script-Driven Gameplay
Entity–Component–System Architecture
PROJECT OVERVIEW
STAGE is a custom 2D game engine developed in C++, featuring a top-down helicopter combat demo. Players navigate a military environment, engage enemy aircraft and ground units, and interact with a world built around reusable gameplay systems. The project served as an opportunity to explore the fundamental architecture of a game engine rather than relying on an existing commercial solution.
Developed as an independent personal project, STAGE is a custom 2D game engine built with C++ and SDL2. I designed and implemented its Entity–Component–System (ECS) architecture, integrated Lua scripting for level configuration and gameplay behaviours, and used Dear ImGui to develop debugging tools. The project provided hands-on experience with engine architecture, resource management, and the interaction between reusable engine systems.
The main technical challenge was designing an ECS capable of managing entities, components, and systems efficiently. Additional work included integrating Lua with C++, implementing event-driven communication between gameplay systems, and developing a 2D rendering pipeline with sprite animation, camera movement, and visibility culling. These systems form the foundation of a modular engine architecture that can be extended with additional features.
• The Project
• Development
• Technical Focus
CONTRIBUTION
Gameplay Programmer
-
Player Movement
-
Projectile System
-
Collision & Damage System
-
Lua-Scripted Enemy AI
Engine Tools
-
ImGui Debug Interface
-
Entity Creation Tool
-
Collision Debug Visualization
-
Runtime Property Controls
Engine Programmer
-
Custom ECS Architecture
-
Entity & Component Pools
-
Lua Scripting Integration
-
Event-Driven Systems
Rendering Programmer
-
Military Base Environment
-
Terrain & ProBuilder
-
Environment Layout
-
Asset Integration
HIGHLIGHTS








