Procedural Generating Creatures
For ProcGene I wanted to add some challenge to the players' adventure. The first thing that came to mind was incorporate enemies, which the player has to defeat before it can progress further.
I first started looking at what games used procedural generation to create creatures.
No Man’s Sky
The first game that came to mind with procedural creature generation was No Man’s Sky.
No Man’s Sky is a game developed by Hello Games which boasts its' infinite universe with endless possibilities for planet, creature, and plants generation.
Creature Properties
Before diving into how creatures are generated, we’re going to take a look at the properties a creature has.
An animal creature, or fauna, has the following properties;
Property | Explanation |
---|---|
Scientific Name | The name of the fauna. Is made up by the Species and Family names. |
Species | The name for the specie. Is different for all planets. |
Family | The family name. Is different for all planets. |
Genus | Is a characteristic of a fauna. Determines where a species spawns. |
Gender | Determines the sex or gender of a fauna. |
Age | Measurement of how old the fauna is. |
Diets | Determines what the fauna eats. |
Bait | The type of the food the fauna needs to consume in order to become friendly or tamed. |
Height | Measurement of how tall the fauna is. |
Weight | Measurement of how heavy the fauna is. |
Ecosystem | Determines in what ecosystem this fauna can be found. |
Activity Period Behaviour | Determines at what time of day the fauna is active. |
Temperament Behaviour | Determines the predatory and defensive behaviours. |
Creature Generation
In No Man’s Sky creatures all have a blueprint and some tags. The blueprint consists of several bones which can all be altered during generation.
Tags are used to specify creature type, behaviour type, accessory type, etc.
The system that is used by No Man’s Sky is called Blueprint System.
This system can move and scale the bones of any blueprint, set materials and add accessories, all based on rules. Some of which are the climate, environment, distance to the sun, etc.
The steps used by the Blueprint System are as follows;
- A random blueprint is selected.
- Accessories are added. The kind of accessories picked is based on the tags the creature has. This might be the snout type, horns, etc. During this step new tags are added via the accessories.
- Layering is added. This might change the skin or scale type and colour of the creature.
- Bone scaling is applied. This affects the body size and changes limb sizes relative to the body size.
- Behaviours are added. This changes the walk animation, and voice pitch.
Conclusion
The way No Man’s Sky generates creatures by simply changing the size and positions of bones is great. If your engine can easily do this, you can create unique looking creatures pretty effortlessly. This also means you only have to create a few basic blueprints with nicely worked out bones for the system to be able to create several different creatures.
I looked at a lot of comments and blog-posts about the creature generation where most of them were disappointed by the creatures that get generated. Some say this is because the interaction with the environment is too shallow, or non-existent. Others say it’s because of the rules being too restrictive, which results in creatures barely looking differently from ones you’ve encountered on a previous planet.
A big takeaway from this is that if this method is chosen, there should be enough uniqueness to the blueprints and accessories and to make sure the rules aren’t too restrictive.
Starbound
Starbound is a game much like No Man’s Sky, as it also does a lot of stuff with procedural generation. I believe at some point it used procedural generation for everything, except for the main quest-line. Over the years it shifted away from this method and incorporated some pre-made monsters into the game, alongside the procedural generated monsters.
For this research I will only look at the procedural generated monsters.
Creature Properties
Monsters can have these characteristics;
Characteristic | Explanation |
---|---|
Size | The size of the monster. Can be either Large or Small |
Aggression | Determines when a monster attacks the player. Can be Aggressive (Attack on sight) or Passive (Attack when attacked) |
Locomotion | How does the monster move. Can be Bipedal (two legs), Quadrupedal (four legs), Flying (wings) or Fish (fins) |
Based on these characteristics you get different monster classes. Each monster class has different values for their Health and Melee Damage.
Large monsters have more Health than Small monsters, and Aggressive monsters deal more damage than Passive monsters.
Apart from Health and Melee Damage, Monsters can also get Skills. Skills can be attacks or abilities that the monster can perform.
Skills are made up of the following properties;
Property | Explanation |
---|---|
Damage Type | What kind of damage this skill deals. |
Monster Type | What kind of monster can perform this skill. |
Attack Type | Whether this skill is either Ranged or Melee. |
An example for a Skill is “Bloody Vomit"; The creature can shoot a stream of blood at the player, dealing Poison damage.
A monster is made up of multiple monster parts. These parts differ per monster type, and the monster type also determines what parts it can gain;
Type | Parts |
---|---|
Quadrupedal | head, body, legs and tail |
Bipedal | head, body, legs, arms and sometimes a tail |
Flying | head, body, wings |
Fish | head, body, fins |
These parts are, for what I could find, purely cosmetic.
Creature Generation
My guess would be that the generation goes something like this;
- A monster type is chosen.
- Parts based on the monster type are chosen.
- Multipliers for stats are applied based on the planet tier.
- Colours are applied based on the planet.
- Skills are assigned based on the monster type, parts and planet.
Conclusion
I think the system Starbound uses to generate monsters could fit pretty nicely into ProcGene. All you have to do is specify points for parts to fit in, much like how Items are generated in Borderlands, and let a system pick parts to place into these points.
Phoenix Point
Phoenix Point is a turn-based strategy game which has the player fight against procedurally generated mutants which adapt to their strategies. The mutants that the player has to fight against are created by the Pandoravirus. This virus reshapes creatures, including humans, into hideous mutants.
Creature Generation
Mutants that are made by the Pandoravirus will be procedurally generated on two basic levels;
- Mutants will draw upon a pool of available, interchangeable body parts.
- Mutants can change in size and shape.
The Pandoravirus consumes biological material as it moves into different regions. When this happens the virus will begin to create different kind of mutated solders based on the existing biological material it had, and the newly found ones in this new region.
The virus will recombine features semi-intelligently, based on the mutants' performance in combat, making use of both physical and organic weapons systems to create entirely new troops. How these mutations perform in combat will simulate the process of natural selection, meaning that the virus will become more deadly over time.
In an article from Rock Paper Scissors, Julian Gollop (Founder of Snapshot Games), tells us a bit more about how these mutants are generated;
- The system picks a core. (You’ll see different cores in different parts of the world.)
- Several parts are drawn from the pool and applied to the mutants.
- Parts are exchanged based on combat performance.
Conclusion
The way Phoenix Point generates mutants is basically just switching out parts and changing their size a bit. It spices this up by adding parts based on the region the Pandoravirus is in and deciding what parts work based on the combat performance.
I think this is a fresh take on an already well known procedural generation technique, as it is basically the same method Starbound uses, except this is done in 3D space. The system used here most likely specifies a few points where parts can be placed into, where a system will select a part from pools available to the virus and generate a new mutant.
I don’t think I can implement an entire system which checks how well a certain type of part is performing against my player. Adding parts based on location sounds great, and I might be able to implement this if I ever decide to create procedural world generation.
Sources
No Man' Sky
Fauna - No Man’s Sky Wiki
Scientific Name - No Man’s Sky Wiki
Procedural Generation | No Man’s Sky Wiki | Fandom
No Man’s Sky: How I Learned to Love Procedural Art
A Look At No Man’s Sky’s Creature Features
Starbound
Monster | Starbounder
Starbound Merges Procedural Generation with Context | Inverse
Phoenix Point
Details on Julian Gollop’s Phoenix Point, his new take on the original X-COM formula
Phoenix Point’s Fig campaign promises new take on classic X-COM formula - Polygon
XCOM-like Phoenix Point hits crowdfunding | Rock Paper Shotgun