c++
I’ve been working on a game system for a few years now. At last check, it manages thousands of NPCs with triggers, scripts, reactions, and even proximity detection. Each character can respond differently based on player actions, game state, and environmental conditions.
I’ve been working on a game system for a few years now. At last check, it has over 27,000 words of dialogue. That’s roughly a novella’s worth of content that I’ve written in my spare time between building game systems, fixing bugs, and trying to remember what sleep feels like. This is a community project—everyone’s a volunteer, including me.
In Part A of this series, we explored code-level optimizations using modern C++ features—from move semantics to compile-time computation. These techniques provide excellent performance improvements while making your code more expressive and maintainable.
In part one of this series, we established stability as the foundation of any modernization effort. If your system isn’t stable, performance optimizations are essentially meaningless—-after all, a fast crash is still a crash.
We’ve all been there—inheriting a decade-old codebase, with tens of thousands of lines written by developers who have long since moved on. The code works (mostly), but making changes feels like defusing a bomb while blindfolded.
I’ve been working on a new release for a game server I operate on the side and, with any new release, comes
opportunities to weep at refactor your older code.
In C#, I’ve gotten spoiled over the years with LINQ and being able to create composite keys out of tuples to in-memory, static lookup tables or objects.