considering a fundamnetal change to the engine

I’m just taking a break from Rock Legend, to mull over the future of the processing for whatever becomes of the sequel to Democracy.
One limitation I’ve looked at is Democracies failure to allow any recursion.
Basically if A effects B and B effects C, C cannot effect A.
This is to prevent the game ‘spinning’ forever as it tries to resolve an endless loop of cause and effect.
But that’s not like real life. Dirk gently ( would remind us of the fundamental interconnectedness of all things, which is one of the principles that inspires the design of the game.

I think allowing recursion would be cool.

Say we increase fuel tax. this will upset drivers, it will reduce the amount of road travel. no problem there.
But the reduction in road travel will mean a drop in congestion. Presumably congestion acts as a limit to road travel, because shorter journey times, means more people will choose to travel by car. More road travel will of course, mean more road congestion.
Obviously, an equilibrium is reached, where the various curves defining peoples road usage at each congestion level and tax level intersect.

what’s the best way to let this happen? I’m sure that in pure maths terms, the best way is to define each relationship as an equation, and to calculate the equilibrium. But that does take into effect time.

Time is a big factor in Democracy, implementing a policy takes time, and I’d like this to be modelled a bit better. I can foresee a situation where there is inertial ‘drag’ that goes beyond the simple policy implementation delay. This sounds like gibberish, let me explain…

Currently, democracy avoids recursion, AND it also ensures everything is resolved within a single turn. If you do not have any policies that are mid-implementation change, there are no dilemmas or events, then it is a stable system, with no effects from a previous turn carrying over. (there is actually some slight deliberate fuzziness) Obviously the game employs events and dilemmas to forceably shake the simulation out of its equilibrium, for gameplay reasons.
So if a policy change ‘A’ affects B, and a change in B affects C, then this all gets resolved when you click the button. if C affects D, E and F, this all gets resolved too. The simulation keeps spinning until everyone is happy.


This isn’t the only way. Each item could have a defined level of inertia.
The only inertia currently modelled is in policy implementation. If I make a tax change, the inertia is very low, and there is a near instant effect on all the ‘first order’ output of the tax change. Other policies, like building railways, take many years, and there is strong inertia on the first order output (traffic congestion).
What is needed, is additional configurable levels of inertia for any intermediate node. Take pollution as an example. If lower road travel means lower asthma, then we may not know for 10 years. But this isn’t under the players control. Right now, there is no way for the game to model that. Modders despair! you can’t do that.

I was initially thinking that breaking the current system of resolving all effects each turn might be the way to do it, but I’m currently thinking that applying configurable ‘inertial braking’ to any node is the way to go.
You could even do it to voters. Most voters have some inertia. In the UK, the Labour party has moved massively to the right, and the liberals, massively to the left, but their voters haven’t quite followed them yet. This would allow you to ‘trick’ your voters into supporting you ‘out of habit’, at least for a few terms :smiley:. This inertial braking could be done various ways, by expanding the capability of a nodes outputs so it would have a ‘bank’ of effects that it would store up, to be released after so many turns.

If you have read freakonomics (, you will be familiar with the theory that the ‘zero-tolerance’ policing policy did not reduce crime at all, but it was due to the legalizing of abortion about 20 years earlier. This is the kind of effect I need to be able to model, right the way through the simulation. The level of inertial braking could itself be a targetable node, so that some policies (like better information through freedom of information acts etc) could actually ‘speed up’ the way in which one node affects another.
ho hum.

Sounds like a fantastic idea, which more realistically models governments. After all, if there’s an election in 2 months, are you more likely to go for a quick fix or a long term solution?

damn just encountered this issue again today when I made income affect car travel, and lifespan affect productivity. there’s a chain of about 20 nodes that now cross.
bugger. must fix it properly now.