Deciphering the 'game-speeds.xml' file...

Piglet The Brave

Chieftain
Joined
Feb 6, 2025
Messages
19
This is a post looking for help with modding the Age lengths, but I should warn people that the file potentially related to this looks like a nightmare - I can't blame anyone for taking one look at it and thinking "yeah, sod that".


One common complaint about the game is how the individual Ages go over too fast even when set to 'Long' in the advanced settings, and on Marathon game speed the ages seem to go over in the same amount of turns as Standard speed... which clearly can't be right.

Unfortunately looking at the game-speeds.xml file (location Civ7/base/modules/base-standard/data/...) there are so many entries for different things I can't work out what would actually effect the Ages length.

I will quickly go over the four different 'categories' within the file (each one containing multiple entries however),

---
Category 1

<GameSpeeds>
<Row>
<GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
<Name>LOC_GAMESPEED_MARATHON_NAME</Name>
<Description>LOC_GAMESPEED_MARATHON_HELP</Description>
<CostMultiplier>300</CostMultiplier>

GameSpeeds and the CostMultiplier clearly just affect the turn times for building and researching (depending on game speed), so I'm pretty confident this category isn't needed for Age length.

--
Category 2

<GameSpeed_Turns>
<Row>
<GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
<MonthIncrement>120</MonthIncrement>
<TurnsPerIncrement>280</TurnsPerIncrement>
<Age>AGE_ANTIQUITY</Age>

GameSpeed Turns and the monthly increment / turns per increment could potentially be related to Age length as it mentions the Age in the entries, the problem is there are two entries for each game speed (per Age) and I can't understand why. Also this setting clearly has some maths going on because if you just set it to random values and try to start a new game it gives an error message while loading the map and goes back to the main menu (mod error) - so they must need to be calculated in some way, and without knowing more about the setting I think it is difficult to guess.

--
Category 3

<GameSpeed_Scalings>
<Row>
<GameSpeedScalingType>MARATHON_HALF</GameSpeedScalingType>
<GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
<ScalingType>SCALING_HALF</ScalingType>
<DefaultCostMultiplier>200</DefaultCostMultiplier>

GameSpeed Scalings have a cost multiplier again (when compared to Standard speed value of 100) so that might be easier to increase for modding, but I don't know what the setting actually refers to. Also there is a HALF and SLIGHT entry for each game speed, but there is nothing in the game (that I know of) which refers to half scaling or slight scaling. Could this be related to how research techs get more expensive later in the game to stop everything been researched too quickly? If so I don't know how you would set it to Half or Slight scaling as there is no actual in-game setting for this.

--
Category 4

<GameSpeed_Durations>
<Row>
<GameSpeedScalingType>ONLINE_HALF</GameSpeedScalingType>
<NumberOfTurnsOnStandard>5</NumberOfTurnsOnStandard>
<NumberOfTurnsScaled>5</NumberOfTurnsScaled>

And finally there are entries for something called GameSpeed Durations, but when it mentions the 'number of turns' (on standard or scaled) I'm not sure what those number of turns relate to - the 'duration' of what? (for example). It can't be score victory or something simple like that as the turn values are too low. It also focuses solely on the HALF game speed scaling type from the previous listings (there are no entries for SLIGHT in this category) which makes it even harder to work out what these entries might be for.

If anyone with modding experience (or Civ experience) would be willing to have a look through the file to see if they can piece together some sort of meaning that would be greatly appreciated.

Thank you for reading. :)
 
Last edited:
My guess is that the speeds apply a scaling factor to the age progression increments that are in victories.xml.
I was trying to find out because of the problem with Marathon that people are reporting but I couldn't pinpoint it and the speed value you found are not explicit as you noted.
I also tried to find if the Abbreviated / Long could help but I can only find references to the config button on not to its effect in SetupParameters.xml
 
My guess is that the speeds apply a scaling factor to the age progression increments that are in victories.xml.
I was trying to find out because of the problem with Marathon that people are reporting but I couldn't pinpoint it and the speed value you found are not explicit as you noted.
I also tried to find if the Abbreviated / Long could help but I can only find references to the config button on not to its effect in SetupParameters.xml

Thanks for the heads up about the victories.xml file - I had originally only looked at the one in the main data folder, which didn't seem to include much that could be edited. However I just noticed there is another victories.xml file in each of the specific Ages folders and those files contain a lot more numbers to edit, so I might mess around with that.

Yes I also couldn't find any useful reference to the Abbreviated / Long settings in the files. I started wondering if the HALF and SLIGHT stuff in the gamespeeds.xml file might've been referring to those (by another name), but that's probably not the case.
 
So I've made some progress in terms of working things out, but unfortunately the overall conclusion is that the developers need to patch the game.

After lots of testing it would appear that the main GameSpeeds setting is the only one that affects Age length, which suggests Age length is now tied to this setting too (along with building the research times).

These are the entries in the file...

<GameSpeeds>
<Row>
<GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
<Name>LOC_GAMESPEED_MARATHON_NAME</Name>
<Description>LOC_GAMESPEED_MARATHON_HELP</Description>
<CostMultiplier>300</CostMultiplier>
</Row>
<Row>
<GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
<Name>LOC_GAMESPEED_EPIC_NAME</Name>
<Description>LOC_GAMESPEED_EPIC_HELP</Description>
<CostMultiplier>150</CostMultiplier>
</Row>
<Row>
<GameSpeedType>GAMESPEED_STANDARD</GameSpeedType>
<Name>LOC_GAMESPEED_STANDARD_NAME</Name>
<Description>LOC_GAMESPEED_STANDARD_HELP</Description>
<CostMultiplier>100</CostMultiplier>

As you can see they did a 50% jump from standard to epic (100 to 150), but marathon is three times the standard speed.

The problem is any value over 199 doesn't seem to work for the age length (yet it does work for building and research times), and when a value above 199 is used the game seems to default back to the standard game speed Age length, despite still allowing the higher building and research times.

So for example if you use a value of 300 the game will accept it and give you three times the research and building times of standard, but it will not accept it for Age length and instead the Age lengths will default to standard speed.

And the reason Marathon speed Age length doesn't work is because the game is using a value of 300 for this setting.

What a nightmare.

It would be better for the game to have two separate values to adjust (one for Age length and one for Research/Building times) but for some reason they are combined, which wouldn't be too much of a problem except they don't actually work properly.

In conclusion if you want the longest Age lengths, then 199 is the value to use, but keep in mind this will also affect building and research times.
 
Wouldn't you just change the Month Increment and Turn Increment in Gamespeed_Turns?
 
No I thought that too, but it doesn’t seem to affect age lengths. Monthly increment seems to affect how many years pass per turn (starting at 4000BC in antiquity and counting down to 3975BC onwards each turn) but the age percentage progress in the top right corner doesn’t change (it doesn’t get faster or slower per turn). It seems to be a setting simply to keep the visual in-game dates in check for each game speed, for realism purposes.

Turns per increment I still haven’t worked out yet, but I have adjusted it a lot and it had no affect on age progression speed either. :-(
 
I was going to post a new speed between Epic and Marathon and stumbled into your post.

MonthIncrement and
TurnsPerIncrement

Do modify the Age, but not the age progression, instead it modifies the amount of years between each turn. It's just visual, so you don't finish antiquity at the start of industrial era "age".

Scaling seems to be tied to the Abbreviated/Long setup, but I still need to confirm this.

And GameSpeed_Durations, I don't know, I couldn't understand what it does.
 
Scaling seems to be tied to the Abbreviated/Long setup, but I still need to confirm this.

This makes sense now that you mention it - because if the age was going to take a bit longer (on the long setting), then the research and building times might need to be further increased (slightly) to match up. Unfortunately there doesn't seem to be anywhere (at all) to edit any specific numbers for the abbreviated or long settings - if there was that would almost be a workaround to get proper marathon length ages... for example if Long was adding 10% Age length (in a file somewhere) we could change that to 50% or whatever we wanted.

Thanks for looking at this stuff too - I've been driving myself a bit mad trying to work it all out.

Just going to copy one of my posts from Steam forum below as it shows some of my game speed number testing...

I did mulitple tests and simply counted how many turns it took to get to 3% Age Progression - I repeated these tests a few times to make sure it was accurate.

Here are my results,

standard speed / normal age length - 3% Age Progression by turn 6
standard speed / long age length - 3% Age Progression by turn 7

epic speed / normal age length - 3% by turn 8 (increase of 2 turns over standard speed)
epic speed / long age length - 3% by turn 10 (increase of 3 turns over standard speed)

(Modded) epic speed / normal age length (with 199 in gamespeed file, up from 150) - 3% by turn 10 (increase of 4 turns over standard speed)
(Modded) epic speed / long age length (with 199 in gamespeed file, up from 150) - 3% by turn 12 (increase of 5 turns over standard speed)

Any modded value above 199 causes the game to bug and then default to standard speed age lengths, which is why marathon doesn't work as it uses a gamespeed value of 300,

(broken) marathon speed / normal age - 3 % by turn 6 (same as standard)
(broken) marathon speed / long age - 3% by turn 7 (same as standard)

I'm still looking at the files but I think we need a patch quite badly, and we also need more advanced options in the game/map setup.
 
It seems they fixed the marathon bug in this update.
 
This makes sense now that you mention it - because if the age was going to take a bit longer (on the long setting), then the research and building times might need to be further increased (slightly) to match up. Unfortunately there doesn't seem to be anywhere (at all) to edit any specific numbers for the abbreviated or long settings - if there was that would almost be a workaround to get proper marathon length ages... for example if Long was adding 10% Age length (in a file somewhere) we could change that to 50% or whatever we wanted.

Thanks for looking at this stuff too - I've been driving myself a bit mad trying to work it all out.

Just going to copy one of my posts from Steam forum below as it shows some of my game speed number testing...

I did mulitple tests and simply counted how many turns it took to get to 3% Age Progression - I repeated these tests a few times to make sure it was accurate.

Here are my results,

standard speed / normal age length - 3% Age Progression by turn 6
standard speed / long age length - 3% Age Progression by turn 7

epic speed / normal age length - 3% by turn 8 (increase of 2 turns over standard speed)
epic speed / long age length - 3% by turn 10 (increase of 3 turns over standard speed)

(Modded) epic speed / normal age length (with 199 in gamespeed file, up from 150) - 3% by turn 10 (increase of 4 turns over standard speed)
(Modded) epic speed / long age length (with 199 in gamespeed file, up from 150) - 3% by turn 12 (increase of 5 turns over standard speed)

Any modded value above 199 causes the game to bug and then default to standard speed age lengths, which is why marathon doesn't work as it uses a gamespeed value of 300,

(broken) marathon speed / normal age - 3 % by turn 6 (same as standard)
(broken) marathon speed / long age - 3% by turn 7 (same as standard)

I'm still looking at the files but I think we need a patch quite badly, and we also need more advanced options in the game/map setup.

You can see the actual Current Age Progress & Max Age Progress by hovering over the Age%.
age_progress_civ7.png


Max Age Progress seems to depend on only 2 things, Game Speed & Age Length.
  1. On Standard speed x Standard age length, each Age ends after reaching 200 points.
    1. There are the same number of Max Age Progress points per Age.
  2. Game speed scales this using the same percentage it uses on science/culture/production.
  3. Age Length, on the other hand, scales by 120% for Long & 80% for Abbreviated age lengths.
  4. E.g., on Marathon speed x Long age length, each Age ends after reaching 200 x 300% x 120% = 720 points
Only 2 things seem to add Age Progress points.
  1. Each turn adds 1 point. You start with 1 point on Turn 1.
  2. In addition, points are added once any civ reaches a Legacy Path Milestone. The number of points depends on Game Speed & the current age. Also, note that there are three Milestones per Legacy Path.
    1. On Standard speed x Antiquity Age: +5/5/10 points per Milestone.
    2. On Standard speed x Exploration Age: +5/10/20 points per Milestone.
    3. On Standard speed x Modern Age: +5/10/0 points per Milestone. The recent patch changed the final Modern Age Milestone to yield 0 points instead.
    4. Points-per-Milestone scales (rounded down) with Game Speed. E.g. using 66%, Quick speed x Exploration Age: +3/6/13 points per Milestone.
  3. Age Length does NOT seem to affect Age Progress points
Unfortunately, I don't know yet where these basic numbers (200 Max Age points for Standard / +5/5/10 points per Milestone, etc) are stored.
 
Also if a player is defeated it increases the points. And by quite a lot:
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED" Points="40" AgeType="AGE_ANTIQUITY" MapSizeType="MAPSIZE_TINY"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED" Points="30" AgeType="AGE_ANTIQUITY" MapSizeType="MAPSIZE_SMALL"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED" Points="25" AgeType="AGE_ANTIQUITY" MapSizeType="MAPSIZE_STANDARD"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED" Points="20" AgeType="AGE_ANTIQUITY" MapSizeType="MAPSIZE_LARGE"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED" Points="15" AgeType="AGE_ANTIQUITY" MapSizeType="MAPSIZE_HUGE"/>
 
You can see the actual Current Age Progress & Max Age Progress by hovering over the Age%.
View attachment 719311

Max Age Progress seems to depend on only 2 things, Game Speed & Age Length.
  1. On Standard speed x Standard age length, each Age ends after reaching 200 points.
    1. There are the same number of Max Age Progress points per Age.
  2. Game speed scales this using the same percentage it uses on science/culture/production.
  3. Age Length, on the other hand, scales by 120% for Long & 80% for Abbreviated age lengths.
  4. E.g., on Marathon speed x Long age length, each Age ends after reaching 200 x 300% x 120% = 720 points
Only 2 things seem to add Age Progress points.
  1. Each turn adds 1 point. You start with 1 point on Turn 1.
  2. In addition, points are added once any civ reaches a Legacy Path Milestone. The number of points depends on Game Speed & the current age. Also, note that there are three Milestones per Legacy Path.
    1. On Standard speed x Antiquity Age: +5/5/10 points per Milestone.
    2. On Standard speed x Exploration Age: +5/10/20 points per Milestone.
    3. On Standard speed x Modern Age: +5/10/0 points per Milestone. The recent patch changed the final Modern Age Milestone to yield 0 points instead.
    4. Points-per-Milestone scales (rounded down) with Game Speed. E.g. using 66%, Quick speed x Exploration Age: +3/6/13 points per Milestone.
  3. Age Length does NOT seem to affect Age Progress points
Unfortunately, I don't know yet where these basic numbers (200 Max Age points for Standard / +5/5/10 points per Milestone, etc) are stored.

So are you saying the percentage in the top left corner and the 200 points goal are the same thing?

Sorry if I misunderstood, but I thought the percentage part was effectively a max turn limit where (if reached) the age will definitely end, and the points were a goal or target which could be hit to end the game earlier (like a victory).

I also noticed in the files that 1 turn = 1 point (as you mentioned above), but that didn't make sense to me as surely that would end the game too early when combined with the bigger points for hitting milestones etc, it just sounds like too man points awarded if the goal is 200 (depending on speed).


The '+5/5/10 points per Milestone' are stored near the bottom of each individual ages Victories.xml file as the 'AgeProgressionAmount',

<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_1" LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE" RequiredPathPoints="3" AgeProgressionAmount="5"/>

<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_2" LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE" RequiredPathPoints="6" AgeProgressionAmount="5"/>


<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_3" LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE" RequiredPathPoints="10" AgeProgressionAmount="10" FinalMilestone="true"/>


I tried doubling the 'RequiredPathPoints' for each part and it adding a lot more 'notches' on the legacy bars, however I didn't try editing the AgeProgressionAmount yet.
 
The age as a progression limit. Say 200points. Then you get points by turn count, milestones and defeating players. The percentage is whatever value you are at out of the limit.
So on standard if you would do nothing all game (and everybody also) then it would last 200turns.

You mentioned it yourself. With some rounding to take into account and I suppose turn 1 doesn't count
Here are my results,
standard speed / normal age length - 3% Age Progression by turn 6 => 5/200 = 0.025 ~ 3%
standard speed / long age length - 3% Age Progression by turn 7 => 6/240 = 0.025 ~ 3%
 
The age as a progression limit. Say 200points. Then you get points by turn count, milestones and defeating players. The percentage is whatever value you are at out of the limit.
So on standard if you would do nothing all game (and everybody also) then it would last 200turns.

You mentioned it yourself. With some rounding to take into account and I suppose turn 1 doesn't count
Here are my results,
standard speed / normal age length - 3% Age Progression by turn 6 => 5/200 = 0.025 ~ 3%
standard speed / long age length - 3% Age Progression by turn 7 => 6/240 = 0.025 ~ 3%
Interesting. But where I can change Age Progression Points? Anyone knows?
 
You can see the actual Current Age Progress & Max Age Progress by hovering over the Age%.
View attachment 719311

Max Age Progress seems to depend on only 2 things, Game Speed & Age Length.
  1. On Standard speed x Standard age length, each Age ends after reaching 200 points.
    1. There are the same number of Max Age Progress points per Age.
  2. Game speed scales this using the same percentage it uses on science/culture/production.
  3. Age Length, on the other hand, scales by 120% for Long & 80% for Abbreviated age lengths.
  4. E.g., on Marathon speed x Long age length, each Age ends after reaching 200 x 300% x 120% = 720 points
Only 2 things seem to add Age Progress points.
  1. Each turn adds 1 point. You start with 1 point on Turn 1.
  2. In addition, points are added once any civ reaches a Legacy Path Milestone. The number of points depends on Game Speed & the current age. Also, note that there are three Milestones per Legacy Path.
    1. On Standard speed x Antiquity Age: +5/5/10 points per Milestone.
    2. On Standard speed x Exploration Age: +5/10/20 points per Milestone.
    3. On Standard speed x Modern Age: +5/10/0 points per Milestone. The recent patch changed the final Modern Age Milestone to yield 0 points instead.
    4. Points-per-Milestone scales (rounded down) with Game Speed. E.g. using 66%, Quick speed x Exploration Age: +3/6/13 points per Milestone.
  3. Age Length does NOT seem to affect Age Progress points
Unfortunately, I don't know yet where these basic numbers (200 Max Age points for Standard / +5/5/10 points per Milestone, etc) are stored.
I don't know where to edit Age Length. I want to increase Long option. 120 is too fast.
 
Back
Top Bottom