Darwinbots Forum
Bots and Simulations => Bot Tavern => Topic started by: Endy on August 22, 2006, 11:07:29 AM
-
Figured out how The One mutants were managing to form some amazing MB forms. These had the capability to turn individually as "Single Cells" but still maintain a co-hesive tied structure.
The trick is to use .setaim instead of aimdx/aimsx. This allows the whole group to move as one, when the bots that don't sight food are pulled along with the ones that do.
' vision genes used with tier bot
cond
*.eye5 0 =
start
'from something similar in One
314 rnd *.aim add .setaim store
stop
cond
*.refeye *.myeye =
*.eye5 0 >
start
314 rnd *.aim add .setaim store
stop
cond
*.refeye *.myeye !=
*.eye5 0 >
start
*.refxpos *.refypos angle .setaim store
stop
The bots I've designed have been also fitted with a deltie capability allowing them to delete a tie whenever they wind up with three impeding ties at the same time. They also tie to family members at birth or to bots existing singularly.
Still working on the turning and movement commands, I think it'd help if they could better co-ordinate their actions.
-
Neat
-
TierMBt2 (http://www.darwinbots.com/Forum/index.php?act=ST&f=37&t=1484&st=0)
Okay, was able to post. Very odd looking MB, it'll be looking like a typical MB one second and the next it'll split apart at the seams and re-assemble itself again.
-
I have an interesting bot evolved from A. Praxidicae in Version 2.37.6. It can make ties and forms large groups (like tissues), surely there is a lot of JUNK genes because it has not been desingned but take a look. it may give some ideas. Please, feel free to move or delete it, is quite long but I´m not sure wich genes are relevant
'#Evolved from A. Praxidicae
'#Pitted against autotrophe SWARMS as Veggie
'#Forms ties
cond
*.robage
0
=
start
330
inc
stop
cond
*.numties
0
!%=
start
330
inc
stop
cond
start
468
inc
mult
mult
0
85
stop
cond
*.robage
1
=
start
467
rnd
inc
stop
cond
15
-307
!=
*0
1
=
start
180
.aimright
store
1
0
store
stop
cond
*.nrg
4000
>
*.robage
300
<
start
1
0
store
180
.aimleft
store
50
300
566
store
0
.shoot
store
stop
cond
*.nrg
30000
>
*.robage
300
>
start
1
0
store
180
.aimleft
store
50
.repro
store
0
.shoot
store
stop
cond
*.eye1
*.eye9
!=
start
*.eye1
*.eye9
sub
*381
stop
cond
*.eye2
*.eye8
!=
start
*.eye2
*.eye8
sub
stop
cond
*.eye4
*.eye6
!=
start
*.eye4
*.eye6
sub
stop
cond
*.memval
*.genes
=
start
mult
180
stop
cond
start
.aimleft
store
stop
cond
6
0
!=
start
*.aimleft
10
div
.sx
store
stop
cond
*.pain
60
>
*.eye5
0
=
start
90
6
sub
stop
cond
*.shell
90
<
start
100
776
.mkshell
store
stop
cond
*.slime
90
<
start
100
820
mult
store
stop
cond
*.numties
0
=
*.refeye
*.myeye
!=
*.refsx
*.mysx
!=
*.vel
40
<
*.eye5
0
>
start
*.refvelup
*.vel
sub
2
mult
60
add
.up
store
dec
.up
store
stop
cond
*.vel
40
<
*.robage
10
!%=
start
10
.up
store
stop
cond
*.eye5
40
>
*.nrg
3000
<
*.refnrg
1500
<
*.refshell
50
>
or
*.refpoison
0
=
or
start
-1
.shoot
store
10
.shootval
store
stop
cond
*.eye5
40
>
*.nrg
3000
<
*.refnrg
1500
>
*.refshell
50
<
or
*.refpoison
0
>
or
start
-6
.shoot
store
10
.shootval
store
stop
cond
*.eye5
40
>
*.nrg
3000
>
*.robage
6
>
*.refnrg
1500
<
*.refshell
50
>
or
*.refpoison
0
=
or
start
-1
.shoot
store
150
.shootval
store
stop
cond
*.eye5
40
>
*.nrg
3000
>
*.robage
6
>
*.refnrg
1500
>
*.refshell
50
<
or
*.refpoison
0
>
or
start
-6
.shoot
store
150
.shootval
store
stop
cond
*.body
20
>
*.nrg
1000
<
start
100
.fdbody
store
stop
cond
*.body
1000
<
*.nrg
1100
>
*.robage
6
<
start
100
451
.strbody
store
stop
cond
*.body
5000
<
*.nrg
2000
>
start
400
.strbody
store
stop
cond
*.waste
100
>
start
1
0
store
-4
.shoot
store
*.waste
.shootval
store
stop
cond
*.robage
0
=
start
341
.memloc
store
stop
cond
start
*.genes
340
*.thisgene
*.genes
sub
dup
div
mult
*.robage
sgn
mult
store
339
inc
stop
end
-
Ran some sims with it and it certainly can survive, not bad for a multi bot!
Looking at the conditions it seems that it can still activate all its genes so finding all the useful commands could be quite difficult. If you want to decode it try deleting stuff you don't think is useful and rechecking it's behavior in case it was useful.
It could be a long job.
Good luck with future evolutions for this bot!
-
I tried editting a latter version of this bots. I saw many genes that cause it to spin or move laterally that began with conditions like 0 6 =! for example (I think that these are mutations, not designed genes, because the condition is always true and does not refer to any sysvar) so I replace it with more rational conditios like *.eye5 0 =
I tried it against SWARMS and it was OK, but against Diabolus exterminio the original version was superior to my "intelligent" desing. Interesting ,isn´t it?
-
It's great isn't it!
I presume you are talking about this bit of code;
cond
start
.aimleft
store
stop
cond
6
0
!=
start
*.aimleft
10
div
.sx
store
stop
From what I can see it is using this gene to counteract the effect of turning, a more primitive version of (*.sx .dx store) and it seems to work ok because the bot doesn't slide when it turns.
It seems to be turning all the time, even when it can see stuff in eye5, (the gene above those stop it working if it sees a friend but the three above that almost always adjust aim) so perhaps it needs to keep stopping slide.
My suggestion would be to change the first gene posted here to;
cond
start
.aimleft
store
*.aimleft 10 div .sx store
stop
and delete the other gene.
Or you could try the condition (*.memval *.genes !=) or (*.aimleft 0 !=) on the second gene so it only fires when it doesn't see a friend in eye5 or is turning.
It is making use of the stack to make these genes work, something else that can complicate deciphering the code.
Even small changes to code can cause big changes in bots behaviour. Sometimes it can be hard to see what has changed and why it makes a difference.
-
Thanks for the idea!!!