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

I finally have a home battery!

At long last, its finally installed and actually working, and after a very long and very tedious process that I will not bore you with (much) my house now has a 9.5kwh home battery connected up and working in the cellar. Its actually powering everything in my house right now, and is super cool.

This has been a long process because just when I started to ask a company to install one, UK electricity prices went absolutely insane, and everyone and their dog suddenly wanted a home battery installation. Getting a Tesla powerwall would have meant possibly an even longer wait, and to be honest, they were quite pricey compared with what I eventually chose (a Givenergy 9.5kwh one), but even when I found an installer, and agreed to have a battery installed, there were endless delays. Initially I was going to have a 9.5kwh (latest model) battery, then it became obvious they were hugely delayed, so opted for a single 8.4kwh one, then at the very last minute it turned out a 9.5kwh one was available, and as this was the latest tech, that allowed 100% depth of discharge and unlimited cycles (basically you can fully fill/empty the battery whenever you like without affecting the warranty), so we went with that.

Getting people to come around and install the battery was one thing. Getting it actually finished was another. The installation has been a real pain, but TBH that seems to be mostly down to huge demand and chaos among all the companies doing this sort of thing right now. We had the battery installed, but dormant for about 4 weeks until a vital missing component showed up (a wifi dongle that allowed it to talk to my home network, and thus back home to the battery management system run by the battery company).

Now its all installed, it all feels like it sort of went ok though, because my ideal scenario was to put it in our cellar, which is damp, and dark and empty, and thus the perfect location. Why take up room in the house with a great big metal box when you are almost never going to have to physically go see it? I had worried that the installers would be negative about anything ‘non-standard’, but were happy to run the power cable from our kitchen fuse box outside the house, along a wall, then down through a hole into the cellar and the battery. I’m very happy with where it is:

When it was installed I asked them to set up a double size wooden board on the wall and allow space for a second similar size battery if I wanted to add another one at some stage. In practice, I doubt this will happen. The picture shows the battery (at the bottom) and above it is the inverter. Basically an inverter converts DC to AC or vice versa. This battery is ‘AC-coupled’ which means its on the ‘house’ side of the setup, and is wired in to the fusebox pretty much like anything else. It needs the inverter to convert that AC power so it can be stored in, or sucked out of the battery itself. On the plus side, if I got a 2nd battery, I don’t need another inverter, as you can just daisy-chain em. The red switch is an emergency cut-off.

Back upstairs in fusebox land, you end up with an extra widget called an EM115 that takes up one fuse slot. Its a fancy management thing that seems to be required to check everything works:

Connected to this widget is something called a CT clamp. This is a thing that wraps around a cable and tries to detect the power load going through it, and the direction of it. I already have one, used by my car charger in the garage, to ensure the charger never overloads the house grid connection. This new one is connected to the EM115 and the battery so the battery can tell whats happening with my grid connection:

This information is important because the battery uses it to do cool stuff. For example, you can say to the battery ‘Try to never export power to the grid!’, and then on a day where the solar power is high, and your consumption low, the CT clamp tells the battery that we seem to have a negative power flow (exporting to the grid) of X watts, and it therefore tells the battery to soak up X watts of power to balance it out and ensure any ‘surplus’ solar is kept in my house and not given for free to the evil energy supplier!

Whether or not this is what you want your battery to do is dependent on your circumstances. We got our solar panels 12 years ago on an early ‘feed-in-tariff‘. This means that we get credited a nice amount of money for each kwh of power our solar generates, regardless what happens to it, and we get a ‘deemed export’ of 50% of that. This means if our panels generate 10kwh, we get paid 10xFIT plus an extra 5xExportTariff. The actual export tariff is super low, so it wouldn’t be a good deal anyway, but as our tariff doesn’t measure the actual real export, we are kinda gaming the system a bit there by trying not to do any :D

For people with newer solar panels, they may actually have an export meter, and genuinely be paid per kwh they export. So why would you not do this? Because the very very best rates you get to export are insulting. I’ve seen a high of £0.07/kwh which is an insult considering that companies SELL you the same power for £0.24/kwh… Thus even if you do have an export meter, it makes more sense to keep that power in your home and use it later rather than sell it, then buy it back at a huge loss…

For people with normal jobs this is even more acute. In the UK summer your home solar will generate tons of power while you are out at work, which it sells for £0.07 for you to buy back in the evening to run your home at a huge loss. Sod that!

But enough about the economics! lets look at the real reason anybody gets a home battery – fun charts to look at:

This is one of the many views you get from the givenergy website. It also has app for your phone, obviously. This is my first day with the battery, and I screwed a lot of stuff up which I will explain. As part of its first-run ‘calibration’, the battery gets filled to 100% from the grid. Thus it was at about 80% full around midnight. I had then stupidly told it to fill to 100% between 00.30 and 4.00AM which is when my electricity is 75% off. It did this (see the top purple line going up to 100%) by importing that power from the grid. Thats the red section below the base line on the left, and the purple is it filling the battery

The red is a bit higher than the purple (well…below…) because I also needed *some* power to run the house even overnight.

I had screwed up twice because I’d told the battery to only discharge from 4.00am onwards, so between about 1.30-4am you can see those red downward spikes showing me importing power to deal with our energy demand (green upwards). Then from about 4am onwards, that disappears and we are running entirely from the battery since then (including now). Thus the battery level is slowly running down (top purple line).

The UX of the app is not amazing, hence my screwups, but I think I’m getting the hang of it now. You can see on the RHS of the chart some downwards purple and some upwards yellow. Yellow is the output of our solar panels, and for a period there it exceeded our energy usage, so the excess was dumped back into the battery. Working as intended!

You also get real time data like this:

This sort of thing can drive someone insane, because very often the numbers do not match up exactly, and you start to wonder if everything is broken. It isn’t, but you have to get your head around two concepts:

Firstly, the accuracy is not perfect. We do not have an export meter, so we are relying on some pretty rough measurements of power flows being detected by a loosely attached metal clamp on a cable. Thus you have to allow for a bit of a fuzz factor.

Secondly, the battery response is not instant, but has a slight lag. This is REALLY important, and can cause confusion. For example, say you are consuming 200w of power, and the battery is happily supplying 200w from power you saved up earlier. All is good. Then suddenly you switch a 2,000w kettle on. That power HAS to come immediately, and the battery is not set to do it, so for a few seconds, the extra 2,000w comes from the grid. The clamp detects this, tells the battery, and the battery ramps up to output 2,200w instead. Kettle finishes boiling, but the battery is still at 2,200w. The excess automatically flows to the grid. The clamp then detects that, the battery is told, and ramps down to 200w again.

That all sounds ok, but what it means is we briefly imported 2,000w from the grid, and then later briefly exported 2,000w as well. In the grand scheme of energy flows, its a minor deviation, but that is why there is not a perfectly flat line between 4am and now, with zero grid import or export. The import/export is VERY low compared to normal, but it still does happen.

If you have a smart meter in-home-display you will already be fairly familiar with this. In theory your TV will use maybe 200w for example, but you only need a helicopter to explode in an action movie, with a big loudspeaker-driving bang, followed by a loudspeaker-minimal silence, to see that the per-second power draw of almost everything is very, very variable.

I guess this is early home battery technology. Maybe eventually this sort of thing will be somehow perfect with sub-second response times. Maybe thats really hard on some components and electrically tricky. I don’t know, I’m just some guy with a battery in his cellar.

ONE MORE THING

You *can* wire a battery to be a backup situation if your home loses power due to a cut. We did not do this. Initially I had been told this could be done. I was then told that it can only be done for certain circuits in the house. I was THEN told it means adding yet another fusebox, at which point I bailed. Our kitchen already looks like a nuclear power control room.

One of the undiscussed issues with home battery as backup power is that the actual output RATE from a battery is quite low, in this case 3KW. 3KW is a lot, until you have a router, 3 wireless boosters, a TV, streaming stick, home theater unit and a subwoofer plugged in… and then turn the kettle on. Basically you run out of headroom, and things will start cutting out. Home batteries are great, and can provide a lot of power, but the big old electricity grid can deliver 100 amps at 230v and thats a lot of juice. If you want to be able to power everything, including kettle + electric cooker and also charge a car and do everything else all at once, you need some serious big-ass inverter, and frankly, powercuts here are rare enough that I decided to just not care.

I will do (inevitably) another post in a week or so, when I have long term data, and the energy bills to prove it. I’m still in the exciting early days of trying to find an excuse to go get something out of the freezer (also in cellar) as an excuse to gawp at my battery…

For those curious, the total installed cost was £5600 plus vat @20% £6720.

Optimization for fun!

I am well aware that my game Democracy 4 is not exactly slow with huge framerate issues. However, optimization is fun! or at least it should be, but in practice, getting profiling to work on remote PCs is not exactly easy. I have basically used every profiling software imaginable and still have not got one that I think really does the job well…

I have basically wasted about an hour today trying to work out why I couldn’t get the intel vtune amplifier stuff to work with event based profiling and get rid of this pesky error that was clearly nonsense about ‘not able to recognize processor… until I finally realized that I actually have an AMD chip in my (relatively) new PC so…yeah… That drove me to try out the AMD uProf profiler, which is something I had not used before.

It took me a moment to realize that this software, good though it is, does not suggest to you ‘hey if you run me in administrator mode I will show you 50x more config options’ but luckily I worked that out. My first act was a brief run of Democracy 4, starting a new game then immediately going to the next turn. In the list of functions taking up all the time (and ignoring windows system functions) I get this list:

Which is about what I would expect. The game is implemented as custom-coded neural network structure, hence the terminology. Mostly everything is a neuron, and most of the processing is where each neural effect (the links between neurons) processes its equation, and then neurons do some math on their inputs and outputs.

The inner machinery of the neural network ultimately comes down to that top item there:

SIM_EquationProcessor::Interpret Value.

This is code that basically takes those equations in the game’s csv files like this:

StateHealthService,0-(0.4*x),2

And actually calculates a value from that. There are 2,000 voters with about 10 connections each, pre-processed on a new game 32 times, so thats 640,000 equations right there, plus all of the actual simulation stuff layered before that. In other words, that equation processer probably runs a million times on a new game, and the equation might have 5 values in it, so max case is 5 million values get interpreted when you click on ‘new game’.

Can I speed it up?

First step is to see how stable these values are any way, so I’ll do an identical profile run and check that the +/- errors on different profiling runs are small…

I think thats pretty close. I definitely have numbers here that are in the same ballpark. So now lets try some optimisations to speed this puppy up. Looking at the top function with a double-click gives me a whole bunch more data:

The function is much longer than this, but thats mostly catering to relatively rare edge cases. Looking at the bits that actually have numbers on it show pretty clearly that its pretty much all about the pesky strcmp() call. A separate piece of code has already parsed the full equation of 0-(0.4*x), so I have a bunch of char buffers for each variable, declared like this:

char Vals[MAX_VARIABLES][32];

The thing is, do I need the overhead of calling strcmp() when I am only really checking for whether the first letter is x? Sadly I cannot JUST check that, because that would prevent we having a named variable starting with an x. Lets imagine this equation:

0-(0.4*xylophone)

Obviously not very likely, but theoretically possible. If the length of the buffer was 1, and the first letter is x, then thats a hit, but the question is, will inlining 2 manual checks be faster than a strcmp function call? Lets replace that code with

if(Vals[valindex][0] == 'x' && Vals[valindex][1] == '\0')

And check out the results:

Hmmm. Actually WORSE as far as I can tell. So it looks like whether we strcmp or not, just checking the value of two bytes at that point is slow. probably because its not immediately available memory? Its notable that the code at line 232 is super fast by comparison, as its just checking a bool value we cached earlier. Maybe I should try that? When I parse the function, just keep a bool for each Value, saying if its ‘x’ or not?

Whoahh. This looks like a pretty major speedup. 326 cycles versus 1,143. What the hell? why didn’t I do this earlier? Lets look at the line by line…

This is awesome. I then tried to make this code inline, but it seemed to not make things any better. I haven’t fully explored uProf yet, but it does do cool flame graphs:

Profiling UIs are great fun :D

Solar Farm update: We finally have planning permission!

I should probably call this article ‘How I managed to get planning permission granted for a solar farm after initially getting refused’. But I’m sure the algorithm will find it anyway…

Its been a LONG time since the last update. Since then, we put in an application for planning permission and… got refused. This was pretty devastating, and I was fairly convinced that was the end. I’d close down the company, write off all the money already spent and spend my days grumpily complaining to people how the system was broken. Instead… we now have permission! and here is the epic story.

When we initially made our planning application, it included about 30 separate documents detailing stuff like what trees we would plant (to compensate for the horror of building a solar farm. We wont cut down any…), which roads our trucks would go down, what the soil was like, what bird species were common nearby, what panels we would use, what angle they would be at, where the substation would be, what the cables would be like, where the cables would go, what the mounting frames were like, whether or not any great crested newts had been seen in the vicinity of the site in the last decade…

The ridiculously long timeline for the council making a decision came to the end… and then they asked for an extension. We sighed and said yes (to be clear: you have zero real choice). Then when that expired they asked for another extension. We had to say yes again. Then eventually they turned it down.

They do not even email you to tell you. You have to keep checking the site. Yes I am serious.

The reason it was turned down was because its about half a mile away from a long hill (80 miles long in fact), called Offas Dyke. This is a historically interesting hill. Its technically a historical monument. There was absolute dread that there were places on this hill, that if you looked west, you might see our solar farm, and then presumably commit suicide out of horror. Thus we got turned down.

If you think this is insane, I haven’t even told you the best bit.

All the places on the hill that have an offensive view of our site… are private property. The public cannot even go there. I guess that the theory is that people trespassing on private property might interrupt their late night burglary attempts, look west and then recoil in horror at the sight? Needless to say there were no objections to our proposal from any residents.

To make it even more ridiculous, when you stand on the site of our farm and look at the dyke, there is a fucking house on it. A private house. How the hell did that get planning permission?

Anyway…

We decided that this decision was clearly insane, so we resubmitted, with some changes to the layout to mitigate the horrific devastation to the eyeballs that a 1.2mwp solar farm might cause. This resulted in a response from the council, from a hired consultancy company who they asked to appraise some of our paperwork, stating that our visual impact assessment was not good enough, because, among other comments, some of the photos were of low DPI, and one of the diagrams didn’t have a North-symbol on it. Yes really. And yes, amazingly, that company can be hired as consultants to do visual impact assessments which would have been much better. Oh yes, totally legit. Nothing to see here…

This painful smile is what planning permission looks like.

So how did we get it through this time?

I made a tactical error the first time, in that I thought if we include all the information, and make a reasonable proposal, it would be granted. This was naive. That time, the decision was made by a single ‘officer’ at the council (this is called ‘delegated powers’). Basically someone reads all 30 documents, then decides to grant or refuse, and they refused. This time around, that same planning officer was not available, so we got someone else, but the second time… I actually lobbied for support.

I emailed the local Councillors for the area, I emailed the mayor of the nearest town, I emailed every environmental pressure group I could find in the county. I emailed the local MP (who ignored me…too busy tweeting about renewable energy believe it or not), I emailed the Green party, The Labour Party and local conservative Councillors. I emailed and facebooked, and tweeted at everyone I could find who was remotely in any way associated with green energy, environmental politics in the local area, or local politics of any kind. I read every news article in every local paper that ever mentioned solar farms looking for names of people that might show their support.

Politically, the most supportive were probably the Green party, but in terms of practical help, it was mostly the conservative party. By a huge margin the least help came from the Liberal Democrats, who basically said ‘good luck, but we don’t get involved’. Thanks. Duly noted.

Anyway…

Eventually this all came down to a one hour planning meeting 3 hours drive from my house… so I went up there and arranged to speak. I was allowed to speak for 3 minutes, and not allowed to speak otherwise. This was a ‘planning committee meeting’ instead of a single officer’s ‘delegated powers’ decision. THIS IS WHAT YOU WANT. A single person will not want to be blamed for anything bad, so they default to refusing everything. In fact, the planning officer’s recommendation was REFUSE, due to archaeological and history concerns (again). Despite this, it was clear that every single Councillor on the committee was very very strongly in favor, and said so, sometimes pretty passionately, talking about climate emergencies and how ridiculous the claims of the history and archaeology groups were. It went to a vote and we won, unanimously! with a few easy conditions (every one of which is pointless, as they are all already addressed in the 30 documents in our proposal). I think it was overwhelming enough that my 3 minute talk didn’t ‘win’ it, but I do think it helped, as I preempted some concerns and addressed them.

Thats me at the back to the left. Looks like I’m wearing sunglasses… I am not.

It took about 3 days to get the website changed so it officially said granted. Again, obviously no email to tell me… *sigh*. The next morning after the meeting, we went along to the site for the first time to meet the landowner, who is a sheep farmer. He told me he has been trying to get renewable energy on part of his farmland since 1997. TWENTY FIVE YEARS. But yeah… we are totally going to be netzero soon right?

So what next?

Now we need to get a date from the DNO (power network company) for when they can finalize their grid connection and we can provide power. I am hoping for Q1/Q2 2023 but I bet it Q3/Q4. You basically have zero say in this, despite phenomenal cost. I’ve emailed them and am awaiting a reply. The site is muddy and hilly enough to preclude a winter build anyway, so we are looking at April next year to build it as a best case scenario. It would be amazing, but unlikely, to catch much of the 2023 summer output.

I still have 3,024 solar panels in a warehouse waiting to be fitted. I wont order battery or inverters until we get a connection date. Hilariously the panels have gone up in price since I bought them, so its not a bad thing I ordered early, especially given ongoing supply chain woes. There will likely not be updates on this blog for a few months, until I start ordering things and we have proper dates. I still suspect that the hardest part is over, because planning in the UK is so evil, it makes absolutely everything else look easy…

This article is too long for you

I made the mistake today of reading some social media comments (twitter, reddit, arstechnica, slashdot) on a topic I know a bit about and have read a lot of the background on. As you might guess it was an IQ-barren tirade of abuse, uninformed hot-takes and absolutely baseless bullshit. This isn’t new, but I am beginning to worry that its basically the only means of communication people can cope with now. I think that our IQs have taken a battering, but far far worse, our attention spans have been destroyed, which is the first step towards making us even stupider.

I recall a long while ago, when unemployed, and having temporarily moved back home with my mother because I had nowhere to live… deciding that I should learn how to program in C, instead of the Sinclair BASIC I learned as a kid. I guess I was about 18-21? (I’m terrible with dates).

I was poor as fuck, so the only possible resource for me to learn this was a mail-order course which came on 3 floppy disks. I couldnt afford to buy loads of books, and youtube/internet didn’t exist. Eventually, after spending a lot of time agonizing over which of the 3 potential C books I could buy in a bookshop, I bought one of them, which I read cover to cover numerous times.

To people reading this who are not programmers, C is not considered an easy language to learn. Not by a long shot. I’ve heard C# described as ‘C++ but without pointers, because they are hell’. They are not wrong. Pointers are what make C, and C++ a bit of a pain. Once you really get your head around them, they are simple, and easy, and powerful, and you cannot imagine code without them. I still code in C++ all these years later, because I don’t vaguely worry about pointer bugs, I’m just way too comfortable with coding in this language. I find C++ about as usable to me as the English language. Arguably I can communicate in C++ better and faster…

The reason I take you on this tedious heroes journey about me learning C++ is this: Learning C and C++ on your own, with just one book and 3 floppy disks, and nobody to ask questions…is fucking hard. I remember struggling and getting very confused, and thinking it was all gibberish, but persevering, and persevering and struggling and trying again and again and again until finally I started to understand how it all works.

30 years later and it turns out doing that made me millions and millions of dollars, financial freedom, my own business and lots of stuff to be proud of. In many ways, struggling alone with a seriously complex and hard task, and no distractions was the making of me. (In many ways…not just career. For someone like me who is clearly on the autistic spectrum developing expertise in an absolutely clear definite and logical language that isn’t English is very very comforting).

Again.. why mention this?

I just don’t think many people can do stuff like this now, and that includes me, because society has absolutely fucking ruined us. Back then, when I read the same sentence for the fiftieth time in an academic textbook, and still don’t get it…I just had to keep going. But now? Fuck it…whats new on youtube? any funny cat videos? has someone said something shocking on twitter? are there any new stories on reddit or slashdot? Lets check all of them, then lets check them again, and then start again. Certainly no need to learn anything. Why bother? the internet is free, and provides an endless stream of absolutely vapid intellectually undemanding candyfloss bullshit that can keep my lizard brain scrolling and scrolling and scrolling until I fall asleep.

We have all given in. We have given in to the desire for immediate satisfaction and endorphins at the cost of our ability to ever pursue long term goals. We are now short-term to the absolute extreme. Short-termism in politics used to mean ‘focused only on this year or the next election’. Now it means this afternoons trending hashtags. Absolutely every element of society has been seduced by the idea that we can have it all NOW, RIGHT NOW, not tomorrow or next week, or ‘lolz’ next year. Thats just crazy talk.

There are numerous books out there on how to learn C++ in 21 days. Or even 7 days. I started about 30 years ago. I’ve written probably many millions of lines of code. There are still bits of C++ I barely use and am not that familiar with. 21 days? Think 21 years. But 21 days is likely too long for people now. Why learn C++ in 21 days when you can hack together some crappy bug-ridden mess by copy-pasting from stackoverflow!

WAIT

Thats far too long-term thinking. Just use the handy-dandy new code pilot feature that automates the copy-pasting from the internet to ensure there is zero danger that you might actually learn anything!

Me moaning that kids-these days don’t know how to code is nothing new. This is like cliffskis greatest hits part II. Whats more the point of this article is to point out how the short termism and inability to learn has become absolutely intertwined into our society.

Do you want the TL;DR of that?

Think for a moment how absolutely fucking depressing it is that many if not most of you know that this stands for ‘Too long, Didn’t read’. Not only is it absolutely part of our culture to embrace the fact that we cannot be fucking bothered to read anything longer than two sentences, we cant even be arsed to read ‘Too long, didn’t read’ and need a motherfucking acronym for that. Let that sink in.

TL;DR is the perfect slogan to sum up our modern attitude to information. The idea that something is obviously not reading if it goes into some depth is frankly shocking. How the fuck is anybody going to learn quantum mechanics? how is anybody going to learn anything of any depth? Where is this attitude going to end? Will all university courses have to be summarized as a single paragraph (preferably shorter)? Do you want my simple TL;DR summary of doing a degree in economics:

‘it depends’

The irony of all this, is that society is getting more and more complex. We can get away with a lot of the population having an extremely shallow education on everything, if we don’t expect them to make important decisions that require the evaluation of complex and sometimes partly contradictory data, and assuming that most of those people are just ploughing a field or stacking boxes, or flipping burgers all day. This is no longer the case though. Robots are already flipping burgers, driverless tractors are a thing, and robots will be routinely stacking boxes soon too. The jobs left are the complex ones requiring some training and intellect, and I worry that the current stock of humans is being deliberately trained to just discard complex information and reject any demand that they may need to do some deep learning.

Meanwhile politics wades deeper and deeper into super complex issues and problems, at a time where political speeches have been reduced to the soundbite. We cannot cope with any actual political speeches any more, we just want the soundbite. The speech is simply a delivery vehicle for the twitter-friendly soundbite.

Here is the Gettysburg address

Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.

Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.

But, in a larger sense, we can not dedicate — we can not consecrate — we can not hallow — this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us — that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion — that we here highly resolve that these dead shall not have died in vain — that this nation, under God, shall have a new birth of freedom — and that government of the people, by the people, for the people, shall not perish from the earth.

Here is a modern speech, which is all we can cope with.

Make America Great Again

I’m not picking on that specific politician. here is another one

Tough On Crime, Tough on the Causes of Crime

Its just as simplistic, without any need to engage your brain. Don’t panic, no long words were used. The idea that politics has to be expressed in terms so basic that they will fit on a baseball cap or the side of a bus is just so utterly, utterly depressing. One of the many reasons for this, is that simplistic slogans often lead to very, very bad politics. You can blame everything on immigrants in a simple sentence, but a proper discussion of the benefits and issues around immigration would take many pages and can probably, like almost all politics be summed up as ‘it depends’. Nobody is going to stick that on a baseball cap any time soon.

But hang on, its not like this is purely a far right issue either. Is ‘make America great again’ too long for you? Tada:

Even worse. Hope for what? Hope for economic growth? hope for technological progress? Hope for a racially pure America? Hope that we nuke our enemies? Hope is TL:DR politics. Its political sloganing for people who just cant be bothered to read anything.

This should scare the fuck out of you

I’m old. In internet terms, I’m laughably old. I remember before compact disks. Before the internet. My grandfather had a black and white TV and tin bath and no running water in the house. As a child I played in the rubble of the local munitions factory that Hitler’s Luftwaffe bombed. As well as all this 4-yorkshireman bullshit, it also means I remember a different style of politics. Before twitter, before social media of any kind, even before the internet at all. Just 3 TV stations in the UK, and a number of news and ‘current affairs programs’. These programs had a fairly simple format: A politician would be invited on (just one usually) and would be grilled on their policies by an interviewer.

There was no TV audience who would heckle and boo or cheer. There was no opportunity for you to live-tweet your opinions for the presenter to read out. If the topic was the economy, then it would be the minister responsible. This is now ancient history. You would not get a 30 minute (or more) interview of a politician on an issue now! Thats just laughable. How the fuck are we supposed to monetize that shit on tiktok? get real! The only exception is the ‘televised debates’ just before an election.

Have you ever stopped to think ‘whats the point of the audience in a presidential debate?’ This does not have to be a thing. These debates do not have to be a cross between the gladiator pit and a circus. We have the technology still, to have experts in economics, or trade, or the law, or social policy scrutinize politician’s history and proposals and interview them at depth. This is still possible. We have the technology, and the option, but we no longer have the attention span. We have been so conditioned by tik-tok, and youtube ‘shorts’ and other shorter, shorter media, that we are now incapable of actually digesting political debate or policy positions.

I notice it outside of politics too, in fact everywhere. I follow the tech company ‘Tesla’ very carefully from an investor POV. I know a LOT about what the company is doing and what it makes, how it makes it, where it makes it, what that costs, what money they make, and what they are planning. I swear that 99% of articles even in the financial press about this company are either written by AI bots, or churned out by idiots who have no idea about any of that. A typical news story would be something like this:

TESLA CRASHES INTO TRUCK OMFG CLICK HERE

And if you think there would be more detail in the actual ‘story’ then you must be new here. The actual information required to spam-out the story with a clikbait headline is as paper-thin as you get. As long as there is some way to arrange the words CRASH and TESLA in a headline, then the actual article content is considered irrelevant. After all, who gives a fuck, because nobody reads the article anyway. They just need you to click the link, be served some ads, and preferably rage-tweet or share it. There is zero need to provide any information so why bother?

Imagine a world where that article would include, at the very least:

  • Information on the circumstances, weather, time of day, etc around the crash.
  • Details of who, if anybody, was injured, and how badly, and how that compares to a typical crash of this nature.
  • A comparison with other vehicle crashes, and some statistics that put the crash in the context of the number of cars on the road.
  • information from genuine experts on the topic regarding the likely cause of the crash, even if that information is not conclusive, with any caveats included alongside each expert’s opinion.
  • Actual hard information from highway safety bodies regarding the proven resistance of that specific vehicle to a crash of this nature and the relative safety, as shown by statistical evidence, of this car compared to other similar models.

Ha. Fuck no. Why do that? Most of our readers can no longer read. They just see images, scroll with one finger and click on the like icon, like the pavlovian dogs we have trained them to be.

Every single day, if you google search for TSLA, you will find an article suggested by the almighty google algorithm, that explains WHY TSLA CRASHED TODAY or maybe WHY TSLA SOARED TODAY. The articles are, in my opinion, entirely written by AI bots and contain no actual research whatsoever. Sometimes, if you are really lucky, you strike gold, and get both headlines from the same site at the same time.

I am in a state of despair regarding the ever shortening attention span of our society. The old websites I used to read, like slashdot, ars-technica and reddit increasingly link to articles that are 3 or maybe 4 paragraphs long at best. You cannot inform people about anything worthwhile in 3 or 4 paragraphs. Pick a topic you know a LOT about, where you are considered an expert, then try and mulch it down to a pithy 3 paragraph article. Its a travesty, an absolutely futile exercise. And yet we demand ever shorter and shorter articles, ever shorter media. TikTok is bad enough, but what replaces it? a one-second long video sharing site? Maybe a version of twitter with just a single word?

I do think one of the reasons we don’t notice how bad this has got is because of the way content is now consumed. Some genius decided that every article should have a big phat image on it, preferably sourced from getty, so its totally stock and has absolutely no new information in it whatsoever. Like this:

Whats truly impressive is that they keep the big phat GETTY IMAGES logo, so we are not vaguely pretending this is actually relevant. This image is presumably for people who read ‘Cost of living’ and cannot cope with a concept of such overwhelming complexity unless we pair it with a woman holding a baby and boiling some water because… we don’t understand the story otherwise?

Not satisfied with wasting a ton of space on such crap, websites also discovered the curse of infinite scrolling. Now it FEELS like you are being fed a ton of information, but its actually fuck-all. Just a headline, a few sentences and a payment to Getty Images. Everything is just paper-thin. We have no real information on anything, we are just fed a constant doom-scroll of endless analysis-free crap. Right now, only a small portion of it was written by AI. Within 10 years I suspect all of it will be.

Yes, I could have made this article shorter. I make no apology at all for asking you to suffer the hardship of reading this far. I am trying to convey a concern and get across a point. It takes time to build a case, it takes time to examine the various scenarios that help make that case. It takes time to try and convince someone on a topic. Hopefully this time was well spent.

TL;DR: Read the fucking article.

Democracy 4 DLC now available to add to wishlist!

All the cool kids these days are trying to get people to add their upcoming games to their wishlist. Its literally the coolest game in town. You wouldn’t want to not be cool right?

In all seriousness, the reason indie devs do all that is because its widely believed that steams algorithm internally keeps track of what new games are ‘hot’ by how many people are following them or adding them to their wishlists, and this helps to determine how much visibility those games get at launch. I suspect the effect is much reduced with DLC because it sells to a smaller audience anyway, and perhaps steam prioritizes new IP over expansions and DLC anyway. We have no way of knowing.

But you DO get notified by steam when a pre-release game you wishlist has been released, so if nothing else, its just a handy reminder to people that they were interested in X a while back, and its out now…

So here is the store page for the new expansion so you can do this right now:

This DLC has actually been really hard to make, and in many ways was tons harder than doing the voting systems expansion. I can imagine many people might think it is the other way around, given that the voting systems DLC added some new core functionality to the base game whereas this expansion ‘is just a few new countries’. There are two reasons why this was not the case…

Firstly its SIX new countries, which was a bit silly of me. It should have been 4 max. I had totally blanked out that part of my memory where we did all the research and balancing for all the countries in the base game, and also forgotten that many of the base game countries had been modelled before, so we already had a lot of the data. Secondly, I massively forgot how much research is needed to do a proper job of just ONE country. The game has all of its usual policies, plus a bunch of new ones, plus all the content that used to be in 3 expansion packs for D3, plus some new stuff that is specific to the previous expansion pack on voting systems.

Because no economic/political model can EVER really model the reality of a single country in all possible states, let alone model 10, and certainly not 16, there are bound to be a bunch of weird anomalies and inaccuracies in any new countries that get added to the game. Perhaps its REALLY easy if you play Poland as a super-religious libertarian who loves carbon taxes? Maybe Greece is unwinnable for people who want to play Environmentalist-Capitalists if you start with a global economic boom? The problem is…there are too many permutations to test.

I did actually code some AI that plays the game automatically, but the trouble is in extracting any useful data from it. The game does a lot of processing, and even if I get each turn down to under a second (I can get it below 2 seconds already, and thats without multithreading), that means a 5 year term with 5 terms is around 2 minutes of AI-modelling. This might sound quick, but if I can only do 30 playthroughs an hour (720 a day) then thats nowhere close to the number of playthroughs needed to accurately build up a statistical model of imbalance…

I’m not saying that I will not revisit that experiment later…just that the sheer number of combinations of decision in the game mean you really need several million games to be played and analyzed to detect any issues. In other words several years of dedicated processing…

Anyway… I do have a bunch of time set aside between now and release which is basically just me playing each country a LOT, and tweaking all the numbers so they are playable. Democracy 4 is more of a sandbox than a conventional game, so I’m not aiming to get every permutation perfectly balanced anyway. Thats an impossible dream. I do have to ensure nothing crashes or goes super weird in a normal playthrough on each of these six countries though…

That brings me to the price. I’ve set it at $9.99. I did a lot of agonizing about this, and talked to some fellow devs a lot about pricing. Both urged me to price it higher than this. One urged me to double that. Its a really difficult thing to get right, and a decision that I find really interesting.

We all know that the marginal cost of each copy is zero, so in a way, it doesn’t matter if I charge $0.01 or $100, its just a matter of picking the number that maximizes total revenue. This depends a lot on who I think the target market is, what they can afford, and how much value I think the DLC represents… All very difficult things to be exact on. Eventually I figured that given that the base game is $26.99 and has 10 countries….6 countries for $9.99 is a good deal. Its also worth considering that anybody even considering buying some DLC clearly already likes the base game, and has played it enough that they want some extra content. That implies that their play hours are high enough that their cost-per-hour for Democracy 4 is low, and thus are willing to consider any new content favorably with regards to expected play time.

I see this a lot in my daily multiplayer Battlefield V games with friends. I am a serious Battlefield V addict. I have over 1,200 hours in BFV and thousand more in the earlier games. My cost per hour for BFV is about £0.05. Thats insane for something I enjoy that much. Its like going to see a new Hollywood movie and paying £0.15 for it. Madness.

The irony is, that as your perceived playtime cost per hour falls, the value proposition of new content shoots up. If they added one new map to Battlefield V, thats maybe a 5% playtime bonus for me, or 60 hours of entertainment. Even if I will only pay £0.50 an hour, that map should be a good deal to me for £30. A 3-map pack should be £99.

Obviously not all Battlefield players are so obsessed, but with DLC *you are selling to the hardcore*, so the value proposition is way better than it seems to the casual player. This is why it makes sense in F2P games to have some really expensive stuff. There are definitely people who will not only buy a lot of it, but they will consider it a good deal. Thats assuming you aren’t tricking/exploiting people with dark patterns and other horrible business practices obviously…

So…Yup, this DLC will be $9.99 and I think its actually a pretty good deal for people who have played at least all of the maps in the base game once. Its also probably an attractive proposition for anybody who is actually living in one of those six new countries (Ireland, Poland, Switzerland, Turkey, Brazil and Greece). I guess I’ll find out if people agree with me on that in about a months time :D