
There’s a saying:
“Don’t roll your own game engine.”
So… I’ve rolled my own game engine! This means I don’t intend to actually ship a game, so why did I do it?
I’m the kind of person that gets immense satisfaction from tweaking APIs and architectures
until they look like something beautiful to me. That’s why, despite game engines like Unity
and Godot being massively popular and capable, I’ve always wanted to build my own that
smooths out some of the quirks and design decisions that stick out to me as awkward. Things
like the MonoBehaviour class most scripts inherit from in Unity:
I’m not trying to pick on Unity here, nor did I bother to research why these things are the way that they are. I’m sure that some of these things are language problems, most of this stuff is well-documented and doesn’t actually impact you that often, and almost all of it is probably just the result of certain design decisions aging slowly over time, but the point is, these things irk me a bit. Surely if I made my own game engine, I wouldn’t make any of the same mistakes as teams of people way more experienced and knowledgeable than me, and I could make something beautiful, right?
So I built one, in C. Why C you ask? Because come on, it’s not realistic to think I can actually build a fully functional, usable, competitive game engine by myself. It’s for me, which means that I can do what I want, even if it’s not remotely practical.
It has:
That being said, it’s questionable if you could really build a game in it yet. I haven’t tried. But more importantly (to me), I like it. I like the architecture. I like the design. I like the entity/component APIs. I like how insanely fast it is compared to literally anything else I’ve ever tried. I like that I can just add features to the game engine if I want them. I like tweaking the colors of things. It exists only because I like the shape of it.
¯\(ツ)/¯