Creating a (very) simple life form from scratch...
...in 12 more or less easy steps
Tutorial by N1 (Daniel Mewes) using LiveGMS
You want to download the finished genome? Hey, what's about the learning effect then? Ok, because I'm nice, you can download it here. ;-)
Some things before we start
You want to play god? You want to create your own species from just nothing? Don't expect too much! We can create some simple creature, but I'm not even sure if we can call it "alive". But on the other side, the differences between our creatures and some simple bacterias in the nature is more quantitative than qualitative (I've read of a bacteria, whose DNA can be fitted on just one DIN A4 page), even providing that our first creature created in this tutorial will not be able to breed naturally. Maybe I will write a second tutorial which will occupy with this subject, but for first, our creature is complex enough to create, isn't it?
What our species will be...
So, what should our creation be able to?
At first of all, like every existing creature, it should be able to die. That does not sound very good, but I'm sure that this is one of the (if not even the) most important properties of a creature. For our first simple species, we will just let it die after a certain time period. This behavior is quite simple to realize.
Then we should add some visible "function" to our creature. It should react on his environment and decide what to do. "Environment" here means just any sensory input coming from outside the creature. Our creature shall react on pats and slaps of the pointer. It shall wander either left or right, depending on which of these inputs take action.
Adding some basic stuff to the genome
1) Open LiveGMS http://www.livegms.de.vu
2) Just click on "Load genome file" without selecting any file before
3) LiveGMS will complain about the missing file. Ignore this and go back to the main interface. You will see an empty table.
4) Now select "Create gene" to add a first gene. Select the "Creature Genus" gene type. Confirm with "Create gene!". "Norn" is already preselected. You can leave this setting untouched or change to "Grendel" if you want to let your creature appear more monster like. ;-)
Confirm this and set the header to the following settings and confirm again.
Maybe you ask why the genus should not be mutable? Because a Genus gene, which has mutated to "Geat" could easily crash your game, and that is not what we want, is it?
5) Do the first steps of 4 again, but create a "Biochemical Half Lives" gene this time. Set the following chemicals:
Life: 45
Brain Chemical 10: 20
Brain Chemical 11: 20
You can play with this values later, but these are a good point to start.
The gene header can be left by its defaults.
Now the "die by age genes"
6) Create a "Biochemical Initial Concentration" gene. Select "Life" as chemical and enter 128 as the chemical's amount. Here again, the header can be left as it is (and in every case I don't say anything different too).
7) Add a "Biochemical Receptor" gene. Now it is getting a bit more difficult (wait until we add brain genes and you will think about this as a really easy thing ;-) ). Receptors react on a chemical and produce some effect to the creature, the current organ (our species does not use organs) or the brain. There are two parameters describing which thing should be affected by the receptor: Tissue and Locus. For a (incomplete) list of loci, you can visit the CDN under this address: http://www.gamewaredevelopment.co.uk/cdn/cdn_more.php?CDN_article_id=9.
We will use tissue 3 locus 0, which is described as Immune->Die. There is also a "die of old age" locus (0->6), but it did not work for me (maybe the creature must reach senile before this one lets it die). We want our creature to die if the "Life" chemical falls under a certain level. Just set everything as in the following screen shot:
I don't remember why I've chosen 112 as Nominal, but at least it works. The Gain does not affect our receptor in anyway, because "Digital" is turned on.
With this setting our creature will die if the chemical "Life" reaches a concentration lower than 5.
Our creature should walk, so it needs a gait!
8) I've just taken the default child gait from the original Norn genome. You should add the following "Creature Pose" genes (Pose number / Pose string):
13 -> ??2201122011100X
14 -> ??2321000011101X
15 -> ??2122201010102X
16 -> ??2000321010000X
9) Add this "Creature Gait":
(From top to bottom: Gait 0, 13, 14, 15, 16, 0, 0, 0, 0)
You see that our create passes all the poses we have defined before. As told above, this is just the default gait taken from the Norn genome.
Adding the sensory
10) Our species' sensory will use stimuli to sense the environment. We need two stimuli for it. One for a patting pointer and one for a slapping pointer. A stimulus gene emits or removes a part of up to for chemicals to/from the creature's blood stream. We will use the "Brain chemical 10" for the patting sense and the "Brain chemical 11" for the slapping one. The patting stimulus should look like this:
Do not forget to set all amounts except the first one to zero!
Because we already did some gene editing stuff until now, you should be able to do the slapping stimulus by yourself.
11) Now a chemical is created if a certain action is sensed by our creature. But it still must know what to do if this happens. For this we will use old friends: The receptor genes! We now take "Brain" as the Organ and enter "10" as Tissue. This tissue id is hard coded by the Creatures engine for the decision lobe, which is responsible for what action a creature does. The locus can be calculated in the following theme (the loci listed in the CDN document are simply wrong for C3!): Neuron of the lobe multiplied with four. If we want to address the second neuron for example, we calculate: 1 * 4 = 4 (neurons are counted from zero, so neuron number 1 is the 2nd one of the lobe).
After taking a look to the VAT Kit or consulting the catalogue files inside the Creatures directory, we should discover neuron 11 and 13 (12th and 13th neuron of the lobe) for the actions left and right.
We calculate: 11 * 4 = 44 and 12 * 4 = 48
Knowing this, we can set up the first receptor now (the patting one):
The "Threshold" value must be something bigger than zero, because if not, our creature will never stop walking after we have injected the chemical one time. Remember that chemicals does not have an absolute lifespan but half lives and so never reach a zero concentration again (or at least after a very long time).
Add the corresponding "slapping receptor" by yourself again.
The brain
12) Our creature's brain will be a very simple one, just reliable for finding a decision what action to do. So create a "Brain Lobe" and enter the following values:
The lobe quad is very important. Because the Creatures engine refers to this for identify the lobe as the output lobe for actions it should be, we must set it to "decn" and nothing else. It is also used to identify a lobe if using brain tracts. X and Y positions are not important here. Just enter anything you want. Same with "Red", "Green", "Blue" and the "Update time" (which should only be greater than zero I think). More important are the "Weight" and "Height" settings. Every creature in Creatures 3 can choose between exactly 13 different actions, so it is logical here to set the size to 13, too. The brain lobe's "Tissue" is important, too, because we have used this in the receptor genes before. It should be set to "10".
Now to the more complex part of the brain lobe, the so called "SV rules". These rules specify how each single neuron in a lobe acts. There are to sets of these rules, the initial rules and the update rules. Because initial rules just run once when a neuron is "initialized", this is not very important for us and we can leave the default "stop" settings (this rules are mainly important for brain tracts, where dendrites can migrate and reconnect). The update SV rules are run every time the brain is updated. I will just write down the correct rules here and explain some basic stuff about it later:
load from | neuron | 0
multiply by | value | 220
if < | value | 160
blank | accumulator (| 0)
store | neuron | 0
blank | neuron | 5
if <= | spare neuron | 0
stop (| accumulator | 0)
blank | spare neuron | 5
store in | neuron | 5
register as spare | neuron | 5
You ask what all this things are good for? I will try (!) to explain. First of all the value of neuron state 0 (each neuron can have many states, which can contain different values) is loaded into a temporary place in your computer's memory. This loaded value is then multiplied by a value of 220, which is about 0.7 in decimal ((220 - 128) / 128) and is reduced by this. This new reduced value is then compared with 160 or 0.25 ((160 - 128) / 128). If the value is smaller than that, the so called "accumulator" is blanked in the next step, which means, that it is set to zero (=128). The so generated (reduced, compared, eventually blanked) value is then stored back to neuron state 0.
The described rules will result in something like a buffering behavior. Values of neurons will always decrease over time (if they are not increased by receptors for example) slowly like chemicals because of their half lives, but in difference to these the neurons will be blanked if they reach a certain low value (0.25). If we would not do this, our creature again will never stop walking. It is the same problem as with chemical half lives described above.
The next part of the update rules does what has been called "WTA" or "Winner takes all" in previous versions of Creatures. This means that only the neuron with the highest level of activity is selected and all others are somewhat "suppressed". For this behavior our neuron's 5th state is blanked first. Then the still loaded reduced state 0 is compared with a "spare neuron", which is just one of the lobes's neurons (it may still chane a few steps later...). If it is smaller than this, processing of SV rules is stopped here and the 5th state of our neuron is left blanked. But if it is greater than the spare neuron's state, the loaded reduced state of our neuron is stored now in state 5, the current spare neuron's 5th state is blanked and as a second step the current neuron will be registered as the spare neuron with the 5th state stored two steps before in it.
The creature engine will now look which neuron is registered as spare and then do the action linked with this neuron.
Breed your creature! Have fun!
What's coming next?
There is still a lot to do. At first of course we should add a repository system. For this we will probably need an attention lobe for our creature's brain. As mentioned above I will maybe cover this issue in another tutorial sometimes in the future.
We could add more drives, including some eating behavior and maybe more complex "reflexes". Organs would be a nice thing, too. Then we could extend the brain and insert something like a combination lobe and give our species the ability to learn.
You've already done all this things? Fine, maybe you should go to CL and apply for a job there (if they have enough money to pay you)! ;-)
Copyright (C) 2004 by Daniel Mewes. This document is published under the Open Creatures Stuff License (http://www.ocsc.de.vu) and without any warranty!