Aqua Engine

September 2022 - Ongoing


Source Code


Summary

Description

A custom game engine for exploring & testing different technologies such as scripting, virtual file systems, and rendering techniques.

Features

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.

Aqua Engine is by far the largest codebase I have worked on, and definitely makes me think harder 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.
Using my experiences from this project, I wrote my first Medium article!
Medium - How to embed C# scripting into your C++ application

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.

Media

C# script reloading

GLSL shader reloading