Evolution Board Game Played by Computer

Game Parameters:

Run Parameters:

WateringHole Parameters:
Random Species Generation Parameters


Climate Settings:





Output Parameters:

By Trait Bar Chart Averate Rnds Survived By Trait
Average Food By Trait
Average Population by Trait
By Rnd Line Chart Initial Food Available
Food Left Over
Sum of all living species population by Rnd
# Species that Died by Rnd
# Species that Survived by Rnd
Climate
Chart Scale Parameters:


Progress:

Game Rules/Instructions/Documentation:

Original Rules (by North Star Games): Evolution_Climate_rules.pdf

Climate:

Climate mechanics were changed significantly from the original game rules. Originally, food cards revealed at the beginning of each round would step the climate warmer or colder between 9 different “Climate Zones”. Each zone would have a different effect on the game with extreme hot and cold climates having a significant effect on the living species. Additionally, cards called “Climate Events” would be triggered that would cause more dramatic variation in the climate. In this simulation climamte and its effect is calculated using a randomly generated, smooth & continuous function.

Climate Generation:

To create a climate that was smooth and continuous, a function was made to randomly generate Fourier series with a few provided parameters. The Fourier Series is a sum of the function An*cos(n*x + Φn) with “n” starting at 1 and going to the value entered in “Number of Functions” under “Climate Settings”. The amplitude of each function “An” is created by first getting the value of the function (rand_num >0,<1)*(decayRate)^(-n). The decayRate is a free choice that can be entered in “Decay of Fourier Coefficients” under “Climate Settings”. This function allows the option to force (on average) a decrease in the size of An as “n” increases. Additionally, the coefficients are normalized by dividing each by their sum, this way, under fully constructive interference, the value of the Fourier series at any point will be >= -1 and <= +1 (unless the “amplitude modifier” > 1). Each An is then multiplied by the “Amplitude Modifier” which can be entered under “Climate Settings”. The Amplitude Modifier allows the user to “stretch” the Fourier series vertically. The Fourier series can be stretched/compressed horizontally by changing the “#of Rnds Before Function Repeats” which is under “Climate Settings”. Climate can be displayed once generated before or after "Running" the round by running "Print By Rnd Line Chart".

Climate Effect on Species:

Because the climate is a continuous function and not a step as in the board game, a new continuous function to determine the climates effects on the species needed to be made. This function is A*|climateValue| + B*((bodySize - 3.5)*climateValue) where its value is used as the expected population loss for a given species (with some random variation). “A” can be changed from “Average decease in pop…” and scales the effect of the climate on all species. “B” can be changed from “Max additional dec..” and scales the effect of bodySize on population loss: during cold weather a small animal will lose more population than average, and a larger animal will lose less than average (opposite for hot weather). Traits: for every 1 population loss that the trait would have been prevented in the board game now prevents 0.5 population loss on average (because of added randomness). The final logic that determines the population loss is: floor{(rand-num >-0.5, <0.5) + (*above function*) - (sum of trait modifications)}.

WateringHole/Feeding/SpeciesGeneration:

The initial food available in the watering hole is determined each round by averaging ‘n’ # of random numbers which are scaled both by the chosen watering hole size and the climate of that round. Then number of random numbers averaged can be chosen by the user under “WateringHole Parameters”. An example: with climate= 0, WateringHoleSize = 100, & ‘n’ = 10, the watering hole size for that round would be the average of 10 random numbers between 0 and 200. Another example: climate -0.2 (or +0.2), WateringHoleSize = 100, & ‘n’ = 10, the watering hole size for that round would be the average of 10 random numbers between 0 and 2*(1-climate)*WateringHoleSize or 0 and 160.

At the beginning of each round, the list of living species is shuffled randomly, and each species takes its turn based off the lists order. The effect of traits on the feeding resembled the original rules as much as possible with as little adjustments as possible. One of the most important adjustments however was to how a carnivore determines its pray. Unlike in the original rules, defensive and offensive traits effected the probability of a species getting eaten, not a plain can/cannot. This seemed more realistic to me (even an animal that can climb may be within reach of a non-climbing predator if it falls or lives some of its life on the ground) and also made the simulation more interesting (weaker animals were not targeted as hard and even the strongest could be picked of every once and a while.

Unlike in the original rules, the body size and traits of a species cannot change. Additionally, a new species is automatically granted 4 random traits (available to its food type). The body size and food type are assigned based off the probabilities that can be chosen under “Random Species Generation Parameters”.