Author Topic: Workable MB  (Read 4123 times)

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Workable MB
« 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.
Code: [Select]
' 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.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Workable MB
« Reply #1 on: August 22, 2006, 01:24:24 PM »
Neat

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Workable MB
« Reply #2 on: August 24, 2006, 11:22:59 AM »
TierMBt2

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.

Offline Ramiro

  • Bot Neophyte
  • *
  • Posts: 25
    • View Profile
Workable MB
« Reply #3 on: September 02, 2006, 09:32:54 AM »
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
« Last Edit: September 02, 2006, 09:38:34 AM by Ramiro »

Offline Jez

  • Bot Overlord
  • ****
  • Posts: 788
    • View Profile
Workable MB
« Reply #4 on: September 03, 2006, 08:18:59 AM »
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!
If you try and take a cat apart to see how it works, the first thing you have in your hands is a non-working cat.
Douglas Adams

Offline Ramiro

  • Bot Neophyte
  • *
  • Posts: 25
    • View Profile
Workable MB
« Reply #5 on: September 04, 2006, 08:15:52 AM »
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?

Offline Jez

  • Bot Overlord
  • ****
  • Posts: 788
    • View Profile
Workable MB
« Reply #6 on: September 05, 2006, 05:43:20 AM »
It's great isn't it!

I presume you are talking about this bit of code;

Code: [Select]
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;
Code: [Select]
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.  
If you try and take a cat apart to see how it works, the first thing you have in your hands is a non-working cat.
Douglas Adams

Offline Ramiro

  • Bot Neophyte
  • *
  • Posts: 25
    • View Profile
Workable MB
« Reply #7 on: September 07, 2006, 07:25:48 PM »
Thanks for the idea!!!