Posts Tagged The Dinosaurs: How they Really Died
Design Documentation – 2009
Ah, nostalgia! Going through the design documentation from 2009 (mostly random idea’s I had jotted down and systems I had spent time developing in my head) I’m mildly surprised to find just how different they are in their particulars from the final game. I knew the game had evolved (does it make me a sad and immature individual that I even now find that amusing? “Yes. Yes it does.”), but I never quite realised by how much.
As an example, here’s a copy of a section in which I spontaneously decided to enumerate the “main stats” for my creatures. These are variables that directly influence how they behave, but are NOT set directly: instead, they are influenced up and down to varying degrees by other values and items in the creatures genetic makeup.
Items in Bold were changed; Items struck out were removed or replaced with something else entirely. There’s even one item (in Italics) that I’d completely forgotten about until reading this and am now considering actually implementing.
HP -- Hitpoints
Energy -- Current energy
StmchEnrg -- Stored food energy
Size -- Overall scale – affected by age.
Stamina -- Rate of energy loss per unit of distance
Speed -- Speed of motion
JawDmg -- Damage
LimbDmg -- (1 for each limb)
JawSpeed -- Strike speed, before and after
LimbSpeed -- (1 for each limb)
JawRange -- Attack distance
LimbRange -- (1 for each limb)
preferrdAtck -- Selects which weapon is affected by below
FavChance -- Affects chance of weapon being chosen
ArmrFront -- Lowers how much HP damage is taken
Counter -- Gives Minor damage to the attacker
MeatHarshness -- Makes creature harder to digest
Diet -- Veg/Meat
StmchAcid -- Optimal Food Harshness
Effciency -- Causes more food to spawn on tree when tree is ‘attacked.’
Thrshhold -- Pickiness
FavAttribute -- (One of these global stats)
Cold -- Defence against low temperatures
Heat -- Defence against high temperatures
There are at least a dozen new attributes as well, and that’s just off the top of my head!
Even more drastic are entire systems that were discarded or replaced, sometimes after trying to implement them and discovering their flaws, other times because I realised they were evil Cthulhu-spawned puppies from the start. A perfect example of this is the behavioral system. It’s design underwent several iterations, each of increasing detail, complexity and imagination, but it wasn’t until I actually tried to implement it that I realised it was an absolutely bloated useless flippard of a system. Here’s my old notes from the same document as above:
Each creature has a list of PerceptionObjects, corresponding to the objects in their sight range: split into unknown, creature and vegetation, and each one has a list of all the ‘visible features’ available for retrieval. Each creature also has a list of PerceptionCategories, which split other objects based on visible features: Health, Colour, Size, Headtype, Covering, etc. for creatures, Colour and Size for vegetation.
PerceptionCategories is a genetic list, but intelligent creatures can add other categories
upon encountering unknown objects.
PerceptionCategories are used in triggers, which are creature behaviours. Triggers can be genetic or learned, and consist of a PerceptionCategory and an interaction: flee, attack, eat, play or mate.
Triggers are activated when a creature interacts with an object (rather than rolling randomly). They should also be able to be activated from a distance… how this works I have not yet ascertained.
It was only when it came around to actually implementing a behavioral system that I realised “This is insane. WHAT THE HELL AM I THINKING?” And even then, I went and half-implemented it so as to try it out, just to prove to myself that it was unworkable.
For a start, instinctive behavioral reactions are hard enough to identify normally: adding an extra layer of complexity in the form of “PerceptionCategories” would have make the creatures thought processes so alien as to be indecipherable. In addition, the behaviors (Eat, Attack, Mate, Play, Ignore and Flee) are not transferable: allowing creatures to mate with trees might be hilarious, but it gets old when creatures arbitrarily decide to spend the rest of their very short lives doing so, driving them to starvation and extinction. (Oh my God. I think I just worked out why the dinosaurs went extinct) What I really needed was simplicity and predictability: “creature X does Y when they encounter Z.”
So instead I went for a more fluid behavior system combined with three predefined categories: Tree, Ally and Neutral. Tree’s are food sources: a creature will either eat or ignore trees depending on their preferred diet. Ally’s are genetically compatible (of the same species) creatures. Neutrals are all creatures from other species.
This allows for emergent behavior, such as creatures herding together but still knowning to flee from predators, while at the same time simplifying and making creature behavior easier to read. Which is probably for the best, but I will mourn greatly the loss of potential prey-prey interspecies symbiosis.
I wonder if that particular sentence has ever been said by anyone else in all of spacetime?
Little known fact: All dogs can ultimately trace their ancestry back to Cthulhu. Not cats though. They’re descended from Yog Sothoth.