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

Voting Systems DLC for Democracy 4

I don’t think I’ve even officially announced that I am doing this, so any games journalists reading this can consider this an announcement I guess :D. I am working on an expansion pack for my political strategy game Democracy 4, and that expansion pack will be called…

Democracy 4: Voting Systems

As you can clearly guess, its an expansion that is focused on the way people vote, and on how you campaign in the election. Its mostly a features, rather than just content expansion, so it includes new policies, but also a bunch of changes to expand on that part of the game associated with the election campaign and the voting. Here is a rundown of all of the new stuff I’m working on:

New Policies

There are a whole bunch of these, including the minimum voting age, a scary ‘maximum voting age’, rules on corporate donations to parties, and state funding of parties, bans or limits on donations, robo-calls and TV ads during the campaign. There are 11 new policies in total. Some of these will already be in place at the appropriate setting, like the minimum voting age, for all countries, and the compulsory vote policy for Australia

Campaign Focus

A year before the election, you will need to pick a single metric, from a pre-defined list, to be the main metric that will feature in your campaign literature and campaign advertising in general. This is the game equivalent of Clintons ‘Its the economy, stupid’ or Tony Blairs ‘Tough on crime, tough on the causes of crime!’. The idea here is that you pick a metric that you think makes you look good, and hope that nothing turns bad with regards to that metric before election day. Once chosen, a new effect will run from that metric, to all the voters. If you improve the metric…great but if for whatever reason it turns bad, there will be a big negative impact.

Once the campaign focus is chosen, its highlighted with a small red icon in the corner of that metric on the main UI, and also highlighted when viewing that metrics details. Once the election is over, assuming you won…the focus goes away.

Voting Systems

The majority of countries in the game use some sort of ‘proportional representation‘, but some use a constituency based or electoral-college system, that is called ‘first past the post‘. The two systems can give very different results, and you can now pass a law to change from one to the other. Proportional representation results in higher turnout, and can favor smaller parties in 3 party countries. You can expect to see more coalitions in countries with proportional representation.

Campaign Style

Immediately before the election, you have the option of tweaking how your campaign is run. You have a slider that lets you select anything from an optimistic, safe and respectable campaign, right through to a scandalously cheeky dirty-tricks style negative campaign that tries to smear your opponent. The extent to which such a campaign works (rather than backfires) is partly dependent on how trustworthy you are in the eyes of the electorate. Depending on the outcome, the effectiveness of your campaign spending can be increased or reduced.

Better Polling Data

A new option will appear on the polls screen. Currently, in the base game, this simply shows the voting intention of all voters, along with the current approval rating for all voters. This will get an extra option, via checkbox, that lets you change this to see the likely voters, rather than the whole electorate. Some people are more likely to vote than others, so viewing likely voters gives a better impression of the actual result. Toggling between the two will also allow you to see if you should take action to increase (or cynically maybe decrease) turnout in the election.

…All of this is coded, and implemented, and in the DLC that I am currently testing. Testing an expansion pack can be a pretty long process, because I need to ensure it all works, that its balanced and that it adds something cool to the game. I then also need to get all of the text for the new content translated into every language we currently support (which is a lot…and Arabic is coming too!).

This will likely take me a few weeks, and then I’ll be getting it into the hands of the Democracy 4 players! Hopefully all of these additions sound quite cool. Its certainly been interesting working on it. I know that a lot of people think I should add states/constituencies to the game, and support a whole bunch of different types of PR voting systems. I understand the appeal, but its likely overcomplex for a game like this. Most people are not *that* interested in the pros and cons of different types of PR, and certainly very few people know the political characteristics of all 50 US states AND all 650 UK constituencies and so on…for every country :D

Yet more refinement and complexity regarding party politics in Democracy 4

I am currently working on some voting systems DLC for Democracy 4. In doing so, I have carried out a lot of testing, and balancing, and evaluating, and have just encountered something that I think is lacking in the game. Or more precisely…wrong…or at least imperfectly modelled.

Take as exhibit A this chart (on the rhs) from the game showing the distribution of happiness (0 at bottom, 100% at top) of all of the simulated voters. Because this is in debug mode it draws 2 exciting lines, which are showing the voting thresholds in the game, drawn across the chart in red and blue


These (hidden from the player) thresholds are used to decide what party voters vote for, have sympathy for, and may even become members or activists for. In a very simple 2 party system, there is just 1 line at 50% (to start with..) in a 3 party system, they are at 40 and 60%. Below 40% = opposition party, 40-60% means centrist party, above 60% means the player party.

Canny maths experts have already spotted that this is not an even split. TRUE! but thats ok, because it represents the fickleness of a first-past-the-post electoral system. If you change it to PR, the game swaps to a 33/66% split, with each party representing one third of the available ‘approval space’ in the game. This is how we represent the fact that voters are more likely to find a party they can support at the ballot box if a more proportional system is used, with fewer wasted votes…

…also I need to point out that the system is not that simple! Over time, the position of the opposition parties moves towards that of the center-of-gravity of the electorate. So if, for example, all the voters are very unhappy, those thresholds will move down, as the opposition parties position themselves so they can win more votes. If you can imagine a new ‘gravitational center’ line in the middle of all the voters, both that red and blue line are getting sprung (to an extent) towards it.

So far so good. Thats how the game works right now.

BUT. Two things are amiss here, and I am now working on improvements. For one thing… in the real world, parties change their positions in order to WIN VOTES not to improve the ‘average approval’ of themselves. In previous blog posts I have labored the point that average approval and voting intention are different things entirely! I have edited the games code for 3 party PR-systems to take this into account. Now… in a 3 party PR system, the opposition parties move towards the gravitational center of voting intention (not approval) only for opposition voters. Let me explain with examples:

The UK has 3 parties of size: Conservative, Labour and Lib Dems. In the old system, the labour and lib dem voters would be essentially moving to a policy position that kept everyone in the UK as happy with them as possible, while still remaining vaguely rooted in their principles. However, in this new system, the Labour/Lib Dem parties will still gravitate towards this position…but the dividing line between those parties will now only be affected by the firm voting intentions of non conservative voters.

Under the old system, a policy change by the non-centrist opposition party (labour), that seriously upset conservatives, but made lib-dem voters happy… would maybe not be adopted, because the average approval of ALL voters (including conservatives) was being measured. Under the new system, labour policy totally ignores the hardcore conservative voters, and is only concerned with winning votes from the lib dems, and more importantly…winning VOTES…not just a change in opinion. So for example, a policy position that has no impact on right-wing lib-dems, but may well win over voters floating between lib-dem and labour…will get adopted.

(Of course the game abstracts this, and you don’t get to see oppositions literal policy positions, but its all represented in the way these thresholds move.)

Why does this matter? Because by making this change, a more sensible position is chosen for that red line. What that means is, under the new algorithm, with a PR system those red and blue parties are more likely to be equal sized, and we are more likely to get coalition outcomes. This is EXACTLY what you would expect under a system of proportional representation.

So thats one change… and something I am definitely still testing, and will be specific to PR, and thus the new DLC. However, when working on this I realised a fundamental misconception about party membership that is unbalancing the game.. <drumroll>

If you look at that chart again (in fact I’ll repeat it with some arrows..) you will see that the 3 parties also have a center point, which is used to determine how much someone believes in the party:

These locations determine how big the membership of your party gets. Someone close to the blue arrow is likely to join the bluie party, someone close to the green arrow is likely to…etc. See the problem?

Yup, the system is total bullshit. The centrist party has its membership center slap bang in the middle of its political sphere, but I placed the other 2 parties at the extremes. At the time, this made sense to me, but now… Ha. no. This makes no sense. Think about political parties on the edge of a mainstream political spectrum. Where are the members and activists? They are likely to be in the same position as the members in the centrist party: At the location CLOSEST to the center of policy position for that party. The voters shown at the red and green arrows are not diehard loyalists! they are the extreme libertarians or fascists or communists who consider the party they vote for to be a reluctant watered down compromise! They are actually the voters on the verge of ‘wasting’ their vote on a fringe party. No! The correct positions should be:

In other words, we should have some red party members here, and ok… maybe not a green party one yet, but certainly more likely than under the old system.

This is a fundamental coding screw up and design miscalculation. Its not exactly critical, but I strive for accuracy of my political modelling. This change will affect non-DLC vanilla games too. If you have been playing Democracy 4 and bemoaning the fact that only the middle party in 3 party countries ever gets any members, you are not wrong to do so. I’ll fix this for the next update.

Thoughts on potential Democracy 4 expansions / DLC

Democracy 4 has been released from early access over a month ago, and has had 2 big updates since then, and further updates to the game, especially regarding balance tweaks, are definitely coming. However, I am a big fan of the ‘expansion pack’ model of the business, because I think it has a number of positives:

  • It allows players who are only casually into the game to play an approachable and simple base version
  • It gives scope for players to choose which expansions to get, based on their level of interest
  • It means that I can learn from peoples’ feedback on the base game and produce the sort of extra content people might want

Of course, the big question is exactly what part of the game to expand upon or add to. There are a bunch of ideas floating around in my head, and I thought it only sensible to get those ideas out there in the wider world to canvas feedback from real players of the game, so in no order at all, here are some idea.

DLC idea #1 Voting Systems

We already did an electioneering expansion pack for Democracy 3, but all of that content is already included for free in the base game for Democracy 4. However, I think there is a lot of scope here. For example, right now the player has no influence in direct terms, on the voter turnout. We could add policies to encourage voter turnout, like information campaigns (which may or may not benefit you, depending on your electorate). Perhaps polling data could show what the result would be like when polling only likely voters! Also we could model voting reform, so whether or not to lower (or even raise) the voting age, whether party donations are capped, or can be anonymous, can come from corporations or foreign nationals…

There could also be some modeling of campaigning tactics. I like the idea of the player having to choose from a list of different metrics (GDP, Unemployment etc) on which to focus a year before the election, so the player has to be wary of what they drew attention to in their campaign literature. We could also allow attack ads, at a possible risk of backfiring.

Also, some countries like the UK ban political TV ads. We could have this policy, and also maybe a ban on robocalls. We could also have limits on who can stand in elections (US president must be US born etc), and if the state funds political parties at all.

Electoral reform: the fine print matters : Democratic Audit

DLC idea #2 Situation Room

This one would expand on the terrorist threat element already in the game. I’ve spent a fair bit of time on this idea. Basically it would introduce time-limited decisions to the game, where a serious threat or event takes place and the president (you) has to make a decision on what to do RIGHT NOW, in a ‘the clock is ticking’ style. This would mean no time to consult a lot of data, and a gut decision.

An example dilemma is shown below. I think it would be interesting if the advice and intelligence given in these sudden events would be dependent on how involved your intelligence/security network was, so it would be harder for liberal democracies, and easier for more authoritarian states, to add some tension between liberal principles and security:


I think of this idea as a sort of ‘west-wing situation room meets 24’ style political thriller expansion, where the player has to deal with lost of situations that with any luck, the general voting population never even hear about. We could have dirty bomb threats, suicide bombers, espionage from other countries, and the possibility of using illegal measures covertly to protect the security of the country.

In game-mechanic terms, I keep coming back to the idea of this involving what are in effect spruced-up dilemmas, but with a timer, and no opportunity to gather extra dat and come back to them.

DLC idea #3 Dirty Tricks

This would basically be a corruption, scandals and dirty tricks expansion, where the game effectively tempts you to be corrupt, with potentially bad consequences later. We can all sadly come up with tons of ways in which we could model this. I know one game (might be tropico) actually used to let you put money in your own private account, and we could do a similar thing here, literally taking money in exchange for policies :D

I think there is a lot of scope here. You could order the secret service to look for embarrassing or compromising information on opposition leaders or campaigners. You could literally bribe the press to give you better media coverage. There would be an option to just flat out lie about some government statistics, to prosecute whistleblowers, to threaten journalists and so on.

We have a very slight element of this in the game already whereby general media censorship means that political media spin events are more likely to be perceived as positive. However, I can imagine it being an option where an event clearly backfires but you can then choose to flat out threaten any journalists that reported on it.

Intimidation at polling stations by violent gangs ordered indirectly by you would also be included here.

Perhaps we could track both your own morals (on a good -> corrupt axis) along with your private bank account, as things that a player could choose to focus on for their own satisfaction :D. I can imagine an interesting situation where players who decide to play a game completely fairly and with principles would be tempted before a difficult election to bribe some journalists “just this once” etc.

Justin Trudeau anointed by Richard Nixon - at four months old | Canada |  The Guardian

DLC idea #4 Country Pack

Pretty self explanatory. I think there are a bunch of interesting countries that could be added to the game. Switzerland strikes me as interesting, as does Poland, maybe also Turkey and perhaps a country like Honduras. I think the goal would be to pick interesting countries, not just ones with the most players, and take the time to represent them as well as possible, so doing a lot of research into the economics and political environment for each one. That probably involves a bunch of new policies and situations and dilemmas for each country to represent their specific challenges.

West Bay Beach - Roatan Island, Honduras - West Bay Beach, West Bay  Traveller Reviews - Tripadvisor

Anyway… I have not decided yet, and am not currently working on DLC, but I was interested to get anybody’s first reaction to which direction to head in. I’ll check comments here, and post a twitter poll at

Another tweak to voter approval visualization

I blogged very recently about adding voter approval distribution data to the polling screen in Democracy 4. This is going into the next game update, but I’ve changed it since then and thought I would explain why. The aim has been to give the player some insight into the actyual distribution of voters over the whole range of approval values, rather than giving just two numbers at any point in time (which in a 2 party system are the ‘average’ of all voter approval values, and the percentage of voters for whom their approval exceeds 50%).

For reasons discussed before, these numbers, while interesting give no insight as to whether your current support is soft or reliable, so they are imperfect information.

Consider an example. The player is 2 turns before an election, their approval is 60% and their voting intention is 85%. The player has a fairly socialist-leaning electorate, but they are trying to move towards capitalism, and one of the steps along their desired path to this, is to privatise state industries such as rail. They are trying to decide if they should go ahead and privatise rail right now.

In one scenario, their support is pretty solid. The voters approval is distributed pretty evenly across the spectrum. Obviously an approval drop across the board will result in everyone slipping down slightly, but enough voters sit really high in the distribution that the voting intention will happily stay at 70-75% even with a drop in average approval.

In another scenario, their support is super-soft. Basically almost all of the voters are in a single big blob of approval hovering around the 60% mark. The unpopular privatisation might shift that whole bubble low enough to actually drop voting intention below 50%, losing the election

Right now, the player could go check the parties screen with the chart on the right giving them clues about the distribution, or the ‘everyone’ happiness distribution, which shows the same thing, but the data was never present on the polling screen, and more relevantly, it was only ever shown as an instant snapshot. Here (below) is my final implementation on the polling screen.

This is a new ‘optional’ view, thats turned off by default. (The checkbox to the right turns it on or off, and a tooltip over that area explains what it shows). This now shows the distribution (bubble sizes in the y axis) over time (the x axis, with the right being the present day).

I spent LOTS of time trying out different methods to show a bunch of stuff here. Initially I just had the background blobs, but they were all one color (feint green). I then realised that what was actually helpful here was to show what party the voters were going to vote for, so I added some feint red lines to show ‘voter thresholds’ for each party. This needs explaining:

In a 2 party system, the code is simple. Voters check their approval, and assuming no external factors (electioneering stuff, or party membership), they vote for the player if approval >50%, and for the opposition otherwise. In a 3 party system, there is a middle party, so you are looking for 60% approval to get their vote, with 40-60% approvals going to the middle party. However… its not quite that simple!

These thresholds MOVE over time. The game takes into account the fact that parties shift their position. This is the famous overton window, coded into party strategy. In short, if you are winning, the other parties move their (unstated and hidden for game purposes) positions in policy terms closer to your own. That means those 40% and 60% thresholds become more like 45% and 65%, or even closer. As you would expect, the reverse is also true. When you are doing badly, the opposition parties move further from you, so those thresholds can drop as well. This has been in the game for ages, but was not easily viewable by the player.

The chart above is actually fiendishly complex, because it displays a 2 axis chart with 2 lines showing different things over time (voting intention and average approval) and ALSO a backdrop that shows a four dimensional data set describing voter approval distribution and voting intention!

How come four dimensions? Firstly time (x axis) secondly approval (y axis), then the distribution of voters in each of 20 vertical groups to show the distribution of approval (size of each blob) and lastly the voting intentions within each blob (the colors of the blobs, or partial colors, indicating which party each voter would choose if the election happened that day.

No wonder its hard to get the GUI right :D

Anyway… it seems arcane, but it is actually all in the chart. You can see if you look closely that the point where voters switch from voting red, to voting blue, does not stay a fixed line over time, its actually changing in response to the popularity of my own party, which is based on the voters approval. (note this is a 3 party system, parties are red, blue and green, with green being the player).

If it sounds tricky to imagine as UI its even more annoying to code. I coded it as a sparse rendered system, instead of just generating, for example, 3 different colored circles for every x axis and y axis position. Even if you don’t draw them, that means 20x20x3 = 1,200 sprite objects being created, despite the fact that only a fraction will need ever drawing (most points on the chart have one single color circle, or are even unpopulated entirely.

Anyway, I think it adds some helpful extra data to the screen. I probably need to improve the tutorial/guides/in-game help at some point to explain it all though :(

On the visualization of voter approval distribution in Democracy 4

My politics game, Democracy 4, has a user-experience issue. Its not critical, and its less prevalent in Democracy 4 than any of the other games in the series, and I am working on fixing it, but it remains an issue nonetheless. the fact that this issue is based on real world phenomena does not make it any less frustrating for a player who experiences it.

Some background: The game is a ‘run the country simulation’, that models an entire country, and the electorate are represented by 2,000 simulated AI voters. Those voters go through a very complex web of calculations to decide what they think in the years that you are in power, and at election day, they cast their vote either for the player, or for one of the opposition parties. In a two party system, the decision is quite simple, as players who have a . 50% ‘approval’# of the government vote for the player, and the rest vote for the opposition.

During the game, the player can regularly check on how they are doing regarding polling, by checking out a screen that shows two graph lines. One of these is voting intention, and the other is average approval. This is a NEW thing for Democracy 4, because previously we would only show voter intention. The difference between the two is incredibly, incredibly important. Let me explain why.

An individual voter has a fluid measurement of their approval, in that it ranges from 0% (Hardline hatred of the government) to 100% (fanatical dedication and loyalty to the government). However, for most people they likely hover closer to the center. Not many people would sacrifice their lives for, or against a government in a western democracy. So people’s opinions float around. For many, that float is always above 50%, or always under 50%, but depending on how the government is doing, a lot of people might float below and above that line, and pollsters call these people ‘floating voters’.

Here is the problem: Although approval is fluid, voting is binary. On election day, assuming you vote, you vote for the government, or you do not. You don’t vote ‘more’ or ‘less’ for the government. You either ticked the box or did not. Thus, its important to realize the distinction between the two systems of measurement. The graph above illustrates the difference. Voting intentions in blue are basically a binary poll of yes/no on the government. The green line is the aggregate of asking everyone to rate the government on a 1 to 100 scale. These are MASSIVELY different.

Take an extreme example, where everyone in the country thinks alike. The government has been…ok, but a bit corrupt, a bit untrustworthy, but the economy is doing well. On balance, the consensus opinion is that the government rates as 49 out of 100. When everyone is asked in a survey, they give the same answer, so average approval is 49%. Not bad. However, if forced to vote now, everyone would naturally vote for the opposition, so the election result would be 0% votes. Absolute defeat.

Then the next turn (3 months in game time), a surprise event happens. Scientists make a breakthrough in quantum computing, thanks to a science budget you raised 2 years previously. This good news bolsters the stock market, some voters feel a bit more wealthy, and this boosts GDP just a tiny fraction, pushing wages up just a tiny fraction. Everyone in the country is just a tiny bit more satisfied with the government, hardly noticeable. Maybe 2% difference?

Now its election day, and again, if answering a survey people give very similar results to before, but just slightly better. Average approval has nudge upwards just a fraction to 51%. Barely noticeable on the green line. However, the election is again binary, so given their new scores, every single voter in the country votes for the government. An overwhelming landslide of historic proportions. Total electoral dominance. The blue line shoots to the top of the graph!

This is why the two-lines are introduced into Democracy 4, because in theory, this could really happen. A slight change in voter happiness can yield a massive electoral win…or unexpected crushing defeat. And when I have paragraphs of text to explain how it works…this makes sense. The trouble is, I’m not there to give post-election analysis to every player who thinks the game is broken because of a sudden reversal of fortunes…

In practice, this problem is not overwhelming, because the voters in the game are very sophisticated AI models of widely varying people. Voters might be in 10 different voting groups, each at different levels of membership, and are being pulled in many directions at once, as you can see in the focus group screen:

…so in most cases, for most players, at most elections, this does not occur that wildly. But nevertheless, its possible, and a good game would never surprise the player with what seems like an unfair loss, or an unfair win. They have to be able to see immediately what is going on.

Funnily enough, all the information the player needs to understand this is already in the game, its just not necessarily in the right place. For example, I present to you the parties screen:

This represents approval as the Y axis (chart on the right btw…) and plots every single AI voter. Depending how distributed they are, the effect we describe may vary. In my nightmare 49/51% example, every voter is on the same horizontal line just moving up and down. In this case, the voters ARE very clumped, and just below the point of approval where they would vote for me, as this is a 3 party country, and they are tempted by the middle party. Right now, this is dreadful news for me, and awesome news for the middle (blue) party, but given the voters are so similar, if I can shift my policy positions closer to those the voter’s prefer, I should get an overwhelming avalanche of voters tilt my way!

This is also something you can see if selecting the ‘happiness distribution’ button on the ‘Everyone’ voter group. This time its represented on an X axis, where the left is 0 (angry) and the right is 100% (happy):

This is the same game, with the same voter distribution, and as you can see, in this case (start of game for the UK), its pretty clumpy. BTW the color of each dot represents happiness. Those green voters are happy, but they need to be super-green to vote for me, as there are 3 party options.

So all the information is kinda there, but people still don’t understand those wild swings in voting outcomes. As a result I have decided to try and represent it another way, in another position. I think that in general, players are expecting to get all their polling information from that earlier polling screen, so if I am going to represent voter approval distribution I need to do it there. PLUS, ideally I need to show it changing over time, not just a snapshot in time which is how its shown on these two graphs. Here is my current solution:

Same chart as before, but the background is now filled out with some extra information in the form of green blobs. These are presenting the voter approval distribution at each point in the game. The larger the blob, the more voters it represents. Over time, the blobs both move and change size, as the opinions of the electorate change.

The ideal situation for the player is to have substantial big green blobs way above the line, so they represent committed voters who are unlikely to suddenly drop below the line. If you have the green and blue lines above the threshold…BUT… there are large green blobs right on the line… then this represents fickle voters whose opinions might easily shift against you.

In code terms, each turn I’m asking each voter what their approval is, and sticking them in to one of 20 vertical ‘buckets’ of popularity. Each of these is a blob. Then in the chart I’m showing the number of people in each of those buckets by the size of the circle. Its more complex than it sounds because you need to work with circle areas, not radius, and also do some pre-processing to detect the largest blob, so you can then scale everything so the blobs are as large as possible (for legibility) while also being in proportion to each other and thus accurate.

The HUGE challenge is, as ever, not technical but UI/UX related. Does this help? does this make sense? and given that players often do not read tutorials, guides or walls of text, is it conveyed clearly enough just by the phrase ‘approval distribution’? Does the red approval line need its own key to explain what it is? (I think maybe so).

As always I’m interested to hear what people think. There is a complexity cost in adding this (it complicates this graph, potentially distressing newer and more casual players), and I need to be confident that the increased visual complexity is offset by the greater insight for the player into what is happening out there in opinion poll land…