[Development] Code Rewrite

I have been working on setting up the 600 AD scenario and decided to attempt improving the graphical location of the Great Wall:

I can now sleep soundly knowing that there is no Great Wall in the southern and western Chinese border
 
Will you rework cores? Cause it seems weird seeing civs like China not having even half of it's "country" cored in later eras.
Not as part of this development step.

China's core area in particular works well in my opinion though. If their entire country was considered its core, China would have a considerable ability to expand outside of it, which would be extremely ahistorical. Historically isolationist or non-expansionist civilizations (and especially China with its large potential population base) need to have smaller cores to reflect their historical behaviour.

Cores are never based on any objective criteria and only on how well they encourage/facilitate historical behaviour.
 
Not as part of this development step.

China's core area in particular works well in my opinion though. If their entire country was considered its core, China would have a considerable ability to expand outside of it, which would be extremely ahistorical. Historically isolationist or non-expansionist civilizations (and especially China with its large potential population base) need to have smaller cores to reflect their historical behaviour.

Cores are never based on any objective criteria and only on how well they encourage/facilitate historical behaviour.

I wouldn't say give all of Modern China as their core, but atleast the central han part (which barely covers the southern capitals)

But i understand the logic behind it.
 
I have made a lot of further progress. All three scenarios work now, and are basically identical to what they are currently looking like on the develop branch.

I also made additional improvements: in the 600 AD scenario, Korea and Japan now start with actual cities and improvements, China starts with control of all of its cities (no flips taking place). I also made some territorial adjustments in the 1700 AD scenario and replaced Wilno with Minsk. Also, I made sure that wonders and cities are displayed as being built/founded by the right civilizations and in (roughly) the right years, similar to what is already happening for religions.

I considered adding civs commonly pointed out as missing from the 600 AD scenario, like India and Ethiopia, but making sure they work as intended would be too much work at this point.

For a bit more detail on how a scenario is set up now:
  • There is a base wbsave file describing the world at 3000 BC without any units, improvements, cities etc. that is used by all scenarios
  • Resources.py, the file responsible for spawning/removing resources and other map features, will apply all map changes that would have happened until the scenario start date
  • There is a second wbsave file for each scenario that only contains the differences of the scenario from the previous two sources, for example cities, units, improvements, but also minor terrain changes specific to the scenario (to move resources around and open city locations etc)
  • There is additional Python code working on scenario specific definitions to setup things that can only be done in Python: adjust territories, great people already created, etc.
In general this is to help making it easier to a) change the base map or resource spawns without having to adapt all scenarios to it, b) add more scenarios without much overhead and without increasing the work required in point (a), and c) transitioning everything to the new map.

At this point, there is mostly cleanup work to do to find errors, and patch over some of the hacks that I used to make this work. That might still take some time but we are on a good track.
 
I considered adding civs commonly pointed out as missing from the 600 AD scenario, like India and Ethiopia, but making sure they work as intended would be too much work at this point.

Pog?! Playable Sassanid Empire hype?
 
Playable Sassanids would be awesome, but introducing another Persia variant whose destiny is to die in the first 10 turns in 19 out of 20 games seems like a lot of work for little reward. Maybe when this mod moves away from scenarios it might be worth it, but right now, I don't think it would be.
 
So, taking the list from above, the new priority list is:
  1. Victory.py refactoring
  2. Conqueror events refactoring
  3. Clean up and improve autoplay
  4. Clean up and improve Rise and Fall code
  5. Transition from scenarios to custom games
With the custom map branch being merged into develop, we have completed the to do list on the road to 1.17. What happens next?

Two things:
  1. I have come across multiple issues with the victory code that cannot be easily fixed. I will therefore take some time to address these issues in a more comprehensive way.
  2. I want to give some time for people to play with these changes and discover and fix more bugs. In the meantime, I have a list of smaller changes that I want to work so I am not wasting my time.
Regardless, the 1.17 release is now a lot closer on the horizon.
 
Last edited:
Back
Top Bottom