What is this?
This document is a Minimum Viable Product and as such it will only include features that are absolutely necessary for the game to function at a fundamental level.
Can I suggest new features here?
To discuss additional features please go to: Demo Game: Evolution Island [Aspirational Doc]
The primary discussion here should be high level implementation details.
What happened to the RTS game?
It didn’t go anywhere! We just decided that it would be easier to get the ball rolling with a smaller, more tightly constrained project. Several of the features developed for Evolution Island will be highly applicable to any prospective RTS game we may want to attempt in the future.
Inspirations: SimEarth, Spore
Showcase potential: AI (steering behaviours, survival intelligence), ECS (thousands of “living” entities), 2D graphics.
An ecosystem in a bottle
Imagine a 2D terrarium. A tiny ecosystem enclosed in a sealed container. Inside this closed ecosystem exists three types of living creatures: Plants, Herbivores and Predators. The goal of the player is to maintain the balance (for 2 minutes or 2 weeks, depending on the game mode) of the ecosystem, not letting any entity type go completely extinct. In later iterations of the game the player will be able to use mutations to generate a practically infinite amount of entity variations, and with that a new goal metric becomes available: Create the greatest entity diversity possible without the ecosystem collapsing.
Later still there will be multiplayer applications to play with, but we’ll be focusing on single-player for some months still.
As currently described, this game is designed to be realistically implemented within a 3-6 week timeline or part-time work (although as all volunteer undertakings involving multiple stakeholders it will surely take a good while longer, and that’s fine).
Everything written here is subject to change in future iterations, so don’t be concerned with current limitations like “2D”. We’ll move beyond these constraints when we’re good and ready.
The game is set on a small island, just big enough to cover the screen. No camera movement will be necessary as the entire game is played from a single, fixed viewpoint.
Top-down, RTS style view.
Something like this in 2D
Nada! Zero. There is none. No player interactive gameplay… This game plays the same as Conway’s Game of Life in that it does not accept any player input. It’s purely a rendered simulation. (Again, please remember we can change this in future iterations).
Anyone can add a new creature type or other entities (obstacles, environmental factors etc. ) as long as the addition doesn’t completely break the equilibrium of the game.
We can and should keep expanding this game until there are hundreds and even thousands (at that point we’ll need some procedural features) of different game entities all interacting with one another, all following the same basic rulesets of the world we’ve defined.
The 3-way simulation
We’re going to simulate 3 creatures in interplay on this little island:
- Predators (and they eat;)
- Herbivores (and they eat;)
- Plants (eat nothing)
The goal of our simulation is to get it as close as possible to an equilibrium between the three creatures. We want all of them to reach a sustainable population. That sustainable population # might be very different for each creature type to achieve near-equilibrium.
We will simulate creature AI behavior with some very simple steering behaviors logic.
We’re gonna start off with all creatures not being assigned any type of gender (might never be necessary). They will self-replicate anywhere in the vicinity of fellow creature type. Their spawn rate is subject to a multiplier based on how many of that creature is left in the game.
E.g. if the spawn time is set to 12s and the multiplier is set to 0.8 and there are 20 carnivores left, a new carnivore will spawn every 9.6 seconds because 12 * 0.2 * 20 = 9.6
|Max movement speed||0||15||10|
|Digestion (Nutrition burn rate)||0||5/s||1/s|
|Line of Sight||0||10||20|
|Movement:||Static objects can’t move. Dynamic objects are in constant movement except whilst feeding.|
|Food target:||What the creature will target (chase) and attack for food.|
|Wandering Speed:||Creature speed when not in state of fleeing/chasing.|
|Max Movement Speed:||The creature’s movement speed once they have accelerated to their maximum.|
|Acceleration:||The rate at which the creature goes from WS to MMS. Increases every decisecond.|
|Hit Points:||How much damage the object can take before death.|
|Spawn time||How frequently a new instance of the object will be spawned. 5 = New object spawned every 5 seconds. 10 = New object spawned every 10 seconds.|
|Nutritional value||How many points of fullness the objects grants to killer upon death. 1 = 1 point of fullness granted. 10 = 10 points of fullness granted.|
|Digestion (Nutrition burn rate)||How quickly food is digested. How quickly the object depletes its nutrition (food). 1 = 1 point of nutrition subtracted per second. 2 = 2 points of nutrition subtracted per second.|
|Attack damage||How many hit points subtracted from target per hit.|
|Attack Speed||How quickly the object attacks per second. 1 = 1 attack per second. 2 = 2 attacks per second.|
|Line of sight||The radius In which the creature can see.|
|Max Fullness||A fullness value of 0 equals death. Starting Fullness indicates what value of fullness the object holds upon spawn. The object’s Fullness is immediately affected by Digestion upon spawn.|
|Wander||>80 fullness||>50 fullness|
|Seek||<80 fullness||<80 fullness|
|Flee/Evade||Close to carnivore||n/a|
|Pursue||n/a||Close to herbivore|
At this point the game doesn’t have an end-game. Instead, our goal is for the game to last at least 5 minutes without any creature type going extinct.
At game start there will be a variable number of creatures initially spawned. All creatures spawn at maximum fullness.