A Random World History Simulator Part 5

in #steemstem5 years ago (edited)

I'm back, with more simulation talk! For any newcomers or returners looking for a refresher, part 4 already started with a recap of the main points of parts 1-3, so it should be a good way to refresh your memories or get up to speed fast!

A Random World History Simulator

Never ask a polity about its size...

So, if you've got a good memory, or followed my suggestions and read at least part 4, you may have noticed something I haven't explained yet. Namely, why are there sometimes really large polities in areas of smaller sized polities?

For example, in the year 500 in the video at the end of part 4 (the example showing the four-way data split at the end), there is roughly in the middle of the map a large polity that dwarfs its immediate neighbors:

PolitiesMap4500.png

But, as explained in parts 2-4, a core feature of my simulation (especially as opposed the original article's model), is that polity size is now limited by the mean ultra-sociality in an area. You would expect then that, as is the case in most of the world, that polities are roughly bordered by polities of similar size. And polity size only gradually increases between the more and less civilized areas of the simulation.

That is indeed what the behavior as described causes. But that is, of course, not very historical behavior. There were many instances where good leadership or other advantages allowed hegemonic powers to appear, that dwarfed the size of their neighbors. The Roman Empire, the Chinese dynasties, the Mongols.

In order to simulate this, the simulation includes a "government modifier." This is essentially domestic factors abstracted to a simple numerical bonus (or in some versions, a malus). Each step of the simulation, all multi-tile polity's have an equal chance of gaining one of these random bonuses. The chance per polity is very small, but with hundreds of polity's and thousands of steps, there will regularly be polities who win this 'government' lottery. Which should be understood as coming under the rule of an Alexander, or Caesar, or Genghis Khan.

I've gone through various iterations of the chances and sizes of these bonuses, because one thing they have made very clear, is how finicky an evolutionary model is. What do I mean by finicky? Let's see what happened when I was unsatisfied with the amount and size of empire building in previous versions of the sim (like in the video's linked so far), and decided to try and fix that by being more generous with the government bonuses:

Note, this result actually came after I tried to tone down a previous result, but my modifications instead had the opposite effect... to put it mildly... This run of the simulation saw the biggest polity I've ever seen in any version of the sim I've run.

Going over the three factors that caused this super-imperialism is, I think, a good way of explaining how I've tried to encourage civilizational development, and also how balancing an evolutionary system like this is tricky.

Imperial Runaways

When talking about the trickiness or finicky nature of an evolutionary system, I don't mean to say this is necessarily harder or more complex to code. Rather, I'm making a distinction between this kind of system, and a deterministic system.

A deterministic system, in my own words, would be one where in order to get the civilizational development I'd want, I would've simply hard-coded for each tile a continual increase in its civilizational level per step of simulation, dependent on factors such as altitude or military technology or whatever else I'd want to constrain it by.

This would give me precise and direct control over how civilization develops.

But, from the start my interest in this simulation has been that it was evolutionary, not deterministic. What this means is that, the core mechanics give the development of civilization an evolutionary advantage in specific circumstances, but do not specifically prescribe when, where, if, and how fast civilization evolves. This is best illustrated by another video of a run of the simulation, from a version a bit older than the video above:

As you can see, this is in fact the first run of the simulation on a different map. This map is a cold world, the main effect of which is that, as described in earlier parts, agriculture spreads slower in cold climates.

Which is why I ran this simulation for 8000 years. It simply took that long for civilization to rise to an interesting level. The reason being the main evolutionary constraint on civilization: a requirement of a large number of connected tiles engaging in a large number of conflicts.

A constant balance in making this simulation has been that, on the one hand I want it to produce historical state-like behavior, which includes a steady increase in civilization levels. But on the other hand, I want it to keep its roots as an evolutionary system. That is, civilization is not guaranteed to evolve because it is hard-coded to always evolve, it is only guaranteed to evolve because the maps I'm running it on satisfy the constrains of the evolutionary process. A colder world, like the above, experiences a slower evolutionary process. And extreme worlds, like worlds with very little habitable land, or very cold and mountainous worlds, may never develop any civilization at all.

In this context, let's look at the four factors currently regulating and encouraging civilizational development.

Note, just as a refresher, the source of any civilization, that is of a specific ultra-social trait, is always simply the random mutation of the civilizational 'DNA' that each tile has. The below factors are the factors that encourage these randomly mutated genes to spread, and thus for civilization to develop beyond the base mean determined by the mutation factors.

Polity Attacks

This is the factor already discussed extensively in previous parts. When a polity attacks and conquers a tile, the conqueror has a chance of exporting part of its civilizational 'DNA', overwriting the corresponding segment of the vanquished tile's 'DNA'. Because the chance of conquest is higher based on civilization, this process favors civilizational development.

(As a side-note, in later versions I added a small cheat to this process, whereby I gave activated ultra-social traits a chance of 'resisting' being deactivated when its DNA gets overwritten. It's only a 50% chance currently, but it means this process favors civilization even more than in the raw evolutionary process.)

The problem though, is that this core process negatively interacts with any process meant to create more stable state-formation. When a polity stops being able to conquer, when it stabilizes at a certain size, it also stops exporting civilization. Thus any historical behavior that lowers the number of Polity Attacks also lowers the evolutionary push for more civilization.

This latter problem made a huge difference when I first implemented stable polity behavior. That is why, in order to compensate, I added in a second form of attack:

Colonization Attacks

Colonization Attacks are a secondary kind of inter-tile conflict, that happens between tiles inside the same polity, instead of between tiles of different polities.

At its core, it functions similar to Polity Attacks. The attacking tile has an attack power, based on its civilizational level, and the defending tile has a corresponding defense power. If the attacking tile wins, it has a chance of 'colonizing', which sees it export its civilizational 'DNA' and shift the culture of the colonized tile towards its own (a shift commensurate with about a decade of normal cultural drift).

However, I did not want this colonizing system to mean that the polity system was now just for show, with inter-tile conflict happening in a similar manner regardless of the circumstances on the polity level. So Colonization Attacks are more constrained than Polity Attacks in multiple manners:

  • A tile may launch Colonization Attacks half as frequently as it may Polity Attacks. (And if able to do both, will only launch Polity Attacks.)
  • A Colonization Attack is a pure tile-vs-tile check, unlike the Polity Attacks which are a polity-vs-polity check.
  • A Colonization Attack generally requires a 2-point difference in civilizational levels just to have a chance of succeeding. (Whereas a Polity Attack may potentially succeed even if the attacker is weaker than the defender.)
  • A Colonization Attack cannot discover military technology.

With these constraints, Colonization Attacks are a counter to decreased conflict due to stable polity- and empire-formation, but not to the extend of making Polity Attacks obsolete (in addition to Polity Attacks being necessary to form the polities within which Colonization Attacks are allowed).

To add an additional boost, there's a mechanic where each step capital tiles get a 'free' Colonization Attack against 5% of their subject tiles, chosen randomly.

Capital Privilege

Since even with the colonization system in place, civilization forming was still too low, I decided to add another mechanic to boost civilization forming.

Capital tiles of large polities get a change to the mutation chances of ultra-sociality in their 'DNA'. The larger the polity, the higher the chance of unactive ultra-social traits mutating into active ones.

The justification is that the administrative and political needs of a large empire, would naturally put pressure on capitals to become more complex.

However, this had a bit of an unforeseen effect when combined with the fourth and final factor...

Government Bonus

This is where this part comes full circle. How the aforementioned government bonus works is fairly simple:

A multi-tile polity has, each step, a random chance of being awarded a government bonus. This government bonus is a modifier (x1.5, x2, x3, etc.) that is added to polity total ultra-sociality in the Smax function, i.e. the functions calculating military strength and disintegration chance.

This means that when it comes to military attacks and expansion, a polity with a government bonus will behave as if it has times X more ultra-sociality than it actually has.

Every step, the government bonus decays a small amount, till it's back to normal.

By itself, this should not really impact the chance of evolving more ultra-sociality... except that the previous factor created a link between polity size and faster civilizational development.

The video that I opened with is the result of this feedback loop in action. Large government bonuses led to large polity's, whose capitals then developed civilization much faster. Through colonization and polity conquest, this ultra-sociality spread... which meant that the next time a polity in that area got a government bonus, it would be able to grow even larger, letting its capital develop even more ultra-sociality...

This is something that would not have happened in a deterministic system, where the civilizational development was completely under my control. Instead, in this tricky and finicky system, my control is in trying to constrain and encourage evolution down a certain path. And sometimes, as you could see in the above video, a system meant to gently encourage, hooks up with other systems and leads to unexpected surprises...

PolitiesMap0940.png
(This is still the largest polity I've seen in any version of the simulation I've run!)

Thanks a ton for reading all the way to the end! I'm still working on the sim, and splitting time between that, writing these posts, and other obligations. Hopefully part 5 will be a bit less of a wait.

Next: Let me put it, diplomatically...

Sort:  

Pretty cool again!

Resteem!

Thanks, great to hear you're enjoying these posts!

It's a quality content...... Thanks for sharing this..
@tipu curate

Posted using Partiko Android

No problem, thank you! ♥



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

Congratulations @jd4e! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 2000 upvotes. Your next target is to reach 3000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!