I finally got a stable evosim evolving interesting behavior! YAY!
So, I started out with Seasnake and Alga_Branchious in two simulations with slightly different settings, teleporting only heterotrophs between them. Sim size for both is 1, but I guessed that having two small interlinked sims would provide the same variability in environment that 1 large sim would. One sim has 30 bots and 100 algae, the other has 20 bots and 100 algae. The average seasnake has 50 mutations, the algae in one sim have 200 and the other 35. 180 kCycles total, but one sim logs 77 Mcycles because there were no bots in it for a while.
Seasnake is now a single-celled critter which ties to its prey to hold it in place while it shoots at it... Not too unusual. In some cases I saw unusual behaviours, such as forming trails following each other, but I suspect that was more of an accidental breakage of its DNA than a novel behaviour. It also lost that ability, so oh well.
They have also developed stable conspec recognition, where if they see each other they turn and continue in a new direction. It might be partly because of these two monstrous seasnakes that constantly shoot, killing any nearby seasnakes and algae. They constantly shoot too. That's about it though. However, the truly amazing behaviours started evolving from the algae.
First, they started to constantly move sideways, forming clumps of algae moving across the screen. Others have formed stationary chains, with only one bot (the top one) capable of reproducing, with its parents in a line below it. These two behaviours are currently present in the algae with 200 mutations.
The algae with 35 mutations avg., on the other hand, stay in place spinning constantly. If a seasnake ties to it, it starts moving diagonally until it breaks the tie, then stops moving once it's free from the seasnake. These algae are more scattered because of this movement, so the seasnakes are finding it harder to catch them.
It almost seems like I have a stable red queen's race going on, but maybe it's just that the bots are breaking reaaally slowly.
Randomly selected seasnake:
'''''''''''''''''''''''' Gene: 1 Begins at position 1 '''''''''''''''''''''''
start
0 .fixpos store
0 .focuseye store
clearbool
*.robage 0 =
*971 0 =
and
-30000 29176 rnd 51 dec
*.robage 0 =
*0 0 !=
and
*0 dec
51 store
clearbool
300 .eye5width store
336 .reffixed store
336 .tmemloc store
*51 .readtie store
*51 .tienum store
*51 0 store
*.out3 .tout1 inc
*51 *.out1 store
451 .tout3 store
*51 .out2 store
*.xpos *52 sub 53 store
*.ypos *53 sub 55 store
453 .tieloc store
1000 .tieval store
clearbool
*.out1 0 =
*.out1 3 =
or
*51 .out3 store
*51 .tout1 inc
0 .eye5dir store
*.out1 1 =
*.out1 2 =
or
*.tin1 .out7 store
*.tin1 .tout1 store
*.tin6 .tout6 store
*.tin7 .tout7 store
*.out1 1 =
*.out1 -6 =
or
*.tin2 1 sub 515 store
*.tin2 1 sub .tout2 store
clearbool
*.robage 1 !%=
*51 .tie store
clearbool
*.robage 2 =
*.tin1 *.out2 <=
and
.deltie inc
100 .up store
clearbool
*.eye5 0 =
*.out1 0 =
*.out1 3 =
or
and
10 .up store
20 rnd 10 sub .aimright store
clearbool
*.eye5 0 >=
*.memval *.dnalen =
and
*.out1 1 !=
and
*.out1 2 !=
and
*.in2 *.out2 >
and
*.in1 2 !=
and
*.in1 3 !=
and
*.in2 *.out3 !=
clearbool
*.robage 2 >
and
*50 8 =
and
*.refxpos *.refypos angle .setaim store
*.refveldx *.body mult 1000 div .dx store
*.refvelup 11 add .up store
clearbool
*.eye5 0 >
*.memval *.dnalen !=
and
*.robage 2 >
and
*.refxpos *.refypos angle .setaim store
*.refveldx 16 store
*.refvelup 10 add .up store
%=
.eye5width store
clearbool
*.out1 3 =
*.out3 *.in3 =
*.out3 dupbool
!=
*.in3 0 !=
and
*.in2 *51 <=
and
or
and
*50 0 =
and
*.setaim 314 1 clear mult 157 sub add .setaim store
0 .eye5width dec
clearbool
*.body 100 mult *.nrg 9 mult <
100 .strbody store
*357 100 mult *.nrg 11 ceil >
100 .fdbody store
clearbool
*.waste 100 >
*.waste .shootval store
314 901 7 .dx store
store
clearbool
*.nrg 5000 >
*.slime 100 <
and
10 .mkslime store
*.nrg 5000 >
*.shell 1000 <
and
10 .mkshell store
clearbool
*.thisgene 1 !=
1 .delgene store
*.thisgene 1 =
*325 4 >
dropbool
2 .delgene store
clearbool
*.numties 0 =
0 .out1 store
*.numties 1 =
*.tmemval *.dnalen =
and
*.out1 =
0 *.out1 =
2 or
and
*.tiepres *51 =
and
1 .out1 store
*.numties 2 =
*50 0 =
and
*.tmemval *.dnalen =
and
*.out1 3 =
*.out1 1 =
or
and
2 .out1 store
*.numties 1 =
*.robage 2 >
and
*.out1 0 =
*.tiepres *49 !=
and
*.out1 2 =
*.trefxpos 0 =
and
or
and
3 .out1 store
clearbool
*.numties 2 >
*.out1 3 =
*.numties 1 >
and
or
*.out1 1 =
*.numties 1 >
or
or
*.out1 0 =
*.numties 0 >
and
or
*.numties 1 =
*.out1 1 !=
*.out1 3 !=
and
and
or
*.numties 1 !=
*.out1 1 =
*.tiepres *51 and
and
or
*.numties 1 =
*.out1 2 =
and
or
*.numties 1 =
*.out1 3 =
*72 *.tiepres and
=
and
or
*.out1 3 =
=
3 *.tin3 and
or
*.tmemval 0 !=
*.tmemval and
!=
*.dnalen or
*.tiepres .deltie store
clearbool
*.out1 0 %=
*.out1 3 =
or
*.eye5 0 >
and
*.memval *.dnalen =
and
*.in3 *.out2 >
dropbool
*.in1 -9 =
*.in1 1 =
*.refmulti 0 !=
and
or
and
*.in3 -35 *.out3 !=
and
*51 .tie store
clearbool
*.out1 1 =
*.out1 2 =
or
*.tin1 *.out3 =
and
*.trefxpos *.trefypos angle .setaim store
*.trefup .up store
*.trefdn .dn store
clearbool
*.tielen 100 >
*.out1 1 =
*.out1 2 =
or
and
*.up 10 add .up store
clearbool
*.out1 3 !=
*.trefvelyoursx *.velsx sub abs 10 >
and
*.velsx -1 mult .sx store
clearbool
*.tout10 -50 <
*.tielen 0 !=
not
*.out1 1 =
*.out1 2 =
or
and
*.dn 20 add .dn store
clearbool
*.multi 0 >
*.out1 1 =
*.out1 2 =
or
and
*51 .tienum store
-1 .fixang store
25 .fixlen store
100 .stifftie store
xor
*.out1 1 =
628 .eye5dir store
628 .eye5width store
*.out1 2 =
*51 2 mod 628 mult -314 add 628 *.robage 2 mod mult add .eye5dir store
200 .eye5width store
*.out1 3 =
*.out1 0 =
or
0 .eye5dir store
clearbool
0 .tout6 store
0 .tout7 store
*.eye5 0 =
*.tin6 *.tin7 dist 1000 <
and
*.tin6 .tout6 store
*.tin7 .tout7 store
*.eye5 0 >
*.memval *.dnalen *.in3 and
!=
*.out3 !=
and
*.reftype 0 =
and
*.refxpos .tout6 store
*.refypos .tout7 store
*.shootval *.out1 3 =
100 .shoot store
clearbool
*392 0 !=
*.out1 3 !=
and
*.tout6 *54 2 mult sub .tout6 store
*.tout7 *55 2 mult sub .tout7 store
*.tout6 *.tout7 angle 1256 mod 1256 add *.aim sub .eye5dir store
35 .tieang1 store
clearbool
*.eye5 !=
*.dnalen *.memval >
10 and
*.out3 !=
and
*.eye5dir -1 mod .aimshoot store
-6 .shoot store
*.eye5 20 <
1 .shootval store
*.eye5 20 >=
16 .shootval store
clearbool
*.eye5 0 =
*.refxpos 0 !=
and
*.memval *.dnalen !=
and
*.in2 *.out3 !=
and
*.refxpos *.refypos angle -1 mult .aimshoot store
-6 .shoot store
17 .shootval store
clearbool
*51 .tienum store
50 .sharenrg store
50 .shareshell store
50 .shareslime store
100 clearbool
store
831 *50 5 =
*.setaim 628 add .setaim store
*50 0 >
50 dec
clearbool
*.nrg 5000 >=
*.body 500 >=
and
*.out1 0 !%=
*.out1 1 =
or
and
50 .repro store
*.setaim 628 add .setaim store
5 50 store
clearbool
*.tieang3 *51 454 *51 !=
store
*51 .tienum store
clearbool
*.xpos 52 store
*.ypos 53 store
stop
'''''''''''''''''''''''' Gene: 1 Ends at position 936 '''''''''''''''''''''''
constant movement algae:
~ 12 -3 0 1 0 0 0 0 *69 floor 0 ~=
0 0 0 and
0 0 6 0 and
0 >=
false
'''''''''''''''''''''''' Gene: 1 Begins at position 26 '''''''''''''''''''''''
start
*-71 975 ++ 1000 102 *972 store
sub false
store
'''''''''''''''''''''''' Gene: 1 Ends at position 36 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 2 Begins at position 37 '''''''''''''''''''''''
cond
'''''''''''''''''''''''' Gene: 2 Ends at position 37 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 3 Begins at position 38 '''''''''''''''''''''''
cond
3 start
1000 rnd 972 store
store
'''''''''''''''''''''''' Gene: 3 Ends at position 45 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 4 Begins at position 46 '''''''''''''''''''''''
cond
*.robage 3 =
store
=
sgn *.tin1 ceil *.tin2 *971 drop !=
inc
*102 !=
start
add store
'''''''''''''''''''''''' Gene: 4 Ends at position 64 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 5 Begins at position 65 '''''''''''''''''''''''
cond
stop
'''''''''''''''''''''''' Gene: 5 Ends at position 66 '''''''''''''''''''''''
inc
50 0 mult ~=
=
'''''''''''''''''''''''' Gene: 6 Begins at position 73 '''''''''''''''''''''''
else
38 *.eye5 *106
'''''''''''''''''''''''' Gene: 6 Ends at position 76 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 7 Begins at position 77 '''''''''''''''''''''''
start
floor *991
'''''''''''''''''''''''' Gene: 7 Ends at position 79 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 8 Begins at position 80 '''''''''''''''''''''''
start
=
>> *102 *.in4
'''''''''''''''''''''''' Gene: 8 Ends at position 84 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 9 Begins at position 85 '''''''''''''''''''''''
cond
*.numties 0 <
*971 5 =
start
0 215 %=
*972 .out1 store
*971 .tout2 store
stop
'''''''''''''''''''''''' Gene: 9 Ends at position 102 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 10 Begins at position 103 '''''''''''''''''''''''
cond
0 store
1 - >=
stop
'''''''''''''''''''''''' Gene: 10 Ends at position 109 '''''''''''''''''''''''
sub 10 mult *971 .stifftie store
.setaim store
'''''''''''''''''''''''' Gene: 11 Begins at position 118 '''''''''''''''''''''''
start
'''''''''''''''''''''''' Gene: 11 Ends at position 118 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 12 Begins at position 119 '''''''''''''''''''''''
start
*.multi 1
'''''''''''''''''''''''' Gene: 12 Ends at position 121 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 13 Begins at position 122 '''''''''''''''''''''''
else
=
*96
'''''''''''''''''''''''' Gene: 13 Ends at position 124 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 14 Begins at position 125 '''''''''''''''''''''''
cond
add 300 >
inc
-504 1 swap .fixpos store
start
*971 *.nrg 98 <=
'''''''''''''''''''''''' Gene: 14 Ends at position 139 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 15 Begins at position 140 '''''''''''''''''''''''
start
*.xpos 973 store
store
974 *.ypos 314 .aimleft dec
*971 10 mult -1 mult sub .repro store
=
'''''''''''''''''''''''' Gene: 15 Ends at position 158 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 16 Begins at position 159 '''''''''''''''''''''''
cond
*1082
'''''''''''''''''''''''' Gene: 16 Ends at position 160 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 17 Begins at position 161 '''''''''''''''''''''''
cond
*.numties 105 14 *.multi dec
0 angle << start
*973 *974 angle .setaim store
dec
-3 972
'''''''''''''''''''''''' Gene: 17 Ends at position 178 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 18 Begins at position 179 '''''''''''''''''''''''
cond
stop
'''''''''''''''''''''''' Gene: 18 Ends at position 180 '''''''''''''''''''''''
store
mult *306 >
and
=
*.thisgene mult 312 mult 1000 <
*.nrg store
stop
'''''''''''''''''''''''' Gene: 19 Begins at position 196 '''''''''''''''''''''''
cond
*971 100 .strbody store
stop
'''''''''''''''''''''''' Gene: 19 Ends at position 201 '''''''''''''''''''''''
Algae that escape when tied:
- 0 add 0 0 0 0 0 0 0 8 0 - 0 0 0 0 0 0 0 0 and
0 0 0 0 0 0
'''''''''''''''''''''''' Gene: 1 Begins at position 29 '''''''''''''''''''''''
cond
*.robage *971 !~=
1 0 971 store
1000 rnd 975 store
1 .deltie store
=
2 *.robage
'''''''''''''''''''''''' Gene: 1 Ends at position 46 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 2 Begins at position 47 '''''''''''''''''''''''
cond
stop
'''''''''''''''''''''''' Gene: 2 Ends at position 48 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 3 Begins at position 49 '''''''''''''''''''''''
start
971 div 4 *971 dec
sub .xpos store
*972 102 store
stop
'''''''''''''''''''''''' Gene: 3 Ends at position 61 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 4 Begins at position 62 '''''''''''''''''''''''
cond
*.robage 3 =
start
1000 rnd 972 store
*971 1 swap 107 store
*.robage
'''''''''''''''''''''''' Gene: 4 Ends at position 76 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 5 Begins at position 77 '''''''''''''''''''''''
cond
stop
'''''''''''''''''''''''' Gene: 5 Ends at position 78 '''''''''''''''''''''''
3 =
*971 5 =
*.tin1 *102 !=
*971 21 sub *.tin2 !=
'''''''''''''''''''''''' Gene: 6 Begins at position 92 '''''''''''''''''''''''
start
1 .deltie store
stop
'''''''''''''''''''''''' Gene: 6 Ends at position 96 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 7 Begins at position 97 '''''''''''''''''''''''
cond
*.robage 50 >
*.refage 50 >
*.multi 0 =
*.in1 *106 =
*.in2 0 =
*.eye5 50 >
*.in3 *975 =
*.in4 *102 =
start
1 .tie store
stop
'''''''''''''''''''''''' Gene: 7 Ends at position 126 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 8 Begins at position 127 '''''''''''''''''''''''
cond
*.numties 0 =
*971 5 !=
start
0 .fixpos store
'''''''''''''''''''''''' Gene: 8 Ends at position 137 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 9 Begins at position 138 '''''''''''''''''''''''
start
*971 .out1 store
*975 div store
*993 .out4 store
*972 .tout1 store
*971 .tout2 store
stop
'''''''''''''''''''''''' Gene: 9 Ends at position 154 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 10 Begins at position 155 '''''''''''''''''''''''
cond
*.numties 0 =
start
0 104 store
0 0 *.multi *0
'''''''''''''''''''''''' Gene: 10 Ends at position 166 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 11 Begins at position 167 '''''''''''''''''''''''
cond
stop
'''''''''''''''''''''''' Gene: 11 Ends at position 168 '''''''''''''''''''''''
store
1 =
'''''''''''''''''''''''' Gene: 12 Begins at position 172 '''''''''''''''''''''''
start
*.tiepres .tienum inc
sub 10 mult *.mkshell 20 *971 .sharenrg store
*971 200 mult .fixlen store
100 .stifftie store
314 .setaim store
100 .up store
stop
'''''''''''''''''''''''' Gene: 12 Ends at position 198 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 13 Begins at position 199 '''''''''''''''''''''''
cond
*.multi 1 =
*.robage 0 inc
1 104 start
store
stop
'''''''''''''''''''''''' Gene: 13 Ends at position 210 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 14 Begins at position 211 '''''''''''''''''''''''
cond
*.multi 1 =
*103 287 rnd *.robage <=
start
1 .fixpos store
stop
'''''''''''''''''''''''' Gene: 14 Ends at position 224 '''''''''''''''''''''''
add *.fixed =
*105 3 <
*971 1000 mult *.nrg <
*971 100 mult *.body <
'''''''''''''''''''''''' Gene: 15 Begins at position 241 '''''''''''''''''''''''
start
*.xpos 973 store
dup *.ypos 974 store
314 .aimleft store
*971 10 mult *971 2 mult sub .repro store
105 inc
stop
'''''''''''''''''''''''' Gene: 15 Ends at position 263 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 16 Begins at position 264 '''''''''''''''''''''''
cond
*.multi 0 =
*.numties =
*971 5 !=
start
& *974 angle .setaim store
.up store
stop
'''''''''''''''''''''''' Gene: 16 Ends at position 281 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 17 Begins at position 282 '''''''''''''''''''''''
cond
<< *971 100 mult *.body <
start
100 store
stop
'''''''''''''''''''''''' Gene: 17 Ends at position 292 '''''''''''''''''''''''
'''''''''''''''''''''''' Gene: 18 Begins at position 293 '''''''''''''''''''''''
cond
1000 dup *.nrg <
*971 100 mult *.body >
start
100 .strbody store
stop
'''''''''''''''''''''''' Gene: 18 Ends at position 307 '''''''''''''''''''''''
*Edit: All the stationary column-forming algae died. looked cool for a while though.