Difference between revisions of "Template:Actual Age"

From RimWorld Wiki
Jump to navigation Jump to search
Line 15: Line 15:
  
 
===Maths===
 
===Maths===
:<code>with 1 = {sum from t=1 to actual_ticks_to_adulthood: 1/(ticks_to_adulthood - t)},<br>actual_ticks_to_adulthood trends to(1-1/e)×adult_age_expressed_in_ticks as the ticks trend to infinity</code>
+
:<code>with 1 = {sum from t=1 to actual_ticks_to_adulthood: 1/(adult_age_expressed_in_ticks - t)},<br>actual_ticks_to_adulthood trends to (1-1/e)×adult_age_expressed_in_ticks as the ticks trend to infinity</code>
  
:<code>with (juvenile_age/adult_age) = {sum from t=1 to actual_ticks_to_juvenile: 1/(ticks_to_adulthood - t)},<br>actual_ticks_to_juvenile trends to (1-1/e^(juvenile_age/adult_age))×adult_age_expressed_in_ticks as the ticks trend to infinity</code>
+
:<code>with (juvenile_age/adult_age) = {sum from t=1 to actual_ticks_to_juvenile: 1/(adult_age_expressed_in_ticks - t)},<br>actual_ticks_to_juvenile trends to (1-1/e^(juvenile_age/adult_age))×adult_age_expressed_in_ticks as the ticks trend to infinity</code>
  
 
==Example uses==
 
==Example uses==

Revision as of 11:36, 30 September 2021

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 difference between the ticks since birth and 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/(adult_age_expressed_in_ticks - t)},
actual_ticks_to_adulthood trends to (1-1/e)×adult_age_expressed_in_ticks as the ticks trend to infinity
with (juvenile_age/adult_age) = {sum from t=1 to actual_ticks_to_juvenile: 1/(adult_age_expressed_in_ticks - t)},
actual_ticks_to_juvenile trends to (1-1/e^(juvenile_age/adult_age))×adult_age_expressed_in_ticks 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