Template:Actual Age

From RimWorld Wiki
Revision as of 11:26, 30 September 2021 by Cheldra (talk | contribs) (→‎Explanation)
Jump to navigation Jump to search

Returns the actual age at which an animal will reach a life stage age listed in its def files.

Parameters

  • adult_age - this has to be the adult_age listed in the animal's def xml, or seen in the in-game information window
  • juvenile_age - if a second parameter is given, the number returned will be the actual juvenile age. This number must be found from the defs files.

Formula used

actual_juvenile_age = (1-1/e^(juvenile_age/adult_age))×adult_age

actual_adult_age = (1-1/e)×adult_age

Explanation

If the values from the defs files were to be believed as-is, you would expect to see (0.3333-0.25)*60 = 5 days of juvenile stage for horses. However, the time they actually spend in game as a juvenile is only about 2 days. This method accurately predicts this.

The reason for this weirdness is because the amount the growth stat increases each tick is proportional to 1/ticks_to_adulthood, where ticks_to_adulthood is simply the def file's adult_age expressed in ticks. The consequence of growth updating this way is that initially, the growth stat will increase slowly, and then as the animal approaches 100% growth, it increases faster.

Maths

with 1 = {sum from t=1 to actual_ticks_to_adulthood: 1/(ticks_to_adulthood - t)},
actual_ticks_to_adulthood trends to(1-1/e)×ticks_to_adulthood as the ticks trend to infinity
with (juvenile_age/adult_age) = {sum from t=1 to actual_ticks_to_juvenile: 1/(ticks_to_adulthood - t)},
actual_ticks_to_juvenile trends to (1-1/e^(juvenile_age/adult_age))×ticks_to_adulthood as the ticks trend to infinity

Example uses

  • Horse adult: {{Actual Age|0.3333}} -> 0.21068578097385
  • Horse juvenile: {{Actual Age|0.3333|0.25}} -> 0.17587203545609
  • Fox juvenile: {{Actual Age|0.3333|0.1}} -> 0.086392694342281