Coral Engine
July 2023 - August 2024
Coral Engine began as a personal project during a summer holiday. Over time, it evolved into a full-fledged engine featuring visual scripting and a robust editor. From the start, the goal was to create a simple, accessible API for developers while ensuring the engine remained intuitive for designers.
After seven months of solo development, I was joined by five talented programmers to enhance Coral Engine, making it production-ready. We used it to develop Lichgate. The designers who joined our team were able to utilise its capabilities to create their own prototypes, assets and gameplay features.
I continued working on Coral Engine for several months, ridding it of some technical debt that had built up over the course of development.
My Contributions
Visual Scripting
Built a performant node-based visual-scripting interpreter from scratch, fully integrated with the ECS system (EnTT).
Engine Architecture

Designed and iterated the core architecture from concept to release.
Asset Management

Created a system for importing, editing assets and efficiently managing resources in a multi-threaded environment.
Physics

Helped create a 2D physics system with optimized collision handling.
Reflection System

Created a system to represent both C++ and Visual Script classes through a unified interface.
Optimisations

I have consistently benchmarked, profiled, and accordingly optimized the worst bottlenecks.
Utility AI

Created a framework for state-based AI behavior.
Prefab System
Implemented a system similar to Unity's prefabs, allowing entity reuse.
Level Editor
Developed a user-friendly editor for level design, including tools for quickly transforming objects and undoing changes.
Particle System
Created an extendable, data-oriented particle system.
Serialization
Designed a serialization system for assets and levels with backwards compatibility.
Event Handling
Developed a powerful, easy-to-use event system.
Unit Test Framework
Created a lightweight framework for quickly creating tests in-engine.
CI/CD
Set up GitHub Actions for automatic compilation, testing, and distribution.
Project Management
I managed the team of programmers, overseeing task distribution and ensuring alignment.
Frontend
I played a large part in utilizing ImGui to create an accessible interface for designers, including the content browser and most editor windows.