No-one: Hey Cas, what have you been up to for the last two months?
Me: Well, I’m glad you asked. I’ve just finished the most colossal code refactor that I think I’ve ever done, on any project, ever, in the last 40 years. Two months! That’s a lot of refactoring, during which most of the time the code wouldn’t even compile let alone run, and for quite a long time, actually broke the compiler too for good measure. The end result is something that it’s taken over a decade to work out how to do properly and gives us a unique technical platform in the simulation games genre. Along the way I have some developer hot-takes which I will sprinkle liberally as click-bait to enrage the zeitgeist-lickspittles of software development that so frequently blight my timeline with their awful career-ass-covering takes on software development.
Chaz has spent the time completely overhauling the entire game’s UI into something that looks more like a game and less like a spreadsheet (his words 😜), and it’s looking really quite pretty now.

You, suddenly more interested: Tell me more of these things! Show us this clickbait, and some screenshots! Enrage the algorithm!
Me: So as some of you know, in my spare time and the non-existent hours between sunset and dawn when the collective unconscious falls collectively unconscious, I make games. Chaz currently has the luxury of doing it full-time, albeit scraping by on a minimum wage. Super Attack Programmer Dan is in the same boat as me, except he gets to work on at fun things at EVE Online.
The rest of the time of course I present the facade of zeitgeist-lickspittle career-ass-covering principal software engineer, reasonably successfully, dutifully nodding when people talk about how great git is, branching strategy, unit testing, code reviews, human interface design committee meetings, and all that other stuff that I hear repeated like mantra as my peers soullessly plop out mediocrity into the toilet bowl of B2B software releases. Go, little fella! May the flush of success relieve your constipated minds as you head home for the night, ready to scrub your minds clean ready for another meeting tomorrow.
Musings on Software Development
At Puppygames, being as we are in charge of making awesome things, we have free rein to do the things you all secretly wish you could do. Say the things that you’re not allowed to say at work. Refactor that shitty code just to make it look nicer, because we want to, and it makes our souls bathe in the warm light of satisfaction.
We work in trunk. We use Subversion, because it’s the right tool for this job. We don’t do code reviews or pull requests. We don’t even do unit tests, except for our own needs. When something needs to be refactored, we refactor it without compromise, because we know that refactoring it now is going to save us a massive headache in a year’s time, because we don’t have to convince a suit or an accountant about it. We bravely try out ideas that take months and then ruthlessly throw the entire lot out if it doesn’t make the game more fun. We use free Trello for collaboration and bug tracking, not JIRA. We each maintain our own TODO lists elsewhere – Chaz has an enormous scrapbook in Affinity designer with bits of art and notes, I’ve got a text file, and we don’t even know how Dan does what he does.

We have a tiny team of three people, and we don’t follow pretty much any of the accepted best practice currently accepted as sage wisdom in software development over the last 25 years or so.
And yet somehow we’re capable of outputting more functional systems and complex software than an entire team of 30 covering the entire gamut of software development. And considering the size of the project – currently somewhat larger than the commercial B2B system I work on in my day job – remarkably bug-free. It’s almost like all of this clever newfangled stuff everyone does hasn’t actually made a lot of difference to anything in the end.
Above all, we strive to make absolutely fucking excellent games. Which is one reason they don’t come out so often, and why this one’s taken over 10 years to make so far. Sorry! But to make omelettes, you first have to evolve dinosaurs from a primal soup before you can even get the eggs to break, and it’s quite a time consuming process.

Musings on the Games Industry
One thing we realised about the way the games industry was going when we started Battledroid was that things were going to get very, very tough out there for niche indies to survive, and it was strangely not going to be external forces so much as the tragedy of the commons.
As the tooling to make games gets progressively better and easier and more accessible, so will the quantity of games that will be made. Where before the bar to entry was that it’s just damned hard to write a sprite engine in C++ from scratch, now any idiot can make something that looks actually quite good in Unity. Or Godot. Or even Unreal. Or Love2D, or whatever. Now there’s even “AI” (quotes intentional) which covers the non-technical aspect of games development too, to an extent.
Yes, it’s shit, but you can get away with it. People already are getting away with it. A talentless shmuck with no programming or even art skills can make games now. Valve wins anyway, they’ll take 30% of whatever dross is created as well as 30% of the hits – they don’t care, but that’s a discussion for another day.
What this led us to was, how can we survive an industry where all of the relatively low-hanging fruit is suddenly being hoovered up with mechanical efficiency by the new tooling? If games are cherries, then Unity is like turning up to the orchard with a mechanical cherry picker that can reach 90% of the cherries. No more cherries for people still on the ground.
To survive in this world, there are several potential strategies, and to enumerate just four examples:
- Embrace the new reality and try to churn out loads of games using the fancy new tools, and hope something sticks. The more often you try, the more likely you are to win. The mobile games industry has largely gone down this route, being left no choice by the way gatekeepers have set things up.
- Try and compete by throwing vast resources at a game – in all of development, content, and marketing: the so-called III (Triple-I) indies with studio backing (whether they’re independent at this point is moot). That’s largely the paths most previously successful studios have gone down: go big and bet the farm (preferably, someone else’s farm, eh?).
- Just make the games you want to make in whatever way you feel like, but randomly strike it lucky with a great design and get rich, thereafter free to pursue whatever ideas you want without financial ruin staring back at you.
- Make a game which the tools don’t help you make. Something technically demanding, or something with a unique style that isn’t readily available out-of-the-box or easy to generate with AI, or something that’s never been made before (because the vast majority of games being produced are checkbox-originality: like game X, but with Y).
All of these approaches, and many more besides, are successful for some, less successful for others… about 99% of others as it happens. We’ve chosen path #4, which is to make something which just isn’t easy to make. Even trying to make something like it using all the fancy new tools will still take years, because it’s so outrageously complicated.
It’s a multi-tiered client/server system that can scale to thousands of simultaneous players. It’s been developed using entirely free tools. It’s both Windows and Linux native, greatly appealing to its nerd appeal. It’s free-to-play and designed from the ground up to be free-to-play, not just bolted on as an afterthought. We have our own engine, capable of rendering hundreds of thousands of things in a couple of milliseconds, on everything from hopeless Intel GPUs to the latest Nvidia hardware, and most importantly it’s royalty-free and we can fix it immediately if there’s any bugs in it. It’s massively multithreaded, taking advantage of any cores you’ve got. It’s a 100% deterministic, un-cheatable battle simulator, forming the basis for a professionally competitive PvP ecosystem (should we want to), backed by a rock-solid ACID database implemented in Postgres.

So … about the actual game then?
Well, the engine’s refactored, the UI has been overhauled, and the game now delivers one of its central tenets of existence, that being deterministic uncheatable battle outcomes. We’ll release this bit fairly soon, and hot on the heels of that, we’ll be revamping the janky unit pathfinding and targeting which is the bane of many players currently.
There’s still a lot to do on the metagame aspects: the mechanics of F2P and MMO PvP games are ridiculously complex and subtle. Making a game that is simultaneously fun, fair, and compelling, for beginners and experienced incumbents alike, is possibly the most non-trivial aspect of all of it. This bit is going to get the most attention this year, now all of the really tricky technical stuff is more or less working.
We’re asking questions like:
- How do we ensure that brand new players are not thwarted in progress by starting in a world full of established players?
- How do we make the game compelling enough for players to want to become established, if establishment does not seem to give players an advantage over beginners?
- How do we ensure that you can have fun whether you’re just starting or you’ve been playing for a year?
- How do we reward progression in a competitive game, without progression ruining balance?
- How do we make money out of it all, because without money, there won’t be a game to play eventually?
- How do we prevent it from being pay-to-win?
The answers to these questions will reveal themselves over the coming months and I’ll endeavour to post our thoughts on them here (and on Kickstarter, and Patreon).
Even after all this time, it’s still not quite ready, but finally, it’s close to a release into Early Access for the all of the Great Unwashed to try out.
I will post some smaller updates as and when over the next couple of months. Beta players can expect an update soon! If you want a more real-time discussion of what’s going on, head over to the Discord and say hi.
Leave a Reply