There needs to be quite a lot of timesteps between each auto-evo to make sure the true state of the system merges away from the initial conditions. At the moment my computer can do 1000 timesteps (which I think should be enough) in 16 seconds, so thatās reasonable I guess (my computer is kinda old but not a potato). Thatās how long the player will have to wait while the computation is done. Really it would be better to have 10,000 timesteps however thatās quite long.
I think it will be sped up a lot with c++ and multi-threading. I think we might be able to do something clever where the computation is done in the background while the player is swimming around. However this is for 1 patch with 5 species in it (granted itās copied 5 times by auto-evo so itās really like 5 patches). I imagine we would want 20+ species per patch and 20+ patches? Which is a big step up in the amount of computation (especially because predation is run for each species in relation to each other and so grows exponentially with the number of species).
Anyway I guess we wonāt know how fast itāll be before we build it in c++. Also the player can calibrate it for their own computer by changing the number of species per patch and number of patches. I guess if youāve got a potato youāre gonna be living in a small world.
Today I added a mechanism to give the faster species a discount when it is the prey (because it can choose to run away) which finally gives flagella a meaning. Hereās a run (with 1000 timesteps between auto-evos and note none of them have collapsed down to 2 organelles).
From this
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, T = Total number of organelles:
F : 0 A : 3 P : 1 C : 0 T : 8 .
F : 1 A : 3 P : 1 C : 3 T : 22 .
F : 2 A : 1 P : 1 C : 5 T : 16 .
F : 0 A : 2 P : 1 C : 1 T : 9 .
F : 3 A : 5 P : 1 C : 2 T : 19 .
to this
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, T = Total number of organelles:
F : 0 A : 4 P : 1 C : 0 T : 7 .
F : 1 A : 5 P : 1 C : 0 T : 14 .
F : 2 A : 1 P : 1 C : 3 T : 10 .
F : 0 A : 4 P : 0 C : 0 T : 7 .
F : 1 A : 4 P : 0 C : 1 T : 10 .
Iām sad by how little it values chloroplasts. Maybe predation is too strong or something.
Hereās another run, with predation turned down (thereās parameters for changing the strength of predation and how much discount speed gives you). This was 100 auto-evos with 1000 time steps between them (took 26 minutes).
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, T = Total number of organelles:
F : 1 A : 0 P : 1 C : 0 T : 7 .
F : 1 A : 4 P : 6 C : 1 T : 21 .
F : 1 A : 1 P : 1 C : 1 T : 7 .
F : 2 A : 2 P : 2 C : 6 T : 21 .
F : 1 A : 2 P : 1 C : 1 T : 13 .
to
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, T = Total number of organelles:
F : 1 A : 0 P : 0 C : 0 T : 4 .
F : 1 A : 2 P : 0 C : 0 T : 5 .
F : 2 A : 0 P : 2 C : 1 T : 7 .
F : 1 A : 0 P : 0 C : 1 T : 5 .
F : 1 A : 2 P : 1 C : 0 T : 6 .
Interesting how this time it reduced the amount of agent glands and pilli to reflect the lowered effectiveness of predation. Again not so sure why itās so keen on getting rid of chloroplasts, maybe 2 is enough to fund 5 species with sugar. I guess plants make sugar for themselves and for us.
Also note how the species are all quite small. I think this is because they want to be fast (speed = number of flagella / number of organelles) and itās easier to reproduce if you are made of less stuff. However it would be nice to find a way of getting bigger cells to emerge. Looking at the list of organelles (because I turned off hydrogen sulphide) there are only 4 options, Cytoplasm, Chloroplast, Mitochondria and Lysosomes. And you donāt really need Mitochondria or Lysosomes, they only break things down.
Anyway I ran it again with a more comprehensive readout.
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, Y = Cytoplasm, L = Lysosomes, M = Mitochondria, T = Total number of organelles:
F : 0 A : 2 P : 0 C : 0 Y : 2 L : 1 M : 2 T : 13 .
F : 1 A : 0 P : 0 C : 0 Y : 2 L : 0 M : 1 T : 7 .
F : 3 A : 2 P : 1 C : 1 Y : 2 L : 1 M : 2 T : 17 .
F : 1 A : 3 P : 1 C : 0 Y : 1 L : 0 M : 1 T : 8 .
F : 0 A : 0 P : 1 C : 0 Y : 1 L : 0 M : 3 T : 10 .
to this
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, Y = Cytoplasm, L = Lysosomes, M = Mitochondria, T = Total number of organelles:
F : 0 A : 2 P : 0 C : 1 Y : 1 L : 0 M : 0 T : 5 .
F : 0 A : 1 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 3 .
F : 0 A : 1 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 3 .
F : 1 A : 0 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 3 .
F : 0 A : 0 P : 1 C : 0 Y : 1 L : 0 M : 1 T : 4 .
As you can see the cells totally ditch lysosomes and mitochondria. I guess the cost of making them is much more than their usefulness, which should prolly be changed.
Overall Iām pretty happy with how itās working right now.
Edit: Lame. I ran it for 500 auto evos of 1000 steps (which took like 2 hours) and they all just fell down to nothing.
Current State: F = Flagella, A = Agents, P = Pilli, C = Chloroplast, Y = Cytoplasm, L = Lysosomes, M = Mitochondria, T = Total number of organelles:
F : 0 A : 0 P : 1 C : 0 Y : 1 L : 0 M : 0 T : 3 .
F : 0 A : 0 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 2 .
F : 0 A : 1 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 3 .
F : 0 A : 0 P : 0 C : 0 Y : 1 L : 1 M : 0 T : 3 .
F : 0 A : 0 P : 0 C : 0 Y : 1 L : 0 M : 0 T : 2 .
Here is an obligatory pop-dynamicy image.