On the visualization of voter approval distribution in Democracy 4

New blog post!


I hadn’t really thought of this as a need. I’m not for or against it. But if it’s there, it’s there.

I don’t think it’s so complex. In fact I think that it looks better, it makes the graph softer looking.

Making changes is never a bad thing, so I’d say keep working on the UI.


I’m not really sure this will be enough to make understand why wild swings occur but I definitely like this. Great Job.

+a quick suggestion) what about using different colors for approval bubbles in different sides (vote for you or the oppositions)? or maybe apply highlight only to those who will vote for you

1 Like

Interesting… I am worried about color coding, because for example if I used a green bubble for voting for you, and red for not voting, then what if the two party colors are green and red, but the other way around? I could use the party colors, but things get a bit fuzzy when there is a 3 party system, because the vote boundaries may not line up exactly on the bubbles…
Talking of which I need to not show a 50% line that implies 2 parties when there are in fact 3…


I think you might be chasing a bit of a red herring here Cliff. To me at least, the difference between “how much do you like me” and " would you vote for me, yes or no?" is pretty intuitive, and the lines are labeled.

If people are confused by that simple system, maybe making it simpler will help.

I don’t think its so much a case of wanting to further explain the difference between those 2 concepts, but more one of giving greater insight into the distribution. Are 50% of the voters in your side, and 50% in the other side, in 2 big extremist opposing blobs? or is everyone pretty much in the center, with you only just managing to get half of them on-side?
The approval/intentions values are the same in both cases, but one of them is stable, and the other is potential very volatile.

1 Like

New version:

This (optional) blobby chart background is my new version of an attempt to show both the distribution of approval of voters, AND which party those voters are then leaning towards. A real nightmare visualization problem. This is a 3 party country, so 51% approval doesn’t cut it!

Its a nightmare from a color POV too. The blobs are color coded by party, but the two connected lines are simply color chosen on a permanent basis to represent another way to view the data. So tricky to know the right way to do this. Maybe 2 charts side by side instead?

also note that the approval ‘thresholds’ for each party actually change over time, depending if those parties choose to move their policy positions closer or further from your own. This is already modeled, but not explicitly shown to the player before on this screen.


It looks real neat with one chart (although for me, it’s too much info), two charts will only add to the already tiresome visual clutter present in the game.

(I know that “visual clutter” is important)

I think it adds information that helps explain why there are sometimes wild swings in votes. I’m planning on defaulting to this being ‘off’ and hidden, but you can toggle it on, and there will be a tooltip to explain it more clearly.

It exposes some of the subtlety of the voter simulation which is probably being missed by many players. The distribution of voters over the approval spectrum is really important when working out how likely your current support is going to stick around in the next few turns…

1 Like

This is now starting to shine a light on another point I’ve brought up before, and that’s the passiveness of the opposition parties.

In this visual you’ve shared it seems like voter opinions are changing from red to blue, and would presumably change to green if you continue to win support. Fair enough from a gamey perspective, but do real voters actually work like this? Would an average British voter move around between supporting each of the Torries, Labour, and LibDem depending on their opinions of how BoJo handled various issues? I’ve never actually been to Britain (I was going to visit in 2020 but…2020 happened) so I can’t personally say with certainty that this wouldn’t happen, but certainly voters in Canada don’t generally work this way.

This problem starts with the opposition passively soaking up whatever votes the player fails to win instead of being active entities. Really each of the voter blocks should have opinions of each party, with the parties actively vying for those votes, promising them the moon if only they get voted into office.

An example of how this could play out might be a player hoping to win both the capitalist vote and environmental vote, and the global GDP is in the trash can. Implementing all the green policies which don’t hurt the GDP should be enough in such times. However, an opposition party sees that big environmental voter block and environmental policies not implemented, and promises to ban coal. You’d think that with several green policies implemented by the player, and the environment doing well on the player’s watch that the green vote would be an easy pick up, but “what have you done for us lately?” the opposition is promising a coal ban. Meanwhile, capitalists are blaming the global economic crash on the player, and are very sensitive to any policy which would hurt the GDP.

Right there I’ve touched on a few missing mechanics. Voters aren’t sensitive to the timing of policies, voter groups don’t have opinions of specific parties and the opposition doesn’t promise anything. In a 3 party system some smarts would have to be programmed into the 3rd party to figure out who’s being ignored and target them. In my example, socialists are probably up for grabs.


In other words, can’t the opposition do anything? Like even change laws? I know the oppositions have some seats in the parliament, so why not?

When we play, we’re in the majority, so they can’t change laws.

It might be possible for presidents/prime ministers to see unfavorable bills getting passed by rebel MPs from his own party but that would require even bigger changes compared to the ‘active oppositions’ idea. And also there’s an issue regarding adding more parts that players can’t control, which might feel frustrating. So I think the opposition passing/amending laws unlikely to be implemented.

Maybe it can be considered.

The way the games voting-decision code works, is that in a 2 party system, the opposition is assumed to take up a position diametrically opposed to your party on all issues. On a 3 party system, the extra party sits exactly in the middle of the two extremes.

So basically happy people vote for you, unhappy people vote for the opposition, people who are undecided between the two vote for the 3rd party.

I think there are definitely ‘floating’ voters in every country. They normally decide elections. I know lots of people in the UK who have voted labour a few times, and conservative a few times, and I know some people who have voted for 3 different parties over time.
People’s circumstances change, as well as the party policies and reputations changing too.

I understand how the game’s voters work, and don’t disagree that people’s opinions can change over time. What people in general do not do is wildly swing their opinions around with rapid speed as the voters in this game do. I myself am someone who as voted for more than 2 parities in my life, but that is over a period decades. I don’t wake up one day thinking I would support one party, and a completely different party the next day.
I also change my voting habits in response to more than just whether I agree, mildly disagree, or strongly disagree with the current Prime Minister. I assess each of the alternatives, where they are strong and weak, which of their promises are actually plausible and which are election smoke.

In the case of my example above, the player might see a 70% opinion from environmentalists and think they are safe, but in reality environmentalists have an 90% opinion of the opponent promising a coal ban, and therefore the player generally loses that block. Meanwhile, seeing the player going for a powerful and clean economy, but having no capital left to worry about equality, the 3rd party would pick the socialist voter block to target. This would put capitalists in a bind, as they have an incumbent they want to blame for the global economic crash, one opponent saying “screw the economy!” and wanting to ban a major source of energy, while the third party are screaming “eat the rich!”, leaving the capitalists voting for an incumbent party despite only having a 35% opinion of the player.

From player’s perspective it would be weird to lose a voter block which had 70% approval, and win a block which had 35% approval, but these are the sorts of things which happen in real democracy. I’ve been the voter voting for someone I might only actually give a 3/10 to because that’s better than how I’d rate the other bastards.

Which is the heart of the problem. Its vital to the experience of the game, for the player, that the things that happen seem to make sense, or be attributed to their decisions, otherwise players think the game is ‘all just random’. I get players say that already :frowning:

Another blog post on this topic:

1 Like

This is a reasonable point. However, it should be possible to manage this. The stack of voter groups on the left could show relative support instead of actual support by default, with a break down available if the player clicks on the voter group. Asking the player to click on a voter group for details of why the player does or doesn’t generally have this group’s support isn’t an unreasonable ask.

Here’s a screen shot of another game, Crusader Kings 3 again, doing something like this. Explanation will follow the screen shot:

Being a feudal game, succession is a big deal. In this case I have an elective form of succession and am browsing the people who can cast votes. The mouse cursor is hidden in the screen shot, but I’m holding it over the red -13 for one of the voters, and that is causing a window to pop up with shows a break down of this voter’s motivations. Upon further examination, this voter has +127 to vote with me, but +140 to vote for somebody else. It gives a break down of reasons, which are all very feudal Norse types of reasons. It isn’t confusing me with a “+127, but not voting for your candidate” on the surface, it’s giving me a -13 at a glance, and a break down available if I specifically seek it out.