Welcome to the first developer blog for Spacero (pronounced Space-row)! I built the core engine entirely from the ground up, partly as a hardcore optimization challenge, but mostly because I just really love building prototype games.
Under the hood, the engine is powered by C++24 and built with a strictly agnostic design. The core engine is blissfully ignorant of the operating system or graphics pipeline. Instead of passing around system-specific data structures like textures or render pipelines, it uses simple tokens to identify resources.
Let's talk architecture. I originally started with classic object-oriented inheritance, which seemed like a great idea until I dug into performance profiling. Spoiler alert: deeply nested inheritance can turn into bloated spaghetti that tanks your framerate the second you add a few too many objects.
To fix this, I pivoted hard to a custom Entity Component System (ECS). ECS is all about memory alignment and data-oriented design. Most of the time, a CPU is just sitting there twiddling its thumbs waiting for system memory to fetch data. By aligning data into perfect, contiguous stacks, the CPU can chew through it sequentially without those expensive round trips, drastically speeding up frame performance. It was a beast to wrap my head around initially, but now I can’t imagine building a game any other way. Need an entity to have a new behavior? Just snap on a new component like a Lego brick. I’ll be doing a deeper dive into this ECS transition in a future post.
My biggest nemesis lately, however, has been the UI. I had a working model, but it was so heavy and miserable to set up that I frequently considered gouging my own eyes out with a rusty spoon.
To make matters worse, the company that made my favorite 3D modeling software, sold to a European company, and the new owners refused to honor my version upgrades. So, I did what any stubborn engineer would do: I started building my own 3D digital content creation application (hello, DarkWave!).
Building DarkWave taught me so much about graphics and DirectX 12 that I realized Spacero desperately needs a DX12 upgrade as well. My original plan was a strictly 2D world, which still holds true for the gameplay, but I’m now going to add support for 3D models while keeping the fixed 2D player camera perspective. This is going to unlock vastly better lighting effects and render times, and both DarkWave and Spacero will become my absolute staples for creating game artwork.
That’s it for now. As I continue to rewrite and upgrade the engine, I’ll be dropping more updates, technical deep dives, and hard-learned lessons right here!
