Yonai
A 2D and 3D multi-platform game engine
September 2022 - Ongoing
Technology Used
- OpenGL
- Assimp
- GLFW
- GLM
- ImGUI
- STB
- glad
- CMake
- Mono
Summary
A custom game engine for exploring & testing different technologies such as scripting, virtual file systems, and rendering techniques.
Features
- Custom hybrid entity component system
- Scripting support for C# (w/ reloading)
- GUI editor
Why
It's a great learning experience, provides great insight for how the larger engines may work internally, and can feel very rewarding (when it works).This is my playground for experimentation and implementing various techniques, such as different rendering pipelines or effects.
Yonai is by far the largest codebase I have worked on, and definitely makes me think more deeply when refactoring or implementing new features.
Difficulties
Scripting
The largest difficulty thus far was implementing mono for C# scripting.There isn't a lot of great documentation available, and for a long while I was unaware of how to track managed objects when garbage collection moved them in memory.
Entity Component System
With 90% of experience being in Unity, my mindset is very much geared towards logic and data mixed inside components.The approach I settled on was components that can have logic, but also implementing systems similar to a more pure ECS implementation; this allows me to transition logic from components in to systems, but also an opportunity to leave logic in components where it may make more sense.