2nd year student at Breda University of Applied Sciences in Creative Media and Game Technologies.
💼 Open for a 6-12 month internship starting September 2025
November 1, 2024
Custom C++ Engine was a solo project. The project features core engine functionality such as an ECS Architecture, an ImGui editor, a GLTF importer, a Resource manager, full scene serialization using Cereal, a grid-based tile editor, and support on Windows and PS5.
My Contributions: ECS Design (EnTT) | Particle System | ImGui Editor & Gizmo Tooling | GLTF Runtime Loader | Resource Manager | Hierarchy System | Cross-Platform Engine Abstractions | JSON Serialization | Tile-Based Level Editor
Engine/Tools: C++, OpenGL, GLSL, EnTT, ImGui, Cereal, STB, tinygltf, ImGuizmo
Team Size: Solo
Platforms: Windows | PS5
Duration: 8 Weeks (Sep 2024 - Nov 2024)
This project is a fully custom-built C++ game engine designed to support real-time simulation, modular development, and cross-platform deployment. The engine provides a comprehensive runtime environment with systems for graphics, physics, input, audio, resource management, and user interface tooling. It follows an Entity-Component-System (ECS) architecture powered by EnTT, allowing for efficient, scalable scene management.
In the first week, I developed a robust particle system using EnTT, enabling various particle effects like Confetti, Sparks, and Fire. The system supports both fixed and dynamic timestep updates and includes configurable emitters with features such as color modes (gradient, single, random), shape selection (cube, cylinder, sphere), lifetime, physics properties (mass, gravity), and spawn volume (cone shape). I also implemented a physics system to simulate gravity-influenced motion and a rendering system using a custom MeshRendererXSR
.
Key Features:
Challenges:
I integrated a custom GUI using ImGui for simulation control and runtime inspection of scene entities. This included a scene hierarchy viewer, particle emitter editor, and transform gizmos via ImGuizmo. The system allows spawning and editing emitters, viewing debug visualizations, and manipulating objects within the editor viewport.
Key Features:
Challenges:
I implemented full serialization and deserialization of entities and components using the Cereal library. This included a custom system for saving/loading entire scene hierarchies as JSON. I also built cross-platform abstractions for input, file I/O, audio, and rendering using a mix of PIMPL, macros, and conditional compilation.
Key Features:
Challenges:
I created a runtime resource manager with support for loading and caching meshes and textures. The manager supports reference counting and lazy loading. I also developed a GLTF importer that loads complex models with proper mesh-texture mapping and hierarchy instantiation in the engine.
Key Features:
Challenges:
I implemented a functional tile-based level editor. This editor allows users to define grid sizes, import tile models via GLTF, assign them to grid tiles, and save/load entire levels. Tiles can be selected via mouse picking in the viewport and visually edited in the Inspector.
Key Features:
Challenges:
My contributions resulted in a highly modular and feature-rich custom game engine. The engine supports real-time simulation, flexible particle systems, intuitive editor tools, and cross-platform deployment. It streamlines asset handling, enables robust scene editing, and lays a strong foundation for future game development features. The project goes well beyond basic module expectations, showcasing advanced understanding in rendering, architecture, serialization, tooling, and systems design.