1
Interesting behaviour bots / Battlestar bot 4-28-08
« on: April 28, 2008, 11:14:48 PM »
I never thought I'd waste this much time and have so much fun doing so. I rebuilt the battlestar bot from scratch and made it into a fairly reliable setup. (launch them at 5000nrg or above, preferably 30k)
Nifty features:
- Battlestar (mothership) randomly spews tiny drone ships to scour the land for resources
- When drones gather 2500 nrg, they will return to base and dump their cargo
- If drones see each other, they will trade parent locations and return to the stronger parent when full
- Eyetracking algorithm results in minor flocking patterns
Future ideas:
- Virus delivery (cause robots to zombie toward the mothership)
- Inter-mothership communication/coordination (motherships congregate and share power)
- Tie-proofing and/or tie feeding
- Proper poison/venom swarming
Something tells me I'll be at this all week until I can get it to withstand spinners
have fun
cond
*.out1 3 =
*.pleas 1 <
*.nrg 2500 >
start
4 .out1 store
stop
'''''''''''''''''''''''' Gene: 1 Ends at position 15 '''''''''''''''''''''''
cond
*.out1 4 =
*.eye5 60 >
*.in3 *.out3 =
*.in4 *.out4 =
start
*.nrg 2 div .shootval store
-2 .shoot store
stop
'''''''''''''''''''''''' Gene: 2 Ends at position 38 '''''''''''''''''''''''
cond
*.out1 4 =
*.in2 *.out2 !=
*.in1 1 !=
start
*.out3 *.out4 angle .setaim store
5 .up store
stop
'''''''''''''''''''''''' Gene: 3 Ends at position 58 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.robage 2 >
*.vel 40 <
*.eye5 10 <
start
15 .up store
10 rnd 5 sub .aimright store
stop
'''''''''''''''''''''''' Gene: 4 Ends at position 86 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 4 =
or
*.out1 2 =
or
*.eye5 20 <
*.eye1 0 >
*.eye9 0 >
or
*.eye3 20 >
or
*.eye7 20 >
or
start
*.eye1 1 ceil *.eye9 1 ceil sub 140 mult .aimleft store
*.eye8 *.eye2 sub *.eye7 add *.eye3 4 div sub .aimright store
stop
'''''''''''''''''''''''' Gene: 5 Ends at position 140 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 4 =
or
*.out1 2 =
or
*.eye5 10 >
*.eye5 200 <
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 90 add .up store
*.refxpos *.refypos angle .setaim store
stop
'''''''''''''''''''''''' Gene: 6 Ends at position 176 '''''''''''''''''''''''
cond
*.out1 3 =
*.eye5 0 >
*.in2 *.out2 =
start
*.refveldx .dx store
*.refvelup 20 add .up store
*.refaim .setaim store
stop
'''''''''''''''''''''''' Gene: 7 Ends at position 199 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.eye5 80 >
*.refeye *.myeye !=
*.in2 100 <
*.in3 100 <
start
*.pain 2 div 1 floor 4 add 25 ceil 3 *.out1 mod 1 ceil mult 1 add .shootval store
-1 .shoot store
*.refxpos *.refypos angle .setaim store
*.refvelup 1 add .up store
stop
'''''''''''''''''''''''' Gene: 8 Ends at position 253 '''''''''''''''''''''''
cond
*.out1 3 =
*.in2 *.out2 >
*.myeye *.refeye =
start
*.in2 .out2 store
*.in3 .out3 store
*.in4 .out4 store
stop
'''''''''''''''''''''''' Gene: 9 Ends at position 274 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.in1 4 =
start
*.refaim 618 add .setaim store
stop
'''''''''''''''''''''''' Gene: 10 Ends at position 292 '''''''''''''''''''''''
cond
*.robage 3 =
start
-2 .venval store
7 .vloc store
30 .strvenom store
stop
'''''''''''''''''''''''' Gene: 11 Ends at position 307 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 0 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
19 .vloc store
*.refxpos *.refypos angle 628 add .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 12 Ends at position 346 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 1 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
8 .vloc store
800 .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 13 Ends at position 381 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 2 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
7 .vloc store
-2 .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 14 Ends at position 416 '''''''''''''''''''''''
cond
*.out1 3 =
*.robage 1 >
start
*.genes .delgene store
stop
'''''''''''''''''''''''' Gene: 15 Ends at position 428 '''''''''''''''''''''''
cond
*.robage 1 =
*.nrg 5000 <
start
3 .out1 store
330 *.robage 1 add mult inc
.deltie inc
618 .aimright store
*.in2 .out2 store
*.in3 .out3 store
*.in4 .out4 store
*.body 10 mult 100 sub .fdbody store
stop
'''''''''''''''''''''''' Gene: 16 Ends at position 467 '''''''''''''''''''''''
cond
*.robage 1 =
*.nrg 3000 >=
start
2 .out1 store
330 *.robage 1 add mult inc
.deltie inc
618 .aimright store
stop
'''''''''''''''''''''''' Gene: 17 Ends at position 490 '''''''''''''''''''''''
cond
*.out1 2 =
*.robage 100 >
*.nrg 10000 >
start
*.vel -1 mult .up store
1 .out1 store
*.nrg .out2 store
*.xpos .out3 store
*.ypos .out4 store
7 .ploc store
stop
'''''''''''''''''''''''' Gene: 18 Ends at position 522 '''''''''''''''''''''''
cond
*.out1 0 =
*.out1 2 =
or
*.nrg 10000 >
*.refeye *.myeye !=
*.vel 0 =
start
1 .out1 store
*.nrg .out2 store
*.xpos .out3 store
*.ypos .out4 store
7 .ploc store
stop
'''''''''''''''''''''''' Gene: 19 Ends at position 556 '''''''''''''''''''''''
cond
*.out1 1 =
*.eye5 20 <
*.eye1 0 >
*.eye9 0 >
or
*.eye3 20 >
or
*.eye7 20 >
or
start
*.eye1 1 ceil *.eye9 1 ceil sub 140 mult .aimleft store
*.eye8 *.eye2 sub *.eye7 add *.eye3 4 div sub .aimright store
stop
'''''''''''''''''''''''' Gene: 20 Ends at position 602 '''''''''''''''''''''''
cond
*.out1 1 =
*.eye5 30 >
*.refeye *.myeye !=
*.in2 100 <
*.in3 100 <
*.refbody 4 >
start
*.pain 2 div 1 floor 4 add 25 ceil .shootval store
-1 .shoot store
*.refxpos *.refypos angle .setaim store
stop
'''''''''''''''''''''''' Gene: 21 Ends at position 642 '''''''''''''''''''''''
cond
*.out1 1 =
*.robage 5 mod *.pain add 4 >=
*.eye5 30 <
*.in1 0 !=
or
start
120 .aimright store
stop
'''''''''''''''''''''''' Gene: 22 Ends at position 665 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 16000 >
*.body 30000 <
start
100 .strbody store
stop
'''''''''''''''''''''''' Gene: 23 Ends at position 680 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 10000 <
start
100 .fdbody store
stop
'''''''''''''''''''''''' Gene: 24 Ends at position 692 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 11000 >
*.slime 500 <
start
50 .mkslime store
stop
'''''''''''''''''''''''' Gene: 25 Ends at position 707 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 16000 >
*.shell 10000 <
start
100 .mkshell store
100 .mkpoison store
stop
'''''''''''''''''''''''' Gene: 26 Ends at position 725 '''''''''''''''''''''''
cond
*.out1 1 =
*.waste 1000 >
start
1000 .shootval store
-4 .shoot store
stop
'''''''''''''''''''''''' Gene: 27 Ends at position 740 '''''''''''''''''''''''
cond
*.out1 1 =
*.out3 *.out4 dist 50 >
start
*.out3 *.out4 angle .setaim store
1 .up store
0 .dx store
stop
'''''''''''''''''''''''' Gene: 28 Ends at position 762 '''''''''''''''''''''''
cond
*.out1 1 =
*.robage 50 mod 1 =
*.eye5 50 <
start
2 .repro store
stop
'''''''''''''''''''''''' Gene: 29 Ends at position 779 '''''''''''''''''''''''
cond
*.out1 1 =
*.out1 2 =
or
*.mkvirus 0 !=
start
*.mkvirus .delgene store
stop
'''''''''''''''''''''''' Gene: 30 Ends at position 795 '''''''''''''''''''''''
Nifty features:
- Battlestar (mothership) randomly spews tiny drone ships to scour the land for resources
- When drones gather 2500 nrg, they will return to base and dump their cargo
- If drones see each other, they will trade parent locations and return to the stronger parent when full
- Eyetracking algorithm results in minor flocking patterns
Future ideas:
- Virus delivery (cause robots to zombie toward the mothership)
- Inter-mothership communication/coordination (motherships congregate and share power)
- Tie-proofing and/or tie feeding
- Proper poison/venom swarming
Something tells me I'll be at this all week until I can get it to withstand spinners
have fun
cond
*.out1 3 =
*.pleas 1 <
*.nrg 2500 >
start
4 .out1 store
stop
'''''''''''''''''''''''' Gene: 1 Ends at position 15 '''''''''''''''''''''''
cond
*.out1 4 =
*.eye5 60 >
*.in3 *.out3 =
*.in4 *.out4 =
start
*.nrg 2 div .shootval store
-2 .shoot store
stop
'''''''''''''''''''''''' Gene: 2 Ends at position 38 '''''''''''''''''''''''
cond
*.out1 4 =
*.in2 *.out2 !=
*.in1 1 !=
start
*.out3 *.out4 angle .setaim store
5 .up store
stop
'''''''''''''''''''''''' Gene: 3 Ends at position 58 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.robage 2 >
*.vel 40 <
*.eye5 10 <
start
15 .up store
10 rnd 5 sub .aimright store
stop
'''''''''''''''''''''''' Gene: 4 Ends at position 86 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 4 =
or
*.out1 2 =
or
*.eye5 20 <
*.eye1 0 >
*.eye9 0 >
or
*.eye3 20 >
or
*.eye7 20 >
or
start
*.eye1 1 ceil *.eye9 1 ceil sub 140 mult .aimleft store
*.eye8 *.eye2 sub *.eye7 add *.eye3 4 div sub .aimright store
stop
'''''''''''''''''''''''' Gene: 5 Ends at position 140 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 4 =
or
*.out1 2 =
or
*.eye5 10 >
*.eye5 200 <
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 90 add .up store
*.refxpos *.refypos angle .setaim store
stop
'''''''''''''''''''''''' Gene: 6 Ends at position 176 '''''''''''''''''''''''
cond
*.out1 3 =
*.eye5 0 >
*.in2 *.out2 =
start
*.refveldx .dx store
*.refvelup 20 add .up store
*.refaim .setaim store
stop
'''''''''''''''''''''''' Gene: 7 Ends at position 199 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.eye5 80 >
*.refeye *.myeye !=
*.in2 100 <
*.in3 100 <
start
*.pain 2 div 1 floor 4 add 25 ceil 3 *.out1 mod 1 ceil mult 1 add .shootval store
-1 .shoot store
*.refxpos *.refypos angle .setaim store
*.refvelup 1 add .up store
stop
'''''''''''''''''''''''' Gene: 8 Ends at position 253 '''''''''''''''''''''''
cond
*.out1 3 =
*.in2 *.out2 >
*.myeye *.refeye =
start
*.in2 .out2 store
*.in3 .out3 store
*.in4 .out4 store
stop
'''''''''''''''''''''''' Gene: 9 Ends at position 274 '''''''''''''''''''''''
cond
*.out1 3 =
*.out1 2 =
or
*.in1 4 =
start
*.refaim 618 add .setaim store
stop
'''''''''''''''''''''''' Gene: 10 Ends at position 292 '''''''''''''''''''''''
cond
*.robage 3 =
start
-2 .venval store
7 .vloc store
30 .strvenom store
stop
'''''''''''''''''''''''' Gene: 11 Ends at position 307 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 0 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
19 .vloc store
*.refxpos *.refypos angle 628 add .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 12 Ends at position 346 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 1 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
8 .vloc store
800 .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 13 Ends at position 381 '''''''''''''''''''''''
cond
*.in3 100 <
*.eye5 60 >
*.robage 4 mod 2 =
*.refeye *.myeye !=
*.refshoot 0 !=
start
7 .vloc store
-2 .venval store
5 .shootval store
-3 .shoot store
5 .strvenom store
stop
'''''''''''''''''''''''' Gene: 14 Ends at position 416 '''''''''''''''''''''''
cond
*.out1 3 =
*.robage 1 >
start
*.genes .delgene store
stop
'''''''''''''''''''''''' Gene: 15 Ends at position 428 '''''''''''''''''''''''
cond
*.robage 1 =
*.nrg 5000 <
start
3 .out1 store
330 *.robage 1 add mult inc
.deltie inc
618 .aimright store
*.in2 .out2 store
*.in3 .out3 store
*.in4 .out4 store
*.body 10 mult 100 sub .fdbody store
stop
'''''''''''''''''''''''' Gene: 16 Ends at position 467 '''''''''''''''''''''''
cond
*.robage 1 =
*.nrg 3000 >=
start
2 .out1 store
330 *.robage 1 add mult inc
.deltie inc
618 .aimright store
stop
'''''''''''''''''''''''' Gene: 17 Ends at position 490 '''''''''''''''''''''''
cond
*.out1 2 =
*.robage 100 >
*.nrg 10000 >
start
*.vel -1 mult .up store
1 .out1 store
*.nrg .out2 store
*.xpos .out3 store
*.ypos .out4 store
7 .ploc store
stop
'''''''''''''''''''''''' Gene: 18 Ends at position 522 '''''''''''''''''''''''
cond
*.out1 0 =
*.out1 2 =
or
*.nrg 10000 >
*.refeye *.myeye !=
*.vel 0 =
start
1 .out1 store
*.nrg .out2 store
*.xpos .out3 store
*.ypos .out4 store
7 .ploc store
stop
'''''''''''''''''''''''' Gene: 19 Ends at position 556 '''''''''''''''''''''''
cond
*.out1 1 =
*.eye5 20 <
*.eye1 0 >
*.eye9 0 >
or
*.eye3 20 >
or
*.eye7 20 >
or
start
*.eye1 1 ceil *.eye9 1 ceil sub 140 mult .aimleft store
*.eye8 *.eye2 sub *.eye7 add *.eye3 4 div sub .aimright store
stop
'''''''''''''''''''''''' Gene: 20 Ends at position 602 '''''''''''''''''''''''
cond
*.out1 1 =
*.eye5 30 >
*.refeye *.myeye !=
*.in2 100 <
*.in3 100 <
*.refbody 4 >
start
*.pain 2 div 1 floor 4 add 25 ceil .shootval store
-1 .shoot store
*.refxpos *.refypos angle .setaim store
stop
'''''''''''''''''''''''' Gene: 21 Ends at position 642 '''''''''''''''''''''''
cond
*.out1 1 =
*.robage 5 mod *.pain add 4 >=
*.eye5 30 <
*.in1 0 !=
or
start
120 .aimright store
stop
'''''''''''''''''''''''' Gene: 22 Ends at position 665 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 16000 >
*.body 30000 <
start
100 .strbody store
stop
'''''''''''''''''''''''' Gene: 23 Ends at position 680 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 10000 <
start
100 .fdbody store
stop
'''''''''''''''''''''''' Gene: 24 Ends at position 692 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 11000 >
*.slime 500 <
start
50 .mkslime store
stop
'''''''''''''''''''''''' Gene: 25 Ends at position 707 '''''''''''''''''''''''
cond
*.out1 1 =
*.nrg 16000 >
*.shell 10000 <
start
100 .mkshell store
100 .mkpoison store
stop
'''''''''''''''''''''''' Gene: 26 Ends at position 725 '''''''''''''''''''''''
cond
*.out1 1 =
*.waste 1000 >
start
1000 .shootval store
-4 .shoot store
stop
'''''''''''''''''''''''' Gene: 27 Ends at position 740 '''''''''''''''''''''''
cond
*.out1 1 =
*.out3 *.out4 dist 50 >
start
*.out3 *.out4 angle .setaim store
1 .up store
0 .dx store
stop
'''''''''''''''''''''''' Gene: 28 Ends at position 762 '''''''''''''''''''''''
cond
*.out1 1 =
*.robage 50 mod 1 =
*.eye5 50 <
start
2 .repro store
stop
'''''''''''''''''''''''' Gene: 29 Ends at position 779 '''''''''''''''''''''''
cond
*.out1 1 =
*.out1 2 =
or
*.mkvirus 0 !=
start
*.mkvirus .delgene store
stop
'''''''''''''''''''''''' Gene: 30 Ends at position 795 '''''''''''''''''''''''