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

Modern Technology: Please stop trying to be helpful

A minute ago, I tried reading an article on a super-popular news site. The page it opened had no scrollbar, and as with all modern ‘writing’, the top 800 pixels is a large image, rather than any text. Luckily, my laptop has a touch screen but….no joy. I still can’t scroll. I just assume that this is some stupid clash with ghostery, so turn it off. The site still cannot scroll. I’m sure the content must exist, I just am not technically able to access it.

I’m not an idiot, I used to be an MCSE qualified systems engineer. And yet in 2022, I cannot scroll a web page.

The problem, as I’m sure you have guessed, is some sort of stupid bug in what passes for web development code these days, where the scroll bar is handled by the page, not the browser, and it has decided, given various parameters, that it should hide the scrollbar from me, when in fact it is totally and utterly fucking wrong.

I am unsure as to precisely what this is trying to achieve. Back in the 1990s, web browsers just added vertical or horizontal scroll bars when they were needed, and we all got on with our lives. Apparently, in 2022, there is mass hysteria at the thought that I MIGHT see a scrollbar when I do not really immediately need it, and this would be a mortal threat to me. The sight of a scrollbar at any point in my life other than one nanosecond before I intend to use it, is apparently a fate worse than death.

GMail, before I gave up on its frankly appalling spam filter, used to pull the same trick on me. I have a lot of email folders, and this requires a scrollbar, which apparently would give me cancer if I saw it before I went ‘hunt the scrollbar’ with my mouse in its general direction.

I get it. Some graphic designer, who probably got into a lot of debt to get that degree, thinks that a scroll bar breaks the ‘clean simple’ look of their art / web page, and that my life would be simpler if I could never see it. Apparently it compromises the artistic vision of the designer if the web page includes any actual functionality.

Sadly, its not just functionality, but content that is actually offensive to these people. The layout of a web page is apparently an exhibit at the Guggenheim museum, not actual information that anybody would wish to consume. All news articles must contain a massive stock photo of some vaguely related phenomena with a proud GETTY logo in the corner, lest we confuse it with anything actually relevant. After scrolling past this waste of time, we are lucky if 50% of the available space contains any text, and thats even after ghostery has blocked all the ads, and after we ignore the ‘sponsored’ content.

Once you scroll past (tech permitting) the stock photos, the ads, and the sponsored concept, you are left with an amazing display of unfettered white-space. Acres and acres of plain white background. This is apparently clean. This is apparently simple. This is actually ridiculous. Apple removing the headphone jack was just the white-space/scrollbar trend in real life. Remove everything. Pad everything. Everything you buy must be a multi-layered unboxing ‘experience’ designed for Instagram, not common sense.

Just like the curse-of-white-space and the banishment of scrollbars, I find almost all modern tech trends designed to help me, actually hinder me. The chief example is of course the dreaded social media ‘algorithm’. I am yet to find a single tech site or service where I prefer their algorithm over a simple search/browse/directory structure. The worst possible offender has to be youtube.

Youtube’s algorithm is like a hyperactive puppy on amphetamines. You dared watch a video of someone playing a van halen song? Well OMG DO WE HAVE THE VIDEOS FOR YOU. Expect 50% of your suggested videos to be variations on that theme. If you dare watch another one, the puppy will get even more excited. WATCH MORE OF THE THING!!! it shrieks at the top of its voice into your eardrums. Meanwhile, a second puppy constantly pimps already-stupidly-popular but absolutely unsuitable videos that you have never shown any interest in, while a third puppy keeps suggesting you re-watch a video you literally watched an hour ago.

Streaming services are no better. Netflix is so in thrall with its algorithm that it actively lies. ‘Popular today’ means fuck-all. It means ‘stuff the algorithm thinks you want…which is popular today’. At one point I had to create a completely new Netflix profile called ‘not korean’ to escape its dumb-as-fuck constant pimping of NOTHING but Korean dramas to me. Amazon prime is even worse, actively promoting the latest football matches to me whenever there is some tedious football event. I have been an Amazon customer since the month the site launched. I have never, ever, in all these years, ever watched/streamed/bought/rented anything even tangentially related to any sport, ever. I assume there is a ‘sport’ section, which I could presumably find, if I suddenly change after 50 years.

Stop trying to help me. You are rubbish at it. If I go into a book store, back in the real world, (the one that is not infuriating), I see a ton of shelves, nicely labeled, showing me all the content on offer. Amazingly, my primitive brain enables me to browse, to decide what to show an interest in, what to look at, where to go. This works. Its worked for hundreds of years now. Its fine. But… imagine a bookshop where there were no shelves, no departments, no books, just a fucking annoying sales assistant holding up a ton of books that were the same as the last book you bought, yelling BUY THESE! THESE ARE WHAT YOU WANT!

I yearn for simpler times, not because I’m a technophobe, I’m a fucking computer programmer, but because I despise seeing so much effort go into efforts to actively make my life worse in so many tiny ways. If the text doesn’t fit in the box, show a fucking scrollbar. Not only when your machine-learning bullshit thinks I need it, but ALWAYS. If I have something that is laughably called a ‘timeline’ in your social media app, then ONLY EVER show it by time.

In a line.

Its not much to ask.

What income can you get from your old indie PC games?

There are a whole lot of different strategies for running a pc games business. I know people trying a bunch of different strategies and here are a few:

  • Publisher-funding model. Get publishing deals, and charge enough for the development milestones that you make a profit regardless of whether the final game makes a profit or not.
  • Patron model. Using patreon, or kickstarter or other methods, build up a loyal fanbase that pays you money to make games, regardless of whether they play them, or buy them in any quantity.
  • Straight sales model. Self-fund games, release them to the world as self published titles and hope the royalties exceed the development costs on a continual basis.
  • The big hit model. Go all-in, on a big title you bet your entire financial resources on, including remortgaging house/car etc. Assume that scale brings its own bonuses, and that the huge payoff outweighs the risk.
  • The continual release model. Release multiple games each year, maybe one a month, hoping that over time, the long tail builds up a relatively stable income.
  • The searching-for-a-hit model. Similar to continual release, but in this case the aim is to hope to strike it big with a sudden hit. Always be poised to drop everything and ramp up any game that gains initial traction.

Unless you didn’t already know, my method is the straight sale model. I’m pretty conventional in that I think the model where you just make the best games you feel comfortable with, from a risk POV, and aim to have them sell enough to result in a profit… is the most ‘normal’ and sensible way to do things. This plays to my strengths, because I’m not scared of risk, but not nuts, and also not a people-person as you need to be with patreons etc, and as a self-code-engine guy, I’m not churning out quick asset flips hoping for a hit.

However…

Because of the sheer bloody-minded determination to stick around, it turns out I have been making commercial aimed games since 1997, and therefore I have ended up with a big bunch of older titles that still run on most PCs, and can still generate revenue. have I perhaps become the ‘long-tail-indie’ just out of sheer hanging around? Could it be that actually positech games is self-sustaining on the basis of really old games, that although they do not sell much each, combined they add up to a tidy sum?

I’ll be honest, I have no idea how much those older games make without digging into the data, but I thought either way it might be interesting, so here goes.

Kudos 2 (2008)

This was the first game I made that made proper ‘omgz’ money. I got a cheqck one month for $20,000 and it was on the basis of that game, selling on about 15 different casual games portals. This was amazing. It was however, a long time ago now… 2008 apparently. This was certainly not my first game, mobygames catalogs a bunch of earlier ones, but it was the first one to make enough money that its worth even looking at the numbers.

Kudos 2 is unusual in that its not on steam. I also actually made it free on itch last year, but people tend to follow old buy links, and I still sell copies through BMT micro. Lets look at the last 365 days income from Kudos 2 for BMTMicro:

269 copies for a total of $1,463.69

Not bad, but this is pretty much the only income for the game. I accept donations on itch for it, and earned another $49

Gratuitous Space Battles (2009)

I always think of this as the game that was released on steam the day I moved house. That was a stressful day. Anyway… its old now (2009), and its on steam, and sold through BMT Micro, and also sold through apple on various devices. Lets check the last 365 days data:

Steam net income: ~$8,700 Apple sales: $0 BMT sales: ~$120

I actually forgot that apple sales were zero now because apple decided anybody who wanted to play 32bit games on devices they bought and paid for could go fuck themselves and revoked that ability, so there you go. Just one of many reasons I despise the company. But anyway… its about nine thousand dollars in the last year. Which for a game released 13 years ago is… pretty amazing?

Gratuitous Tank Battles (2011)

This is a game I often consider a flop, but its not really because it made a decent return at the time. However, its a game I have kind of forgotten about, after I made a single expansion pack. Its now 11 years old, so how is it doing?

Steam net income ~$550 BMT sales: ~$14

Whoah what the hell? Are those number correct? Yes they are! pretty bad. But why? I think its because the total peak sales of Gratuitous Tank Battles never managed to hit a real escape velocity. When it comes to long-tails for games, I get the impression that there are basically two scenarios:

The ‘Meh’ game.

This sort of game sells some copies, and maybe makes a profit, but it never really ‘takes off’. You don’t see dozens of youtubers covering it, there are not more reviews on websites than you can count. The community for the game never really gets going. Its not a watercooler discussion topic. People see its released…some buy it. And then its over. Gone. Done. The end.

The ‘Hit’ Game.

This doesn’t have to be Minecraft. It can just be a game that hit a certain threshold. I don’t know what that threshold is, but my best guess is $1-1.5million gross sales on steam. Once you hit that sort of level, you have a ‘community’. There are people posting online about the game every day. People who ask questions get community answers. People make mods, and the game thus expands. There is justification for DLC, which leads to more news, more coverage and more players, and you get a flywheel effect.

GSB and Kudos 2 hit the ‘hit game’ level. Kudos 2 is now so old its become irrelevant, but amazingly GSB still sells a non trivial number of units each year, and makes comfortably more than beer or coffee money.

Conclusion?

I think a lot of developers get frustrated that they are constantly in a grind, always having to desperately work on a new game to hopefully release it in time to survive the drop in royalties from the last one. Residual income from old games is almost zero, so you are constantly working away like a developer on a production line, never getting to relax.

I suspect many of these developers are at 90% between ‘meh’ and hit, but the problem is, being 90% of the way is not enough. Its pushing really hard on that flywheel, and feeling absolutely despondent, because you simply cannot see that point in the future where the momentum takes over. Its very, very easy to think things will never change, and that extra effort on a ‘failed’ game is simply not worth it. I totally understand why people do not push things that extra mile, when it feels like you have been pushing for the last 99 miles and got nowhere.

FWIW I think this applies to almost all endeavors, but especially creative ones that require popularity. I used to be in struggling heavy rock bands, and the constant putting up of posters and handing out of flyers for gigs, in the seemingly futile, pointless effort to get a few people to show up is soul-crushing and demotivating.

But in a sense, that explains why so many fail. Only dumb optimism or sheer bloodyminded obsession with success can possibly explain why some people still go out every single night and stick up those posters or give out those flyers, or keep tweeting and blogging about their video game. It always looks hopeless, totally and utterly futile, and impossible odds, and never gets you anywhere…until it does.

The impossible task of country simulation in a video game

As you may know, I make the ‘Democracy’ series of video games. They are pretty serious, pretty complex, fairly in-depth simulation games where you run a real world country. At one point I experimented with fictional countries, but it turns out everyone hates that, they want to be the president of their own country, and show they can do a better job than the current leader. Fair enough.

The only problem with this is it means that I need to simulate real world countries accurately enough that people living in them think I have made a proper effort to do so. This is staggeringly difficult to do with a single (albeit flexible and complex) model of politics and economics. What makes it way more difficult, is that it has to be politically, economically and temporally flexible as well.

Allow me to explain.

Imagine you spend months reading statistics and articles and set all of the values of all of the policies for a single country in Democracy 4, for example the UK, and you get all the various values in the model as close as possible to reality. Unemployment looks about right, GDP looks about right, Wages look about right…and on through literally hundreds of different measures. This is VERY hard to do, and a lot of values need to be flexible in interpretation. For example what level is income tax in the UK? Obviously it depends on how much you earn and many other factors…

…but then the very same model has to work if you change some of those variables. Maybe a player decides to abolish the national health service. Or double the minimum wage. Or scrap nuclear weapons, or introduce a new tax on luxury goods. The same model has to cope in all these circumstances, and it has to be credible over time. The national debt is a certain level NOW, and we know roughly what impact it has, but how do we possibly model what will happen in the future? How do we model the impact of increased automation on unemployment, productivity, wages, and international trade? Ideally a video game is made to be playable for many years. Will Democracy 4 make sense in 2025? in 2030? When we all have self driving cars and teslabots, what do the economics look like?

This is all hellishly hard, but one of the particular aspects of what makes it hard is a thing I’m encountering today. I am taking the first gentle steps into looking at an expansion pack that would add some extra countries to the game, and trying to be more organized, and sensible about adding them so that the model is consistent and makes sense. Its way harder than it sounds.

Take for example: BRAZIL. An exciting country to add to the game, as its so different to the others. I am looking forward to adding a special situation for the amazon rainforest, with all its potential economic boom, tourism value and also massive environmental controversy regarding deforestation. Lots of cool stuff here for a potential Democracy 4 player! But lets zoom in on a single statistic:

What is the correct value for the military spending slider for Brazil?

This is not as simple as it sounds. Its pretty easy to google the military budget of Brazil, in USD terms. Thats 25.1 billion USD with a source here: https://worldpopulationreview.com/country-rankings/defense-spending-by-country. It would be easy thus to look at the UK spending (55Bn USD) and do a relative comparison to where we position the UK slider (42%), and use that calculation to set the Brazil military spending at 19%. However, doing a straight USD comparison is fraught with inaccuracies. I cant even find out if that USD number is actual real USD (ie: the value of the Brazilian reals converted at the current exchange rate to USD) or ‘purchase-power-parity‘, which is a different (and generally better) measure altogether. To put it simple: You can probably pay a Brazilian soldier less in USD equivalent than you would pay a US marine. If a Brazilian soldier can buy a house and clothes and food way cheaper than the USD-equivalent spent in a US town, then in effect your military budget is going further…

One way to adjust for this is to take a second measure, using totally different comparisons. So for example, you can also look at the percentage of GDP that is spent on the military, and use that as a baseline. In this case Brazil spends 1.4% of GDP on defense, compared to 2.2% in the UK. Making that adjustment means that the Brazil military slider turns out to be 28% instead of 19%.

To start with, before I go back and play balance and adjust everything (which will take weeks) I’m setting the initial value for those military sliders to be the average of these two measures, so comparing military spending as % of GDP, then absolute value in USD and then averaging the two slider positions. This gives me the following values:

Greece 29%

Ireland 3%

Poland 26%

Switzerland 9%

Turkey 35%

Brazil 23%

At first look, these seem reasonable. Switzerland is famous for its neutrality. Poland is naturally (given its history) more jittery. Ireland… well I cant remember having ever heard of the Irish military at all. Turkey, given its location, probably thinks it can justify quite a strong military.

You might think this is a paper-thin approximation. You are right. I’m sure multiple people have phds in studying the relative military spending of countries around the world. Sadly, I’m just a video game designer and do not have that time, but I do what I can to get sensible numbers where possible, and have to keep in mind that the first priority of any game is to be fun, not accurate.

Still a lot of stats juggling to go!

Code bloat has become astronomical

There is a service I use that occasionally means I have to upload some files somewhere (who it is does not matter, as frankly they are all the same). This is basically a simple case of pointing at a folder on my hard drive and copying the contents onto a remote server, where they probably do some database related stuff to assign that bunch of files a name, and verify who downloads it.

Its a big company, so they have big processes, and probably get hacked lot, so there is some security that is required, and also some verification that the files are not tampered with between me uploading and them receiving them. I get that.

…but basically we are talking about enumerating some files, reading them, uploading them, and then closing the connection with a log file saying if it worked, and if not what went wrong. This is not rocket science, and in fact I’ve written code like this from absolute scratch myself, using the wininet API and php on a server talking to a MySQL database. My stuff was probably not quite that robust compared to enterprise level stuff, but it did support hundreds of thousands of uploaded files (GSB challenge data), and verification and download and logging of them. It was one coder working maybe for 2 or 3 weeks?

The special upload tool I had to use today was a total of 230MB of client files, and involved 2,700 different files to manage this process.

You might think thats an embarrassing typo, so I’ll be clear. TWO THOUSAND SEVEN HUNDRED FILEs and 237MB of executables and supporting crap, to copy some files from a client to a server. This is beyond bloatware, this is beyond over-engineering, this is absolutely totally and utterly, provably, obviously, demonstrably ridiculous and insane.

The thing is… I suspect this uploader is no different to any other such software these days from any other large company. Oh and BTW it gives error messages and right now, it doesn’t work. sigh.

I’ve seen coders do this. I know how this happens. It happens because not only are the coders not doing low-level,. efficient code to achieve their goal, they have never even SEEN low level, efficient, well written code. How can we expect them to do anything better when they do not even understand that it is possible?

You can write a program that uploads files securely, rapidly, and safely to a server in less than a twentieth of that amount of code. It can be a SINGLE file, just a single little exe. It does not need hundred and hundreds of DLLS. Its not only possible, its easy, and its more reliable, and more efficient, and easier to debug, and…let me labor this point a bit… it will actually work.

Code bloat sounds like something that grumpy old programmers in their fifties (like me) make a big deal out of, because we are grumpy and old and also grumpy. I get that. But us being old and grumpy means complaining when code runs 50% slower than it should, or is 50% too big. This is way, way, way beyond that. We are at the point where I honestly do believe that 99.9% of the code in files on your PC is absolutely useless and is never even fucking executed. Its just there, in a suite of 65 DLLS, all because some coder wanted to do something trivial, like save out a bitmap and had *no idea how easy that is*, so they just imported an entire bucketful of bloatware crap to achieve it.

Like I say, I really should not be annoyed at young programmers doing this. Its what they learned. They have no idea what high performance or constraint-based development is. When you tell them the original game Elite had a sprawling galaxy, space combat in 3D, a career progression system, trading and thousands of planets to explore, and it was 64k, I guess they HEAR you, but they don’t REALLY understand the gap between that, and what we have now.

Why do I care?

I care for a ton of reasons, not least being the fact that if you need two thousand times as much code as usual to achieve a thing, it should work. But more importantly, I am aware of the fact that 99.9% of my processor time on this huge stonking PC is utterly useless. Its carrying out billions of operations per second just to sit still. My PC should be in super-ultra low power mode right now, with all the fans off, in utter silence because all thats happening is some spellchecking as I type in wordpress.

Ha. WordPress.

Computers are so fast these days that you should be able to consider them absolute magic. Everything that you could possibly imagine should happen between the 60ths of a second of the refresh rate. And yet, when I click the volume icon on my microsoft surface laptop (pretty new), there is a VISIBLE DELAY as the machine gradually builds up a new user interface element, and eventually works out what icons to draw and has them pop-in and they go live. It takes ACTUAL TIME. I suspect a half second, which in CPU time, is like a billion fucking years.

If I’m right and (conservatively), we have 99% wastage on our PCS, we are wasting 99% of the computer energy consumption too. This is beyond criminal. And to do what? I have no idea, but a quick look at task manager on my PC shows a metric fuckton of bloated crap doing god knows what. All I’m doing is typing this blog post. Windows has 102 background processes running. My nvidia graphics card currently has 6 of them, and some of those have sub tasks. To do what? I’m not running a game right now, I’m using about the same feature set from a video card driver as I would have done TWENTY years ago, but 6 processes are required.

Microsoft edge web view has 6 processes too, as does Microsoft edge too. I don’t even use Microsoft edge. I think I opened an SVG file in it yesterday, and here we are, another 12 useless pieces of code wasting memory, and probably polling the cpu as well.

This is utter, utter madness. Its why nothing seems to work, why everything is slow, why you need a new phone every year, and a new TV to load those bloated streaming apps, that also must be running code this bad.

I honestly think its only going to get worse, because the big dumb, useless tech companies like facebook, twitter, reddit, etc are the worst possible examples of this trend. Soon every one of the inexplicable thousands of ‘programmers’ employed at these places will just be using machine-learning to copy-paste bloated, buggy, sprawling crap from github into their code as they type. A simple attempt to add two numbers together will eventually involve 32 DLLS, 16 windows services and a billion lines of code.

Twitter has two thousand developers. Tweetdeck randomly just fails to load a user column. Its done it for four years now. I bet none of the coders have any idea why it happens, and the code behind it is just a pile of bloated, copy-pasted bullshit.

Reddit, when suggesting a topic title from a link, cannot cope with an ampersand or a semi colon or a pound symbol. Its 2022. They probably have 2,000 developers too. None of them can make a text parser work, clearly. Why are all these people getting paid?

There was a golden age of programming, back when you had actual limitations on memory and CPU. Now we just live in an ultra-wasteful pit of inefficiency. Its just sad.

VOTING SYSTEMS DLC out now!

So.. at last I finally did it, and managed to get the voting systems DLC released yesterday for Democracy 4. If you want to watch a long video with me rambling about voting systems, boy do I have the video for you:

Also if you fancy grabbing the DLC, you can get it here, or just use the fancy humble widget to buy it direct from me. bwahaha!