Game Design, Programming and running a one-man games business…
Its less than 2 weeks until the US election in 2020, and although it looks likely Joe Biden will win, nobody really knows, because modeling how people vote is really hard. I know this, because I’m struggling with it in Democracy 4. Over the previous variants of the game, the voting model has got better and better and more complex, but its still a nightmare.
Here is a very very basic, simple description of how the voting system works:
We collect all of the various inputs to a voter from voting groups and calculate their happiness. If its over 50%, they vote for the player, if its less, they vote for the opposition.
Thats fine, but way too simplistic. For one thing…who says they will vote at all? so we have extra mechanics to decide based partly on age, party membership, and how angry/happy they are… whether or not they even vote. Plus culturally every nation has a background level of ‘apathy’ which feeds into this. Then finally, there are extra multipliers based on how strong a ‘campaign’ each party runs, which help to ‘get out the vote’ by financial means (adverts) or activism (party activist boots on the ground).
Thats better… but not perfect because it assumes rational voters making purely policy-based decisions based on self interest. So I have to then adjust the happiness of the voter based on their ‘perceptions’ of the candidate, which are affected by both policies and ‘spin’ events in the media. I then adjust *that* effect depending how educated the voter is. Basically the poorly educated are swayed more by spin, the better educated less so. (FWIW you can toggle that mechanic off in the game).
That all sounds complex enough…but its not. There is also the matter of party loyalty. So for example, say you are a trade-unionist left winger in the late 1970s, and have voted labour in the UK all your life. Along comes Tony Blair as party leader, by any definition a centrist. You still keep voting Labour because…well you always have done right?
The party position drifts dramatically but for a good few years, maybe multiple elections, you still vote for the same party. You become someone in a centrist party, holding left wing views, but still voting for them. In short, your loyalty has trumped your analysis. To make the game more accurate, we model that too! you can even hover the mouse over a voter and see their loyalty and analyze them (and click-through to a detailed breakdown).
(To illustrate this, generally you see cluster or red, blue and green on this screen to show members of each party, but sometimes those colored dots seem to be further away from ‘the pack’. These are people like I mentioned above… members of a party, and voting for them, but actually holding different views).
This is all a big improvement, but its not *quite right* yet, because the problem is…we still have what seems to be fairly wild swings in voting behavior. This is because of ‘soft’ support for a party position. To put it simply, if 100% of the country have an opinion of you that is 49.9%, you will get 0 votes, and be wiped-out in an election. Shift them all towards you by 0.2%, and you will win a landslide.
This is correct political modelling, exactly accurate and how it should be…but somewhere, some of our numbers are not quite right, so we are not ending up with the real-world results we expect. I have not *yet* completed my analysis of exactly why, but I suspect its because peoples opinions sway too wildly, and because party membership and loyalty is not strong enough.
For example in the UK right now, a lot of polls would suggest everybody is very unhappy with the current government. In Democracy 4, they would be in a bad way, because so many of the electorate are angry…. but I suspect the Conservatives would win an election tommorow, because despite their anger, many people who voted conservative in the last election still prefer them to the alternative. In other words, their party may have changed, and performed badly…but they still have party loyalty, and its not been bad enough for long enough to drag them away from that…
This sort of stuff is a nightmare to balance of course, but not that hard to code. I think I likely already have most of the data and variables exposed for me to get it right. I hope people realize that this is what Early Access is all about, and hope people can see more of whats going on by looking at that scatter chart (these are new to democracy for d4).
The real challenge is explaining all this to the player. I can get a better UI than I currently have. it just takes a lot of time, and experimentation, and analysis. Hopefully people are patient about this during Early Access.
Democracy 4 is on Steam, GoG, itch and the humble store
It amazes me how many businesses are just totally and utterly hamstrung by poor communication. Games companies, Payment companies, Stores, and outside of games, Telecoms companies, Governments, Car companies, Any large organisation. Communication fails and the business is in tatters.
I would go so far as to suggest that having easy, clear and effective communication between people in an organisation is pretty much the most important factor in the success of a company. More important than technological advantage, more important than branding, more important than the ad budget or the intellectual property… its vital.
Poor communication means you completely fail to convey both good AND bad news. With bad news, that news will never filter upwards to the people in a position to do something about it. Is your website totally and utterly BORKED right now? unless customers have a way to communicate that to you, how are you going to know?
And if a customer even does manage to tell someone in customer services about this, are they able to easily, effectively communicate with the person in charge of the website? Is any information going to be missed during that transferrence? is the web dev going to take what the customer services rep says seriously? Do they even HAVE a way to communicate in that direction?
When you are a one-man company, communication operates at an extremely fast rate. According to this site:
“Neurons, by comparison, fire at a rate of around 100 times per second or so”
So, the marketing department at Positech Games (me) can communicate with the Tech Support department (me) at about 100 times a second. Not bad. The communication speed between whoever mans the twitter account at Electronic Arts and the Lead programmer on Battlefield V is likely slower. Maybe a lot slower. Maybe weeks. Maybe never.
The failure to communicate critical failures is one thing, but this also causes failure when it comes to communicating good ideas, or new ideas, or excellent money-saving ideas. Not only do people like to be listened to, and have their concerns taken seriously by management, sometimes those ideas are fantasically profitable or awesome. When you have mechanisms that filter out feedback to the people in charge, your risk of losing out on those ideas.
I constantly encounter stuff thats broken. For example, I’m using chrome (latest version) on windows (latest version) and wordpress (latest version), and yet for no reason at all, the spellcheck does not work. I could report this… but where? how? and why? We all know nobody would fix it, so why bother? We have all learned that big companies do not really want feedback, and they dont read it, and NEVER act on it.
Twitters phone app (an abomination of evil) constantly suggests I can ‘see less often’ some absolutely unwanted crap, but it never acts on this. It lets me change my timeline settings, but never keeps them that way, because the huge megacorp doesnt actually care what I think, or have any interest in making the app better. Does Jack Dorsey even know this?
I’ve fixed bugs many times in Democracy 4 the same day they were reported. I’ve actually fixed bugs the same hour they were reported. The turnaround time is thus shorter, the customer experience better, the profits higher. Its easy.
The beauty of 2020 is that we predominantly use asynchronous communication. Your customer service people can be in direct high-bandwidth contact with everyone else in the company WITHOUT phoning or physically disturbing them. Slack is not real-time, email is not real-time, skype chat is not real-time. You can have everyone propagate important information through your company asynchronously but directly, ensuring communication is rapid and both good and bad news gets to where it needs to be.
Sure, some people need training on what is, and is not important enough to share, and people need to learn discipline on how to stay focused, but those are relatively simple challenges. Far worse to take the standard approach where nobody talks to anybody outside their own department.
Its easy for me. My company communicates 100 times a second with everyone. If you work in a company >1 people, you really need to focus on this as a core skill.
Tada: hope you like the latest video :D
I was musing about how on earth to manage the people who are keen to help out translating Democracy 4 when I was pointed at this awesome website called localizor which seems to be set up to do exactly what I needed: Localizor
This is so cool. Its basically an online database for you to share the translation keys for your game, and optionally a single reference language (in my case obviously English) and anybody who wants to contribute can enter text for any of the languages you have listed. There is a cool progress bar and it also shows you which users have made the biggest contributions. Its basically awesome.
This has cool features like showing you the google translate version of any string, so I guess you can check that people are not typing in absolute nonsense (or worse, something offensive), and people can vote on each others contributions etc. I think you can ban people too, if they are being malicious. Its basically a reall well-thought out system for doing exactly what I need.
There is a free trial, and then it costs a monthly fee, but its cheap, and a no-brainer really. TBH the biggest hassle was writing the code to output all my translated data (which is in csv files, and some ini files) into the right format to be imported into their database. It works on the assumption of KEY = VALUE as opposed to some of my stuff which has KEY,VALUE1,VALUE2,VALUE3 etc, for a bunch of different columns of data.
All-in-all it took about 90 minutes to write code to dump out all my text, and then manually submit the whole lot to the website. I also need to import the nearly-done fan-made italian translation I have, and eventually write my code in reverse to slurp up whatever format the site exports to and pump those values back into my own format.
Democracy 4 is, by its very nature, a global game, and its really cool to be able to leverage all the work jeff did regarding unicode, and vector rendering and fonts so we can support some often less-supported languages. I’m especially excited at the thought of Democracy 4 in Korean :D