Game Design, Programming and running a one-man games business…

Ridiculous Space Battles: how and why?

Its 15 years since Gratuitous Space Battles came out, and when I announced a few days ago that I was making this game, I said I’d been working on it for 18 months. How come? Why not announce sooner? and why am I making it, and why now?

After I made the last expansion pack for Democracy 4, I took quite a bit of time off, because I had the mad idea to build a solar farm. This literally took years longer than it was supposed to, and swallowed up a ton of time, and effort, and caused me an insane amount of stress. Even though the farm has been generating for 6 months, its STILL causing me stress and still not properly finished. To put it mildly, during this time I did not have the energy to actively and publicly be working on a new video game.

Any indie game dev will tell you that it is a super stressful job, and a very very hard way to make money. I can say with experience now that solar farm development is 10x as stressful, so that took its toll and meant there was absolutely no way I would also announce a new game. I simply could not cope with having to deal with people asking me about the game, or asking when it would be done, or telling me it was a bad idea and that I was doing it wrong. I had multiple bouts of screaming and tears over the farm. No way was I going to add more pressure or work on top.

You do not know stress until you have personally financed and managed a project like this. Gamedev is easy.

So as a sort of ‘hobby project’, I decided ‘for fun’ to make a little space shooter game using the assets from Gratuitous Space Battles and its DLC. This was a fun project to work on. I coded it all completely from scratch, with a new engine, because I actually find writing engine code (2D but using 3D APIs) to be genuinely relaxing. I know most people would not agree, but thats me. I got quite into this game, and eventually made it public, and put it up for sale on itch.io and on steam. I’ve since stopped using itch, as they ignore requests to pay developers for months, but you can still grab that game on steam:

Anyway, I enjoyed that enough that I ended up making a proper game rather than a little vertical scroller. The amount of change this early game went through is huge. At one point it was called ‘paint by spaceships’, where you basically had microsoft paint, but with brushes that deployed formations of spaceships. To this day, the game’s project folder is called PBS.

A screenshot of ‘Paint By Spaceships’

That then got changed to a game called ‘convoy’ which was like GSB but entirely about protecting a convoy of freighters from enemy attack. The Visual C++ project for the game is still called CONVOY. That then morphed into a ‘re-imagining’ of GSB, called Ridiculous Space Battles. I had decided to re-code everything entirely from scratch, because I prefer to do that rather than hack and bodge together 15 year old outdated code.

At some point I decided that re-using art assets from GSB was a bit boring, so ended up buying stock 3D art packs and kit-bashing together my own new art for the ships. At this point, solar farm dev was less intense, and I was working 40+ hours a week on the new game. I even spent some actual money on the art packs and some new textures for backgrounds and planets, so suddenly this was less of a hobby and now an actual new commercial game I would release.

I am in a very very fortunate position as an indie game developer, in that I have had a run of hit games, starting ages ago with Kudos, then Democracy, then Gratuitous Space Battles, the Democracy 3 and 4 and Production Line. I also published Big Pharma, and I invested the profits pretty cannily. Thus I made enough money that retirement beckoned. Early retirement no less! what a luxury. I then decided to spend a gratuitous amount of money on a solar farm. I do not know if it will break even yet… but even so, I am in the fortunate position of not *needing* RSB to make a huge income. I do not have to stress myself half to death chasing reviewers and streamers and youtubers. I do not have to manically work 60 hour weeks on it, or beg people for wishlists and bundles and marketing opportunities.

However…

I am now super proud of what I have made. Having a ‘second go’, from scratch, at a game idea from 15 years ago, with no financial pressure is a huge opportunity. Realizing very late that I somehow invented an entire genre (autobattlers) and never really capitalised on that is very motivating. When I look back at GSB, its a very very innovative game, but it was a first-go, and suffered from a load of obvious game design mistakes. Why not right them, and try to make the game GSB should have been? Even if it makes no profit at all, but just leaves behind a game I am proud of, and a small percentage of GSB players bought and enjoyed and brought back good memories, thats definitely a good and worthy thing.

An early design for the main menu

As of today I have not sent a single press release or told any journalists about the game. I am building up to it. The game is actually playable, and looks lovely, and I have a never ending supply of awesome screenshots. I could do a trailer right now, but I am thinking about getting new music for it before them (it currently uses music from GSB, which is…ok, but could be more modern perhaps). I also have no real release date, and a very flexible schedule and design.

I am also really enjoying writing the code for it. I updated from Visual Studio 2013 to 2022, which actually went extremely well. I am sticking with directx9 but pushing it to its limits, and doing it in a way that will be tons more stable than when I attempted it in Gratuitous Space Battles 2, which had technical issues :(. I have way better tools to develop the game now, and 15 years more coding experience. I also am happy to stick with top down 2D graphical style. GSB2 did mock-3D lighting and I don’t think it was worth it. Sticking with simple 2D gives me other options to ramp up the crazy spectacle, and its working well.

I’m already pleased with how the game looks, and it will only get more ridiculous

So yup, expect a lot of technical coding blog posts (and design ones) over the next few months.! In the meantime you can add the game to your steam wishlist now :D

Announcing Ridiculous Space Battles

So yup… I’m announcing a new game. I don’t say that often these days! For the last eighteenish months I’ve been working on a project as a hobby that turned into a serious hobby that then turned into a full time thing, and has now become an actual game that will be released on steam this year (into Early Access anyway), called Ridiculous Space Battles.

If that name sounds familiar, its because 15 years ago I was the guy who made ‘Gratuitous Space Battles‘. At the time, there was no other game like it, and now its become a whole genre called ‘autobattlers’. Yup, that was me. I don’t bang on about it as much as I should frankly. But anyway, I made GSB 15 years ago, and a bunch of expansions. A few years later I made GSB2, which was a bit of a flop by comparison. It had bugs for some players, and I got annoyed about it, and really decided to just switch genres and make more political strategy games, publish other people’s games, and also make Production Line: Car factory simulation.

Then at some point I started building a Solar Farm.

But WE ARE SO BACK. I have had enormous fun making this game, and I have so much to say about it. I want to write blog posts, post on social media, etc, and I have been waiting until I was ready to announce it with some nice screenshots like this:

And this

The way I am developing the game is a bit mad, and worthy of a proper long blog post, but for now, I will just leave it that there is a basic website up here, and you can see the game’s steam page (and wishlist it!) on steam here. Also if you are on social media,. any retweets or posts or likes are welcome on this post on bluesky and this one on X. Thanks!

More updates coming really soon :D.

AI is accelerating on a daily or even hourly basis

The level of progress in AI in the last few months is absolutely mind blowing. If you are not actively following the field, then you might think that basically we had ChatGPT, and everyone got excited, but basically its all hype and nothing has actually changed. OMG This would be so wrong. Things are accelerating like crazy. You have probably heard about DeepSeek, and also heard people claiming its no big deal. They are probably wrong. We are in the middle of an absolutely seismic shift.

First, an update. There is a new version of grok (the AI chatbot built into X) which is staggeringly good at code. I’ve been talking to grok on a daily basis about the code for my next game. Its helped me optimize some functions, and taught me some new tricks. It even takes optimizations it suggests, and uses my own code (which I give it snippets of) to teach me how I should apply the recommendations it has. I have genuinely learned more new stuff about C++ in the last month than the previous 20 years, and I’ve been coding since 1981.

One big ‘wtf’ moment came yesterday. I was thrilled that having asked grok about some slow code, it managed to help me redesign the high level algorithm for my particle system to make it run 36% faster. But when I gave it a function to speed up, this bit blew me away. I gave it zero context, but just pasted a function and said ‘optimize this’. It did a phenomenal job, but without even mention it, it altered one line of my code:

const float bottom = sp.Y + halfw; // Fixed: bottom should be +halfw, not -halfw

It silently found a bug, and fixed it (perfectly) without even needing any context. It looked at the surrounding code, and the variable names, and deduced correctly that I had copy/pasted a sign wrong. WTF?

Grok is superb at C++, and I ask it regularly for help in speeding up existing code, or ask it if a proposed algorithmic change will make sense, work, or be a faster or improved approach. Its absolutely superb. I cannot now imagine coding without grok, or a similar code-focused LLM to assist me. I code faster, write better code, and am more productive. Programmers who refuse to use AI are going to be in work another year at most. Maybe less than six months. And junior coders? very unlikely to get promoted or another job. Your employer is probably looking to get rid of you. The senior coder can now do 2x the work. Why pay for a junior too?

If you want a great example of how to use AI, ask it to code a website for you. Its excellent. I redid the layout and formatting code for my energy company website in seconds with grok. I simply said ‘make this look better’. The idea of ever bothering to hire someone to write HTML/CSS now seems laughable. My next game will need php, I anticipate writing it will be 5x faster using grok. Every company that develops websites is probably looking to shed 50-75% of their staff. If all you do all day is look at website mockups and write CSS/HTML you are now probably unemployable.

Do you want more examples?

Ask an AI chatbot to put together a travel schedule for a holiday for you, tailored to your likes and dislikes and budget etc. Its already better than any high end travel-agency. Goodbye everyone in charge of bespoke holiday planning. Are you thinking of buying a car or a TV? ask grok to build you a table with a cross-product analysis of the top 10 options with a focus on the attributes that matter to you. It takes seconds, and its amazing. If grok went from $5 a month to $50 a month, I’d pay it without question, right now.

Have you tried sesame? Do you think AI voices seem un-natural? not any more: https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice

Imagine in 3-6 months we see voice generation even better than that powered with even better and more knowledgeable chatbots. We now have a super-informed, constantly available technical expert in many fields available through a trivial voice interface that can replace researchers in many fields, analysts, travel agents, call center staff, web developers and programmers. The number of jobs about to disappear are definitely in the millions, probably the tens of millions, even assuming zero progress after this year. And we are not even truly getting started yet.

Country Estimated Call Center Employees (2025)
United States 3,100,000
China 1,800,000
Japan 600,000
Germany 450,000
India 2,200,000

Obviously I didn’t google that list, I got grok to research it, format it, and tell me how to add it to wordpress. But yup, lets assume 90% of those jobs are toast within a year, so at least 8 million jobs gone, to be replaced by datacenters. You might think this will be politically difficult, but no. Its simply impossible for your economy to compete without this tech. Not only can AI voice assistants replace your call center staff for a tiny proportion of the cost, they will never get angry, emotional, stressed, or confused. They can even respond in any language or accent, or with any ’emotion’ you might want. They will never forget to upsell and they can stay talking to customers longer, because the cost per call will be trivial.

Pretty much any junior knowledge worker job is about to go. There are rooms full of well paid middle class employees doing research into businesses to provide analysis for stock market professionals. They all just lost their job. Every one of them. Grok can already do this better, and manus can build you a customised dashboard to analyze any financial instrument by any criteria imaginable: https://manus.im/share/5z6bnP67LtUjsti8YaIlJq?replay=1

If AI soon cracks self-driving cars (and we may be close) then lets fire every taxi and truck driver on the planet too. Thats going to be a phenomenal shock. Sort out some humanoid robots to unpack a truck and hand over parcels and the postal; servcies and delivery drivers are all gone too. Iminent? nope, but within 5 years? I think so.

Politicians are focused so much on geopolitical issues surrounding the middle east, russia/ukraine and numerous other issues that almost none of them are even giving the topic of AI powered economic growth and the resulting combination of a boom AND mass unemployment and thought. This is absolutely insane.

We are currently all standing at a crossroads. As individuals, societies and economies, we are about to race in one direction or another. Those who adopt AI, harness it, and benefit from its financial implications are going to be staggeringly wealthy. Those who stand there like a rabbit in headlights as everything changes will be unemployed AND unemployable. Whole economies are about to crumble, and others are about to race ahead. Its going to be a future where the top 5% of knowledge workers and tech companies will race ahead, and the bottom 9% gets obliterated. Countries that invest in AI will thrive. Others will become client-states, or stagger into barely-managed decline.

Nobody knows for sure, but I suspect China is about to do VERY WELL. Its very focused on AI, and tech, and chips, and higher education. So is South Korea. Japan could go either way. Taiwan is poised to do very well. The big questions are Europe and the USA. Right now… my best guess is the US suffers severe shocks. Its about to get humiliated in tech by China, and will speedrun the layoffs of middle-class knowledge workers while the government does nothing to cushion the shock. Europe? it could go either way, although I fear we may miss out too.

But as individuals? what do we do? I would suggest you buy shares in Nvidia and TSMC. At the very least try and own a chunk of the future, even if its a small chunk. Good Luck.

So is 2025 another game dev year for me?

I am currently in a sort of limbo, which will explain why my blog posts have been less frequent. When I was working around the clock all day every day on Production Line and spending the weekend doing blog videos, there was a ton to talk about. The same was true of Democracy 4. But the last few years have been a bit of a strange period for me because my life has changed quite a bit, and I haven’t really blogged about it, so here we are.

Firstly, I have been making games and selling them online since 1997. Its sounds ridiculous to me that I might be about to retire, and yet the truth is that I sort of already have. Kind of. Not really. I had a number of other jobs prior to games, including mad ones such as window-cleaning, boat-building, guitar-teaching and IT support. When I finally made it into game full time I worked at two triple A studios, and THEN I finally went full time indie and made the games most people know me for.

So I’ve been around a while. For the record, I’m 55. Young to retire, but not young for gamedev. Not many people in videos about game development have grey hair (and not much of that any more…).

Somewhere along the line, as I was building up my portfolio of games, two things happened. Firstly, I had enough hit games that I had kind of made retirement money, and secondly I invested that money, and spent a fair bit of time managing the investments. To give some context, I used to work in IT for city trading floors, and did a degree in economics, so markets come quite easily to me, and I am fascinated by the stock market.

To cut a long story short, I did quite nicely from that, and managed to save up the money to build a solar farm. There are many posts by me about it, and I now own two companies: A games one and an energy one. On top of this, the investments fluctuate so much that it means that the ‘average’ year now, I am about as dependent on the stock market for income as I am games. Weirdly, games has gone from a teenage hobby to a full-time job back to a hobby again. This is strange.

Plus I have finally come to the conclusion that what I really need is a stress-free and happy life. There are studies that show that any income over £70k a year no longer increases your happiness. I can state that this is absolute bollocks, and the number is higher, but its not THAT much higher. My current goal is definitely happiness above all else. So given that early retirement is an option, what would you do?

Well it turns out that this question is MUCH harder for me than most people. I just read a book on hypomania, and although I’m not hypomanic… I am a bit. probably more than I care to admit. The idea of me sitting in the garden with a cup of coffee and a book each afternoon seems ludicrous to me. I just can’t do it, or at least I can’t do it every day.

So I ended up making a little game to keep myself busy. I even released it on steam for a laugh. Its a vertical shooter, the exact kind of game that never sells on steam, so nobody makes any more. It took a few months. Here is the trailer:

I think its kind of fun, and I enjoyed making it. Obviously I had a lot to do to build a solar farm, but it wasn’t even 10 hours a week, let alone 40. Now the farm is up and running its likely under 2 hours a week. So what to do? At one point I actually completely re-designed my entire website from scratch, which took a few weeks, but no more (and I am SO glad I did it). Also during this time I started making a new game…

…and I seem to have taken it a bit too seriously. I’ve written code that takes up 1,607,029 bytes of text. I guess the average line is maybe 40 bytes? So 40,000 lines of new code? I now have a complete strategy game that is playable, although not balanced, and likely a bit buggy, and has some missing content. I reused some assets from an old game for some bits, and I will change all those, and also I’ll need new music, although I might even buy stock music licenses for that. You may have noticed that I have not announced this game, let alone shown a screenshot or trailer, although I have a ton of screenshots and it sometimes looks pretty awesome in trailers. I’ve been working on it for about a year now, and do work on it most days. Its not a hobby any more.

I would LOVE to just announce it and paste some screenshots here, but I am teaching myself to be careful, and patient, and only do that when it is ludicrous not to. There is a lot of attention, and stress, and instant feedback you get when you announce a game, and TBH I am not really up to handling any of that right now. I guess most people would say they are exhausted or overwhelmed, and I probably am, but simply do not recognize that.

So anyway, this is the very start of 2025, and in theory this should be an easy year for me. The solar farm is almost 100% done and should just tick along and make me content and happy. I do not have any pressure to release a game this year, and I can chill out. Obviously I won’t chill out, so the nearest thing for me is to just work on the thing I am secretly very proud of, but not expose it to the world for judgement until I am 100% calm and content.

A lot of words to type to say ‘I’m working on a thing’ but I have spare time to type them :D.

An experienced coder’s approach to fixing business mistakes

I was the victim of an email today that was basically an invoice that was wrong. A company that has sent me a wrong invoice in the past has sent me it again another 3 times now, with increasing levels of angry demands and warnings about credit ratings. This raised my heart rate and anger level to extremely high distressing levels, but this is not a rant about how some companies are just awful, that would be too simple. This is more of an investigation into why stuff like that happens, and how software engineering can help you learn how to not fuck up like that.

I have been coding for 44 years now, since age 11. In all that time I’ve only coded in BASIC, C, C++ and some PHP, but 90% of it has been C++, so that’s the one I’m really good at. I don’t even use all of C++, so lets just say when it comes to the bits I DO use, I’m very experienced. This is why I’m using the term software engineering, and not coding or hacking, which implies a sort of amateurish copy-pasting-from-the-internet style of development. I’ve both worked on large game projects, and coded relatively large projects entirely from scratch, including patching, re-factoring and a lot of debugging. I coded my own neural networks from scratch before they were really a popular thing. Anyway…

Take the simple example of my experience today. An invoice is wrong, and sent to a customer anyway. This has happened three times now, despite the customer replying in detail, with sources and annotations and other people copied in, AND including replies from other people at the offending company who openly admit its wrong and will be fixed. Clearly this is a smorgasbord of incompetence, and irritating. But why do companies do this? what actually goes wrong? I think I know the answer: Once a problem like this is finally flagged up (which often involves threats from someone like me to visit the CEOs home address at 3AM to shout at them), the company ‘fixes’ the mistake, maybe apologizes, and everyone gets on with their life…

This is the mistake.

Companies want to ‘fix’ the mistake in the quickest, easiest and cheapest way possible. If an invoice was accidentally doubled, then they ‘go into the system’ (they just mean database) and they halve it. Problem solved, customer happy. Now I don’t give a damn about the sorry state of this company’s awful internal processes, but I am aware of the fact that companies like this try to fix things in this way, rather than the true software engineering way. So how SHOULD it be done?

Before I was a full time computer programmer I worked in IT. I had a bunch of jobs, gradually going up in seniority. I saw everything from ‘patch it and who cares’ mentality (consumer PC sales) to ‘The absolute core problem must be fixed, verified, documented and reported on with regards to how it could have happened’ (Stock trading floor software). I can imagine that most managers think the first approach is faster, cheaper, better, and the second is only needed for financial systems or healthcare or weapons systems, but this is just flat out wrong.

When a mistake happens, fixing it forever, at a fundamental level, will save way, way more time in the lifetime of the company than patching over a bug.

Spending a lot of time in IT support taught me that there are many more stages to actually finding the cause of a problem than you might think. Here is a breakdown of how I ended up thinking about this stuff:

Stage 1: Work out what has actually happened. This is where almost everyone gets it wrong. For example, in my case I got an email for a £1k bill. This was not correct. Thats the error. Thats ALL WE KNOW RIGHT NOW. You might want to leap immediately to ‘the customer was charged too much’ or ‘the customers invoice was doubled’ but we do not know. Right now we only know the contents of the email are wrong. Is that a problem with the email generation code? Does the email match the amount in the credit control database? Until you check, you are just guessing. You might spend hours trying to fix a database calculation error you cannot find until finally realizing the email writing code is borked…

Stage 2: Draw a box around the problem. This was so helpful in IT. Even when you know what you know, you need to be able to define the scope of the problem. Again, right now all we know is the customer ‘cliff’ got a wrong invoice. Is that the problem? Or is it that every invoice we send out is wrong? or was it only invoices on a certain date? or for a certain product? Until we check a bunch of other emails we do not even know the scope of the problem. If its systemic, then fixing it for cliff is pointless.

Stage 3: Where did things go wrong. You need to find the last moment when everything worked. Was the correct amount applied to the product in the database? was the correct quantity selected when entering the customer’s order? was the amount correct right up until the invoice was triggered? Unless you know WHERE something went wrong, you cannot work out WHAT or WHY.

Stage 4: Developer a theory that fits all available data. You find a line of code that seems to explain the incorrect data. This needs to not only explain why it screwed things up for cliff, but also explain why the invoice for dave was actually ok.

Stage 5: Test a fix: You can now fix the problem. Hurrah. Change the code or the process and run it again. Is everything ok? If so you may be preparing a victory lap but this is laughably premature.

Stage 6: Reset back to the failed state: Now undo your fix and run it again. Seems redundant doesn’t it? Experience has taught me this is vital. If you REALLY have the fix, then undoing your fix should restore the problem. Maybe 1 in a 100 times it will not. The ‘random’ problem just fixed itself for some indeterminate period. Your fix was a red herring. A REAL fix is like a switch. Turn it on and its fixed, turn it off and its broken. Verify this.

Stage 7: Post Mortem: This is where you work out HOW this could ever have happened. This is actually by far the most important stage of the whole process. If you just fix some bad code, then you have just fixed one instance in one program. The coder who made that mistake will make it again, and again and again. The REAL fix is to make it IMPOSSIBLE to ever have that error again. This takes time, and analysis. The solution may be better training, or it may mean changing an API to make it impossible to process bad data. It might mean firing someone incompetent. It might mean adding a QA layer. Whatever the mistake was, if you do not go through this stage, you failed at the task of fixing the problem.

Coders and organizations that work like this have fewer bugs, fewer mistakes. They need smaller QA teams, and less time devoted to fixing mistakes and implementing patches. Their complaints department is tiny, and yet still provides great communication, because there are hardly any complaints. In short, companies that run like this are awesome, popular, profitable, and great places to work. Why is everywhere not like this? Because it requires some things:

  1. A culture of giving people fixing problems free reign to follow the problem everywhere. If only the department that sends the emails is allowed to get involved in complaints about email, database errors or coding errors will never get fixed because they CAN never be fixed. The phrase ‘not my department’ needs to be banned.
  2. A culture of accepting that someone is STILL working on a proper fix, even after the complaint has been handled and the customer is happy. When there is a bug, there are TWO problems to fix: the customers bad experience AND the company process failure that allowed this. Managers who pull people away from bug-fix post-mortems to fix the next thing right now are a curse.

Of course your mileage may vary. Be aware I am a hypomanic workaholic who works for himself so my ‘advice’ may not be applicable to everybody, but I hope this was interesting and thought provoking anyway. Too many coders are just copy-pasting from stack overflow or asking chatgpt to quickly patch their bad code. Working out how to fix things properly is a worthwhile pursuit.