Possible Lifeforms In Outerspace


Abstract: Outline of the possible lifeforms in Outerspace. This is far from biologically accurate. However, I've tried to organize it to encapsulate most of life as we know it.

Each lifeform has the following properties:


Static Properties:

Properties that will never change for each lifeform.


Description - A string made up of descriptions from the list outlined in a few pages, excluding what's in italics. For example: Plant – Symmetrical – Small Similar Nodes (Bush Like)


Random Seed - A value from 0 to 9 that will never change for each lifeform and will be used in by functions to determine the lifeforms other, procedurally generated properties consistently.


Procedurally Generated Properties Using the Random Seed:

Properties that will always be the same for every life form but are not stored in system memory.


Size – A single from .1 to 50, in cubic meters. The player may only pick up lifeforms that are 25 cubic meters or less.


Intelligence – A value from 0 to 100. Zero being bacteria or fungus, 100 being human smart (or dolphin smart) The meaning of the max value is splitting hairs. Intelligence will determine other dynamic properties.


Planetside Dynamic Properties:

Properties that will generated by algorithms and altered by player behavior during planet side exploration. These will be stored in memory during planet exploration, but will be disposed of after you launch.


Health – From 0 to 100. Zero being dead, 50 to 1 being stunned.


Behaviors – Plants and fungus won't have any behaviors. Animal behaviors are as follows, the default being wander.


Dead / Stunned: Pretty self explanatory. If it's stunned, it only regenerates it's health.


Wander: The animal will move in an arbitrary line. If there is a random hit, about .5% a “turning” flag will be set and the animal will change direction until a next 10% random hit, when the “turning” flag becomes unset. Figuring on testing every tick, that means the animal will change direction about once every 3 seconds, and continue to change direction for about six ticks, or 1/10th of a second.


Run: The animals direction will be tested each frame. It will turn to match the angle of the ray that extends from center screen and passes through it's body, towards the edge of the screen. In other words, directly away from the terrain vehicle. It's speed will increase to the maximum. It will then call wander overloading it's speed and direction parameters with those set above. An animal's chance of running will be determined by how close to stunned it is and it's intelligence. Smart animals will run sooner.


Attack: Basically, the opposite of run. Swarming herds of monopedial high producers!! look out! Once the creature gets close enough, they have a chance of hitting one of your players. The higher their intelligence, the greater the chance of a hit. Each hit will have a correspondingly horrifying description attached to it. “Mr. Niggles was coated with small searing fibrous spines for 20% damage!”


Eat: High producers will eat fungus and planets nearby, moving towards them at ½ their maximum speed (again overriding wander) and removing them from the lifeform array. They will pick a random type that is nearby and choose it as a favorite. Animals with the eat flag set are .001% likely to change each frame unless they are fired upon or run out of food. High producers have a 30% chance of getting eat set as their default action, and a .005% of getting it changed to their current action each tested frame.


Life Form Actions:

Basically, all that any life form can do is move, attack, get stunned, lose it's health, regenerate it's health or die. These are important things


Damage to Characters - The damage an animal does to a player is determined by it's size and intelligence and the weather and gravity of the current planet.


Damage to Lifeform - The amount of damage the a life form takes is based on it's size, and intelligence.


Regeneration: - If their life is below 100, lifeforms regenerate. The health of an animal will regenerate + .01 every 1tick of game play as long as it's above 30. So, if you stun an animal to 40, you have about 17 seconds to pick it up.


Dead / Stunned / Alive - The animal is dead if it's health is 0 and stunned if it's health is less then 50.


Velocity and Direction - the (maximum) speed of an animal is determined by it's size, it's producer class and if it flies. Flying animals move at double speed. The default speed of each animal is ½ of it's maximum speed. The animal's speed will be changed +/- by a factor of it's current speed each frame. The slower it's current speed, the greater potential speed delta each frame. Animals that are attacking or running always increase their speed by the maximum speed delta each frame. An animals direction is in degrees, and will change during the wander function.


Animal Descriptions:

Key: (Parts in italics are descriptions that will be outside of the game itself, but perhaps available to the player in a readme for clarification) The life forms are indexed iteratively and referenced by a integer key, [n]

Group

Rough Description

Sub Description (Likeness) [n]


Fungus / Simple Cell

Symmetrical

Distributed (Single Celled) [0]

Singular (Mushroom Like) [1]

Asymmetrical

Distributed (Coral / Sponge Like) [2]

Plants

Distributed

Fine Fibrous (Lichen Like) [3]

Course Fibrous (Mossy Like) [4]

Large Fibrous (Grass, Weed Like) [5]

Asymmetrical

Mostly Similar Nodes (Leafy) [6]

Mostly Different Nodes (Flowering) [7]

Symmetrical

Large Similar Nodes (Tree Like) [8]

Small Similar Nodes (Bush Like) [9]

Aquatic

High Producer (Moves Fast)

Symmetrical (Fish Like) [10]

Symmetrical (Crab Like) [11]

Symmetrical (Cephalopod Like) (Octopus) [12]

Low Producer (Moves Slow)

Asymmetrical (Snail / Slug Like) [13]

Asymmetrical (Jelly Like) [14]

Animals

Low Producer (Low Metabolisms, Slower Moving, Cold Bodied)

Bipedal (Walking) [15]

Tri-pedal (Walking) [16]

Multi-Pedal (Crawling) – (Like a Centipede) [17]

Crawling (Snake/Worm Like) [18]

Amorphous (Jelly Like) [19]

Flying (Floating Mass) [20]

High Producer (High Metabolisms, Faster Moving, Warm Bodied)

Mono-pedal (Hopping) [21]

Bipedal (Striding) [22]

Tri-pedal (Striding) [23]

Multi-Pedal (Crawling) [24]

Flying (Bird Like) [25]


Lifeform Tables:

Descriptions of lifeform types are listed in order of likely hood for each given range of elevation. The most likely choice is no life, listed first.


Earth / Water / Ice Planets:

Water (0 to .39)

Shore (.39 to .58)

Veggies / Mid Elevation

(.58 to .78)

Highlands

(.78 to .92)

Mountains

(.92 to 1.0)

No Life 98.3%


- Aquatic Animals

(1.0%) [10 – 14]

- Distributed Plants

(0.4%) [3 – 5]

- Asymmetrical

Pants

(0.2%) [6 – 7]

- Any Fungus

(0.1%) [0 – 2]


No Life 98.8%


- High Producer

Animals

(0.5%) [21 – 25]

- Low Producer

Animals

(0.3%) [15 – 20]

-Any Fungus

(0.2%) [0 – 2]

-Any Plants

(0.2%)[3 – 9]


No Life 97.7%


- Any Plants

(1.1%) [3 – 9]

- Any Animals (0.6%) [15 – 25]

- Any Fungus

(0.6%) [0 – 3]


No Life 99.1%


- Low Producer Animals

(0.5%) [15 – 20]

- High Producer Animals

(0.2%) [21 – 25]

- Any Plants

(0.1%) [3 – 9]

- Any Fungus

(0.1%) [0 – 2]


No Life 99.7%


- Low Producer Animals

(0.1%) [15 – 20]

- Any Plants

(0.1%) [3 – 9]

- Fungus

(0.1%) [0 – 2]



Gas Planets:

Min (0 to .39)

Low (.39 to .58)

Mid (.58 to .78)

High (.78 to .92)

Max (.92 to 1.0)

No Life 98.3%


- Low Producer

Floating Mass

(0.5%) [20]


- High Producer

Bird Like

(0.4%) [25]


- Plants All

Distributed

(0.4%) [3 – 5]


- Fungus

Asymmetrical

(0.4%) [2]


No Life 98.8%


- Low Producer

Floating Mass

(0.4%) [20]


- High Producer

Bird Like

(0.4%) [25]


- Plants All

Distributed

(0.4%) [3 – 5]


- Fungus

Asymmetrical

(0.4%) [2]


No Life 97.7%


- Low Producer

Floating Mass

(0.6%) [20]


- High Producer

Bird Like

(0.6%) [25]


- Plants All

Distributed

(0.6%) [3 – 5]


- Fungus

Asymmetrical

(0.5%) [2]

No Life 99.1%


- Low Producer

Floating Mass

(0.3%) [20]


- High Producer

Bird Like

(0.2%) [25]


- Plants All

Distributed

(0.2%) [3 – 5]


- Fungus

Asymmetrical

(0.2%) [2]

No Life 99.7%


- High Producer

Bird Like

(0.1%) [25]


- Plants All

Distributed

(0.1%) [3 – 5]


- Fungus

Asymmetrical

(0.1%) [2]


The Lifeform Class: (UNFINISHED)

With the above description, we can begin to designate a lifeform class with the following data structures:


2D array of Bytes

To store our life forms, we'll use a two dimensional array of bytes.

That is the smallest data structure I can think of to get away with this. Size of the member data is a consideration because the array will have to be large.


Since life tends to move, we cannot use their coordinates as a random seed for the procedural creation of the lifeform's dynamic properties. The seed will need to be stored in the byte data member, along with the index for the lifeform type.


The 100 and the 10 spot in the byte will be reserved for the lifeform data. The singles spot will store the lifeforms procedural seed. In other words, a byte value of 246 will be a flying bird like creature with a procedural seed of 6. A byte value of 6 will be a Distributed (Single Celled) fungus with a procedural seed of 6. Members of the array with values larger then 250 will be empty (no life there)


Construction Rules, Where Do We Put The Little Critters:

The first step will be to populate the array of bytes with values. We will use algorithms based on the tables of probability above. Additionally we will assign the random seed at this point. This will only be done once, the first time the player orbits the planet during his current game. The array will be persistent data that will be stored after that, the data will be serialized and stored in some type of binary file. Some type of record will be needed to determine if the player has orbited said planet.

Construction Rules, Lifeform Dynamic Properties:

All dynamic will be generated procedurally using a consistent random seed for each lifeform.

The lifeform's size will depend on 2 things, the mass of a planet and it's gravity. Planets with higher gravity will have smaller lifeforms. Planets with higher mass will have smaller lifeforms.



For each Lifeform on the map:

(needs updated.)

A.) Changing the Lifeform Object Prior to Rendering it

  1. Update it's health based on if being attacked and normal regen. -----> pass into two.

  1. Update it's action, including stunned or dead. ----------> pass into three.

  2. Update it's position or attack if it's close enough.


B.) Destruction of a Lifeform Object If Necessary Prior to Rendering it

  1. Remove it from the reference arrays.

  2. Add the lifeform to cargo / or it just got eaten.


1I say tick. I mean frame. We are doing 60FPS as maximum. In actuality I will test each frame, not tick. But < 60FPS may be possible on slower systems.