Organism Statistics

Coordinator
Mar 13, 2008 at 3:56 PM
Edited Mar 13, 2008 at 3:59 PM
I am putting my first stab at a set of Organism statistics up here for comment.

public Genders Gender;
public float MaleBirths = 0.5f;

public uint
// When can start mating
PubertyAge,
// When Size reaches its maximum values
FullyGrownAge,
// When SightRange, MaxSpeed start to deteriorate
FrailtyAge,
// When going to die (nice to know!)
LifeSpan;
public uint GestationPeriod;
public double
// Size at birth
BornSize,
// Fully grown size
FullyGrownSize;

// Distance that can see
public double EyeSight;
// The max speed once fully grown
public double MaxSpeedForwards,
MaxSpeedBackwards;
// Maximum amount of energy
public double Stamina;
// The amount of CPU that the creature is allowed to use
public double Intelligence;

// Amount of damage done when attacking / defending
public double MaxStrength;
// Ability to hit a moving target
public double Coordination;
// Ability to withstand damage done when attacked
public double ArmourFront,
ArmourBack;
// Ability to dodge attacks
public double Agility;
// Distance can reach to attack
public double AttackRange;

// How hard it is for other people to see you (especially when not moving) (0 to 1)
public float Camoflage;

// Angle that can see
public double SightFieldOfView = 2.6;

// The registered name of the author of this creature
// A creature with parents created by different authors has no creator
public string Creator;
// To successfully mate with another creature, they must both be of the same species
public string Species;
// A creature with parents of different Subspecies has no Subspecies
public string Subspecies;
// The stats of this creature's mother and father
public OrganismStats Mother, Father;

Statistics are fixed at birth (based roughly on those of the Organism's parents) but the effect of a statistic changes depending on the state of the Organism. These effects should be an interrelated combination of statistics so that every statistic has some positive and some negative effects. In this way it will not be necessary to impose an arbitrary limit on any statistic, but simply to allow users to tune their statistics to make their Organism thrive in its particular niche. As a guiding principle, if one statistic is looking too beneficial then we should look at nature to see what effects of that statistic or what other statistics affect on that statistic mean that it is limited in real creatures.
For example:
Weight is increased by Size, Strength and Armour and reduces Speed, Coordination and Agility
Size increases Stamina and EyeSight range but reduces eyesight granularity
Energy increases Strength, Speed and the amount a creature needs to eat

Please add your suggestions and comments here.
Developer
Mar 14, 2008 at 6:05 PM
Stamina seems to be also energy.
Do we need attributes to track:

UInt32 EnergyStoredMax; // Creature is "full" after having eaten.
UInt32 EnergyStoredCurrent; // Is the creature satiated, hungry, tired?
UInt32 EnergyGivenWhenEatenLive; If something eats us, what is their reward?
UInt32 EnergyUsedWalking;
UInt32 EnergyUsedRunning
UInt32 EnergyUsedCombat
Coordinator
Mar 17, 2008 at 2:47 PM
I have added a page to the Wiki showing where different types of Organism data are stored.

Stamina is the equivalent of your maximum energy level, current energy level is part of OrganismData (called Energy). I simplistically assumed that EnergyGivenWhenEatenLive would be the same as Energy, though this is obviously not true, it is something that will need adding to OrganismAbilities. We need a formula for working out the energy used by movement, I have a simple version of this in at the moment that does not take account of the speed at which the Organism is moving. We also need something to work out the energy used when attacking.

What I am more interested in here is the static, "genetic" data that we should store about an Organism. Are there any more properties that should define what attributes an organism is born with? Are there any of the ones that I've suggested that should actually be derived from other properties?
Mar 17, 2008 at 3:28 PM
I would wonder about listing all the properties and trying to decide what goes where and would favor a behaviour driven system where you spec out how you want the organism to behave. That would drive out what specfications it needs in order to accomplish the tasks associated with a behaviour.

For example, I can think off the top of my head GrowthRate. Should all organisms grow at the same rate? Maybe not (at least in a real system different organisms have different metabolic rates at which they process nutrients). You could probably sit down for half a day and rattle off dozens of little niggly things like this but not come up with them all. However if you took the approach of "how do I want an organism to behave when feeding" that would drive out attributes and behaviours it needs to accomplish that. It would also allow you to build out the organism state in an incremental way.