Game Engine: The Prologue

by Debbie Liknes 3 min read
C++ Game Engine Architecture Chai Update

Game engines are cool. Let's make one!

Why Chai?

Welcome! What’s in a name? I call it Chai because that’s what fuels me when I’m developing code. Any of my friends will tell you I’m not a coffee drinker, but I’m always in the mood for a good vanilla chai.

Why are you doing this to yourself?

This is a real question that a friend of mine asked me when I tried to describe my ambitions for this project. For reference, she also has a degree in computer science, but went into project management.

The answer is simple. I can’t learn anything practical by just reading my Game Engine Architecture book and calling it a day. The difficulty and breadth of graphics is daunting, but it’s time to get my hands dirty.

To be clear, this isn’t my first attempt at doing something like this, I’ve started a couple engines that I never finished. (Including one called “Bread”, so maybe I’m just hungry while naming these engines) I’m really fortunate to get to do some awesome, in-depth graphics stuff in my professional work, and I’m learning all the time. The graphics work I’ve done for the past 2 and a half years has really been trial by fire in some ways. We use Vulkan, which I had never used until I started this job. Vulkan is awesome, but has a super steep learning curve. My engines up to this point have used Vulkan, so I’m going to try a different strategy this time around.

The Plan ™

What could go wrong?

My previous engines have fizzled out mostly due to the fact that I spend hours and hours playing with vulkan and getting nothing else done. This time, I’ve compiled a list of things that I want, and I’m using OpenGL to start it. Yep, that’s right. We’re going back to the basics.

This means that I want an abstract layer so I can swap out graphics backends. I will definitely return to my real love (Vulkan) when I have some infrastructure built out.

What do we want? Cool visual effects! When do we want them? Eventually!

I know, I know, start simple, BUT I’m dreaming big here

A few years ago, I became fascinated with doing visual effects like the TARDIS in Doctor Who. I want to make things look bigger on the inside. You can accomplish this in a normal coordinate space by kind of faking it, with render targets and so on. But wouldn’t it be cool to actually have a different kind of geometry? Like hyperbolic or spherical? Check out this blog post I found on hyperbolic geometry or this engine for Unity. This is something I want, but at this time I’m unsure of how to go about it. I’ll be putting in some hours on my whiteboard in the months to come.

Let’s get to it

The chai is brewing as I speak. I’ll be sharing progress, setbacks, and whatever I learn along the way. If you’re interested in graphics, game engines, or just want to watch someone attempt non-Euclidean rendering from scratch, stick around.