
Overview
Roles |
Engine programmer
|
Duration | 8 weeks |
Platform | Windows |
Engine | Custom-built |
Team size | Solo |
Tools & Technologies
Languages & APIs | C++, Lua |
Tools | Visual studio |
Workflow | Git/GitHub |
Libraries | ImGUI, Entt, TinyGLTF, SolLua, Cereal, GLM |
Project Overview
Lambda engine is my first in-depth dive at the engine architecture world, where I tried to develop and understand how some of the most important features of an engine work under the hood. Following some design patterns from popular engines such as Unity, I also tried to leave my own touch on certain aspects.
Goals and motivations
- Understand the important features of an engine:
- How to use an ECS
- How to create a simple resource manager
- How to import gltf files
- How to handle complex hierarchies
- How to create a simple CPU based particle system
- How to implement a scripting language
- How to handle hot reloading
- Have fun with creating tools and UIs for all the systems
Biggest obstacles
- Handling scripting with Lua and play, pause and stop scripting logic
- Grasping resource manager concepts for the first time
- Getting a better understanding of the GLTF spec sheet
Highlights
- Full engine editor using ImGui
- Support for scripting with Lua
- Component based architecture, facilitating entt ECS
- Custom resource manager
- Scene serialization
- CPU based particle system
- Game start, stop, and pause
- Custom in engine console for logging errors, warnings and messages
