Darwinbots Forum

Bots and Simulations => Bestiary => F2 bots => Topic started by: abyaly on October 07, 2008, 08:13:57 AM

Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 07, 2008, 08:13:57 AM
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
Code: [Select]
'Saber
'F1/F2 bot by abyaly
'Oct 5, 2008
'DB 2.43.1L


'Memory locations in use
def vdir 59
def pop 971
def type 972
def speed 10
def reftype 53
def treftype 54
def timercorrect 973
def enemysize 804

'Identification contants
def id1 9883
def id2 9884
def id3 9885
def key1 73
def key2 1621
def genome 1777

'Type and reftype states
def baby    12
def parry   23
def thrust  34
def riposte 45
def veggie  56
def empty   67
def enemy   78



'********************Species init****************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Gene 0
cond
start
  *.thisgene .delgene store
  10 .pop store
  0 .timer store
  .parry .type store
stop

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Gene 1
cond
start
  *.pop 0 >
  *.robage 0 > and
  *.nrg *.body 10 mult add 800 <= and
  0 .pop store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*********************Unfix myself***************************
  0 .fixpos *.fixed sgn mult store
'************************************************************



'**********************Delete ties***************************
  *.numties 0 >
  *.tiepres .deltie store
clearbool
'************************************************************



'*********************misc***********************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.timer -- .out9 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  .timercorrect 1 =
  1 .out8 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.robage 0 >
  2 .delgene store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.totalmyspecies 10 <=
  *.type .thrust = and
  *.robage 5 > and
  .parry .type store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.totalmyspecies 10 <=
  *.type .parry = and
  *.robage 5 > and
  3 .pop store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.shootval 0 !=
  0 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.sexrepro 0 !=
  0 .sexrepro store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.enemysize 5 >
  *.enemysize 5 sub .enemysize store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*****************local init*********************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eye5dir 628 !=
  628 .eye5dir store 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type 0 =
  .riposte .type store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.robage 0 =
  *.type .parry = and
  *.genes 1 = and
  4 rnd 0 != and
  .thrust .type store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .riposte !=
  *.timercorrect 1 != and
  1 .timercorrect store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*******************Identify myself**************************
  *.type .thrust =
  .id1 *.robage .key1 mod .key2 add mod dup
    .out1 store
    .tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .parry =
  .id2 *.robage .key1 mod .key2 add mod dup
    .out1 store
    .tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .riposte =
  .id3 *.robage .key1 mod .key2 add mod dup
    .out1 store
    .tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*************************ATAN*******************************
'This section calculates the direction the
'bot is going by using
'f = X / (1 + .28X^2)                  (abs x <= 1)
'f = (sgn x) pi/2 - X / (X^2 + .28)    (abs x >  1)
'to approximate arctan (veldx / velup)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'f = X / (1 + .28X^2)                  (abs x <= 1)
'Combined with DB unit conversion, rearranging
'for precision, and premultoplying some
'constants, what I'm using becomes
'f = 71170(*.veldx)(*.velup)/(356(*.velup^2) + 100(*.veldx^2))
  *.veldx abs *.velup abs <=
  7117 10 mult *.veldx *.velup mult mult
    356 *.velup dup mult mult
    100 *.veldx dup mult mult
    add div
  *.velup sgn - sqr 628 mult add
  - *.aim add .vdir store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'f = (sgn x) pi/2 - X / (X^2 + .28)    (abs x >  1)
'Combined with DB unit conversion, rearranging
'for precision, and premultoplying some
'constants, what I'm using becomes
'f = (sgn *.veldx)(sgn *.velup)314
' - 71170(*.veldx)(*.velup)/(100(*.velup^2) + 356(*.veldx^2))
  *.veldx abs *.velup abs >
  *.velup 0 != and
  7117 10 mult *.veldx *.velup mult mult
    356 *.veldx dup mult mult
    100 *.velup dup mult mult
    add div -
  314 *.veldx sgn mult *.velup sgn mult add
  *.velup sgn - sqr 628 mult add
  - *.aim add .vdir store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Velup = 0 is a special case because it corresponds
'to a not-so-finite value of x
  *.velup 0 =
  *.veldx 0 != and
  *.veldx sgn 314 mult - *.aim add .vdir store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'***********************Bodily fluids************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 =
  *.type .riposte != and
  *.nrg *.body 10 mult > and
  *.nrg *.body 10 mult sub .strbody store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 =
  *.nrg *.body 10 mult < and
  *.body 10 mult *.nrg sub .fdbody store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 =
  *.type .thrust != and
  *.shell 100 < and
  *.nrg 800 > and
  100 .mkshell store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 =
  *.type .parry = and
  *.body 10 div .mkslime store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 =
  *.type .parry = and
  *.slime *.body 5 mult < and
  100 .mkslime store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.body 20 >
  *.type .riposte = and
  *.body 20 sub 10 mult .fdbody store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.body 20 <
  *.nrg 300 >= and
  *.type .riposte = and
  100 .strbody store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'************************Target ID***************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  .enemy .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.refage 0 = and
  .baby .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.in1 .id1 *.refage -- .key1 mod .key2 add mod =
  *.in1 .id1 *.refage .key1 mod .key2 add mod = or
  *.refage 0 > and
  *.eyef 0 > and
  .thrust .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.in1 .id2 *.refage -- .key1 mod .key2 add mod =
  *.in1 .id2 *.refage .key1 mod .key2 add mod = or
  *.refage 0 > and
  *.eyef 0 > and
  .parry .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.in1 .id3 *.refage -- .key1 mod .key2 add mod =
  *.in1 .id3 *.refage .key1 mod .key2 add mod = or
  *.refage 0 > and
  *.eyef 0 > and
  .riposte .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.in1 .id1 *.refage -- .key1 mod .key2 add mod != and
  *.in1 .id1 *.refage .key1 mod .key2 add mod !=    and
  *.in1 .id2 *.refage -- .key1 mod .key2 add mod != and
  *.in1 .id2 *.refage .key1 mod .key2 add mod !=    and
  *.in1 .id3 *.refage -- .key1 mod .key2 add mod != and
  *.in1 .id3 *.refage .key1 mod .key2 add mod !=    and
  *.refpoison 0 = and
  *.refshoot 0 =  and
  *.refaimsx 0 =  and
  *.refkills 0 =  and
  *.refshell 0 =  and
  *.refeye 0 =    and
  *.refup 0 =     and
  .veggie .reftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  clearbool
'************************************************************



'************************Tie ID******************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.numties 0 >
  .enemy .treftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.tin1 .id1 *.trefage -- .key1 mod .key2 add mod =
  *.tin1 .id1 *.trefage .key1 mod .key2 add mod = or
  *.numties 0 > and
  .thrust .treftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.tin1 .id2 *.trefage -- .key1 mod .key2 add mod =
  *.tin1 .id2 *.trefage .key1 mod .key2 add mod = or
  *.numties 0 > and
  .parry .treftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.tin1 .id3 *.trefage -- .key1 mod .key2 add mod =
  *.tin1 .id3 *.trefage .key1 mod .key2 add mod = or
  *.numties 0 > and
  .riposte .treftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.numties 0 >
  *.tin1 .id1 *.trefage -- .key1 mod .key2 add mod != and
  *.tin1 .id1 *.trefage .key1 mod .key2 add mod !=    and
  *.tin1 .id2 *.trefage -- .key1 mod .key2 add mod != and
  *.tin1 .id2 *.trefage .key1 mod .key2 add mod !=    and
  *.tin1 .id3 *.trefage -- .key1 mod .key2 add mod != and
  *.tin1 .id3 *.trefage .key1 mod .key2 add mod !=    and
  *.trefpoison 0 = and
  *.trefshoot 0 =  and
  *.trefaimsx 0 =  and
  *.trefkills 0 =  and
  *.trefshell 0 =  and
  *.trefeye 0 =    and
  *.trefup 0 =     and
  .veggie .treftype store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  clearbool
'************************************************************



'*****************React to allies****************************
'root 2 = 14142 10000 div
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.type .riposte = and
  *.reftype .riposte <= and
  *.in8 1 = and

  *.in9 .timer store
  1 .timercorrect store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .riposte <= and
  *.in5 *.enemysize > and

  *.in5 .enemysize store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.type .parry != and
  *.reftype .riposte <= and

  *.type .riposte =
  *.reftype .parry = and not and

  *.refveldx sgn abs -- - *.refveldx add sgn .speed mult - 14142 mult 20000 div  .dx store
  .speed 14142 mult 20000 div .dn store
  *.vdir 628 add .setaim store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .riposte <= and
  *.type .parry = and

  200 .aimdx store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.type .riposte = and
  *.reftype .parry = and
  *.nrg 500 >= and
 
  *.refxpos *.refypos angle 628 add .setaim store
  *.refveldx .dx store
  *.refveldn 100 add .dn store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 70 >
  *.type .riposte = and
  *.reftype .parry = and

  -2 .shoot store
  32000 .shootval store
  628 .aimshoot store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .parry = and
  *.type .parry != and

  *.refxpos .out2 store
  *.refypos .out3 store

  .timercorrect 1 = and
  *.timer .out4 store 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.reftype .parry !=
  *.type .parry != and
  *.in4 .out4 >=

  *.in2 .out2 store
  *.in3 .out3 store
  *.in4 .out4 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'************************Seeking*****************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 =
  *.type .parry != and
  *.timer 8 mod 157 mult .eye5dir store
  *.vdir 628 add .setaim store
  .speed .dn store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 =
  *.type .parry = and
  200 .aimdx store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .riposte =
  *.out2 *.out3 dist 500 < and
  *.out4 0 > and
  *.out2 *.out3 angle 628 add .setaim store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'******************RAPERAPERAPERAPE**************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .veggie >= and

  *.refxpos *.refypos angle 628 add .setaim store
  628 .aimshoot store

  *.refveldn 100 *.eyef sub add *.velup abs - floor .dn store
  *.refveldx .dx store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 50 >
  *.reftype .veggie = and
  *.type .parry = and

  -6 .shoot store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .veggie =
  *.robage 3 mod 0 = and
  *.type .parry != and

  -8 .shoot store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .veggie =
  *.robage 3 mod 1 = and
  *.type .parry != and

  .sexrepro .shoot store
  99 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .veggie =
  *.robage 3 mod 2 = and
  *.type .parry != and

  .setaim .shoot store
  *.refxpos *.refypos angle .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 50 >
  *.reftype .veggie = and
  *.type .parry != and
  *.memval 25 >= and
  *.timer *.robage add 3 mod 0 = and
 
  .shoot .shoot store
  -2 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 50 >
  *.reftype .veggie = and
  *.type .parry != and
  *.memval 25 >= and
  *.timer *.robage add 3 mod 1 = and

  .shootval .shoot store
  32000 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 50 >
  *.reftype .veggie = and
  *.type .parry != and
  *.memval 25 >= and
  *.timer *.robage add 3 mod 2 = and

  .setaim .shoot store
  *.setaim .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'******************KILLKILLKILLKILL**************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .enemy = and
  *.type .riposte != and
  .dn .speed ceil .dn store
  .dx .speed ceil .speed - floor .dx store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .enemy = and
  *.refbody *.enemysize > and

  *.refbody .enemysize store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Parry is a coward. He runs away from foes.
  *.eyef 0 >
  *.reftype .enemy = and
  *.type .parry = and

  -30 .dn *.refveldn add -10 ceil .dn store

  *.eyef 50 > and
  dupbool
  *.refbody 2 mult 3000 ceil *.body > and

  .fixpos .shoot store
  100 .shootval store
  dropbool

  *.refbody 2 mult 3000 ceil *.body > and
  -6 .shoot store
  0 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.type .parry != and
  *.reftype .enemy = and
  *.poisoned 0 = and
  *.paralyzed 0 = and
  *.refbody 10 <= and

  .fdbody .shoot store
  100 .shootval store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 40 >
  *.reftype .enemy = and
  *.type .riposte = and 
  *.refbody 10 <= and
  *.totalmyspecies 20 > and
  *.numties 0 = and

  .tie inc
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .enemy = and
  *.type .parry != and
  *.poisoned 0 = and
  *.paralyzed 0 = and
  *.refbody 20 >= and
  *.memloc .paralyzed !=
  *.memval 50 <= or and

  10 .strvenom store
  .repro .vloc store
  1000 *.refbody div 50 ceil 5 floor .venval store
  *.venom .shootval store
  -3 .shoot store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eyef 0 >
  *.reftype .enemy = and
  *.poisoned 0 >
  *.paralyzed 0 > or
  *.memval 50 >
  *.memloc .paralyzed = and
  *.refbody 10 > and
  *.type .parry != and or

'  -50 .dn *.refveldn add -10 ceil .dn store
  *.refveldx sgn abs -- - *.refveldx add sgn .speed mult - 14142 mult 20000 div  .dx store
  .speed 14142 mult 20000 div .dn store
  *.vdir 628 add .setaim store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.poisoned 5 >
  *.paralyzed 5 > or

  99 .repro store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eye5 0 >
  *.reftype .enemy = and
  *.memloc .paralyzed != and
  .paralyzed .memloc store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.eye5 0 >
  *.reftype .veggie = and
  *.memloc .totalmyspecies != and
  .totalmyspecies .memloc store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*****************Kill fruitfly and etch*********************
'This section is dedicated to moonfisher, who will read it
'and immediately know what he needs to do to counter it
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.numties 0 >
  *.robage 1 != and
  *.tiepres .tienum store
  0 .shoot store
  0 .shootval store
  100 .tieval store
  100 .mkslime store
  dupbool *.timer *.robage add 2 mod 1 = and
  .fdbody .tieloc store
  dropbool
  *.timer *.robage add 2 mod 0 = and
  .strvenom .tieloc store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************



'*************************Repro******************************
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .parry =
  *.nrg *.body 10 mult add 4000 > and
  *.body *.nrg 10 div add *.enemysize 33 mult 10 div >= and
  180 *.velscalar sub 0 floor .dn store
  20 .repro store
  *.vdir 628 add .setaim store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 >
  *.type .thrust = or
  *.nrg *.body 10 mult add 800 > and

  180 *.velscalar sub .dn store
  50 .repro store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 >
  *.robage 0 =
  *.nrg *.body 10 mult add 800 > or and
  80 .dn store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.pop 0 >
  *.robage 0 = and
  314 .aimdx store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  *.type .riposte =
  *.totalmyspecies 25 < and
  *.nrg *.body 10 mult add 300 > and

  80 *.velscalar sub 0 floor .dn store
  50 .repro store
  *.vdir 628 add .setaim store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
clearbool
'************************************************************

stop



It stomps F1 and F2

Well, it does in 2.43.1L at least. Havent been able to run leagues well in 2.44.


*typo corrected 8 oct 08, 7:13 CDT
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 07, 2008, 09:13:54 AM
I thought it was no longer possible to rape alge ? Generaly thought that raping had gotten nerfed...
Anyway, I haven't figured out what to do yet, I'll take the time to think about it later see if I can come up with something.
Although I do have one idea, but not a great one. I think I can counter the .fdbody think, but not sure how to handle the venom part yet... except keeping more energy.
I think one of the tie attacks in fruitflies should work, but ofcourse if it dies in 1 cycle it probably won't have time to take effect.
Either way I probably need to rape the alge aswell, alga minimalis drives the pop explotion of fruitflies. But is raping getting nerfed ? Or did it get nerfed ? Seems a shame to put a lot of work into raping if it's getting disabled... not even sure you can use viruses on the alge for much longer...
Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 07, 2008, 01:48:43 PM
What I understand is that .sexrepro requires a matching DNA subsequence 3 bp long. So in order to rape algae minimalis you would need to contain some DNA that matches its own.  eg: "50 .repro store."
Although, experimentation shows me that this requirement is not actually in place (yet?), since I've been able to use the console to cause a bot with no DNA at all to rape algae minimalis
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 07, 2008, 05:51:57 PM
3 bp seems a bit lax, doesn't it? I mean everybody knows the Alga Minimalis code, it's easy to set the cond to *.nrg 6000 > and there you go. Perhaps put it up to one gene or something like that.
Title: Saber (F2)(abyaly)07-10-08
Post by: Numsgil on October 07, 2008, 06:13:14 PM
3bp just ensures that there's at least one crossover event.  Otherwise raping a bot would 50/50 give the baby the intact and complete DNA of either the raper or the rapee, which clearly defeats the point of sex in the first place.  It doesn't address the underlying balance issues.  There are probably lots of ways to address it.
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 08, 2008, 07:47:28 PM
Functional or not, it looks cool, sort of like a steam engine, but got stomped fairly quickly.
Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 08, 2008, 08:03:45 PM
Quote from: bacillus
Functional or not, it looks cool, sort of like a steam engine, but got stomped fairly quickly.
By what? And in what DB version?

*edit - ah, I see where the bug is. There was a pair of 3's missing from the code that causes saber to kill certain things. Now everything should be helpless against Saber again. As it should be.
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 08, 2008, 08:39:51 PM
Much better. I'll tell you once it finished running.
Title: Saber (F2)(abyaly)07-10-08
Post by: Commander Keen on October 09, 2008, 04:03:03 AM
Cool, another bot to run in F2
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 09, 2008, 05:29:27 PM
It's top of F1, so I assume F2 will be no different.
Title: Saber (F2)(abyaly)07-10-08
Post by: Commander Keen on October 10, 2008, 07:19:26 PM
Yup, it's #1. I'll update the league standings soon, still have a few bots to run.

Also, we still need to make a decision on whether or not sexrepro is allowed in F2...
Title: Saber (F2)(abyaly)07-10-08
Post by: Numsgil on October 10, 2008, 08:08:26 PM
My vote is not.  It's not balanced, and even if it were I think it's against the spirit of F2.
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 10, 2008, 08:11:58 PM
I don't think it should be allowed either; F1 is pretty close to F2 already, with only ties and viruses seperating it, viruses are too slow and expensive to make much of a difference in F1, which leaves only ties. And if you look at the league table ATM, most bots are probably eligible for F2 as well and even without thier nasty F1 tricks would still do quite well. Adding .sexrepro to the F1 list would make the gap a bit more defined.
Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 10, 2008, 10:47:59 PM
Personally, I'm more in favor of merging F1 and F2 completely and making F3 the "new F2". There isn't that much difference between F1 and F2 right now anyway. I could make an F2 bot that utilizes top F1 tactics, and moonfisher has alluded to being able to do the same.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 12, 2008, 08:30:35 AM
Yeah there's more than just the sexrepro issue... instant kills are the main weapon in both F1 and F2, and there should atleast be some difference between F1 and F2...
But maybe the issue isn't realy the rules in the leagues but rather that some new changes have made it possible to kill your oponent too fast...
IMO if sexrepro required more than just 3 bp to match and maybe couldn't rape the alge (Atleast in league fights) and you capped shootval to something like 30% of the bots total energy... then I think it would help seperate F1 and F2 again...
For instance F2 has rules against tie feeding, but currently it's more efficient to use instant kills which is still allowed in F2. And you can't use viruses in F2, but raping is more powerfull than using viruses... so the rules that should seperate F1 from F2 aren't realy having a strong effect.
I noticed the bot that did best against Saber is the old LoveBot... which is the only other rape bot out there as far as I know... so raping is definately overpowered, you just start the round by infecting some oponents and some alge, then let your own bots fall back and feed on the alge while the oponents spread your genes for you.
I never even finished the fight between lovebot and saber, it was taking too long, pretty sure saber would have won in the end though, but it was still 50/50 after about 30 fights.
Seemed like a lot of the time lovebot would pick something usefull up from saber, so getting rapped served as an advatage because saber didn't kill it but the alge it had infected earlier still fed it... I think most of the times where lovebot won it was using sabers own genes against it, and it seemed to happen quite often... with a few modifications the 2 together could make an interesting evosim maybe...

Anyway I'm going off track, my point was I think the rules for the leagues may still work, just cap shootval to a % of nrg and maybe lock sexrepro alltogether in league fights, or make crossovers more demanding, or atleast disalow breeding with alge... inserting large amount of code in an alge with just a couple of shots is VERY overpowered IMO, it makes the first few cycles of a fight crutial.... who will breed with the alge first ? It's decisive since once you got an alge it will reproduce and hopefully prevent the oponent from infecting an alge of his own (Since the alge can't reproduce past the population cap).
For starters I think it would be easiest to just lock sexrepro in league fights and cap shootval. Then maybe when sexrepro has become more elaborate at a later time it could be reintroduced in F1 or something... atleast that the fastest way I can think of to deal with it and keep the leagues as they are...
Title: Saber (F2)(abyaly)07-10-08
Post by: Peter on October 12, 2008, 11:36:36 AM
Quote from: Numsgil
My vote is not.  It's not balanced, and even if it were I think it's against the spirit of F2.
Well there are more top-bots in F2 that are against the 'spirit of F2' with those insta-kill tie attacks. I feel like instakill is more F1-like.

Quote from: abyaly
Personally, I'm more in favor of merging F1 and F2 completely and making F3 the "new F2". There isn't that much difference between F1 and F2 right now anyway. I could make an F2 bot that utilizes top F1 tactics, and moonfisher has alluded to being able to do the same.
Well, I'm feeling a little to this too.
F3 is no venom, no ties, no virus, and I gues no sexrepro right. Well this is coming close towards a whole other league setup. Time for a specific topic.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 12, 2008, 09:18:37 PM
Maybe there should be a rule against forming new ties in F2... so you could react to them and be able to compete in F1 but not actualy use them as an attack...
And as far as I understand instantkills aren't suposed to be possible, so it's more of a "legal exploit"... so I guess there could be like a grey area rule about not using exploits in F2...
Either way I think it would be a shame to merge F1 and F2... bots tend to get lost in the starting gate when they don't hold a spot in some league... and there should be a step step in between F1 and F3, try to keep a soft learning curve... I think the F2 rules just need some tweeking...
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 13, 2008, 12:07:36 AM
Even with capping .shootval, there's still a lot of memory locations such as producing defense systems, forcing reverse tie-feeding(not sure about this one) and other nasty, I less efficient, stuff to be done with memory shots. If not banning them, how about capping ALL values that result in an action eg. leaving .xpos and the like free?
Title: Saber (F2)(abyaly)07-10-08
Post by: Commander Keen on October 13, 2008, 01:45:40 AM
I could cut all bots that instakill from the F2 league. It probably wouldn't have too much of an effect, besides removing Astronomo and probably severly weakening Spinner, but it would make the F2 league a lot fairer.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 13, 2008, 07:17:17 AM
I think most of the production related stuff is capped... either that or it's so cheap it takes a while to kill a bot this way...
But yes it shouldn't be possible to kill by havng someone spend energy on 32000 venom in one cycle... but I'm pretty sure they're all capped...
And for memmory shots you actualy need to be big enough for your shots to travel anywhere wich means big enough to get hit... where a tie can be formed by a bot size 1 with less than 100 nrg and get an oponent to kill itself just by boosting shootval...
The point is that even with shootval capped there's still a lot of things you can do with ties... theres .mrepro... you can mess up eyes, sometimes conspec, make a lot of shell to slow people down or wichever is more effective. And my impression was that ties weren't suposed to play such a big role in F2.

Also removing the instantkill from Spinner wouldn't hurt too much, removing ties however would force it to focus on combat rather than dirty tricks. Venom and mem shots are still strong, but if instantkills aren't allowed then it think it should be ok.

Either way there's no rush to decide on anything yet, but to me it seems like the "exploits" belong in F1 only... and possibly ties aswell.
Also if you're not allowed to form ties in F2 people could use any form of tie defences they like, like counter leeching or instakills, as long as they don't form any ties themselves...
Reverse tie feeding is powerfull, but it's only in F1 and it does take a while to kill a bot this way... not sure if it's still to powerfull though.
And tricks to kill off small bots should be allowed IMO, atleast as long as small bots seem to have the upper hand. I like that you can just make a size 1 bot eat it's remaining body and such.

And I still think sexrepro should be locked in league fights... or be more strict about how to breed, like taking less of the fertilizers dna, or only genes that more or less match the length of one of ones own genes. Basicaly just something preventing alga minimalis from turning into a large intricate bot of many or very large genes in just a couple of cycles. I liked how viruses need to be as short as possible because of the charge time... maybe semen should need to be stored before you can shoot it... so it would work more or less like charging a virus, but when it's charged you just have 100 sperm shots available...
Anyway just venting ideas... just seems overpowered to put that much DNA into an alge at the beginnning of a league fight.
Title: Saber (F2)(abyaly)07-10-08
Post by: bacillus on October 13, 2008, 11:51:32 PM
I think slime is capped at 10000.
Title: Saber (F2)(abyaly)07-10-08
Post by: Numsgil on October 14, 2008, 02:08:28 AM
Probably all those construction sysvars should be capped to either a hard number or a percentage of body.  I'm not against weaselly ways to kill a bot, but you should have to actually put some effort into it beyond storing one number in one location.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 14, 2008, 12:38:29 PM
How about capping according to costs... so you can only spend X % of your energy on each resource per cycle.
cap = X * nrg/100
if cost * amount > cap
amount = cap/cost

Or something like that anyway, so you can't burn off too much nrg at the time, maybe with a maxcap aswell so bots with lots of nrg aren't too vulnerable to loose too much too fast...
Title: Saber (F2)(abyaly)07-10-08
Post by: Numsgil on October 14, 2008, 01:51:41 PM
Quote from: Moonfisher
How about capping according to costs... so you can only spend X % of your energy on each resource per cycle.
cap = X * nrg/100
if cost * amount > cap
amount = cap/cost

Or something like that anyway, so you can't burn off too much nrg at the time, maybe with a maxcap aswell so bots with lots of nrg aren't too vulnerable to loose too much too fast...

I'm leaning more towards basing it on body, since that makes a certain amount of logical sense (more body = more internal mechanisms for powering a shot, or making venom, etc.).  I think it's fine for huge bots to have to keep more nrg on hand to guard against these sorts of attacks.  It's sort of like a larger bank keeping more liquidity to guard against runs.
Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 15, 2008, 03:12:12 PM
Slime, shell, venom, and poison are capped at 100 made per cycle. Energy transfer rate for .fdbody and .strbody is capped at 100. I propose the cap for each variable-energy action be .body/10 energy spent (or gained, in the case of .fdbody; or replacement cost, in the case of negative .mkshell; you get the idea). This would lump everything together with the current tie-feeding rate, solve the shootval issue, and stop .vshoot suicides.

Also, perhaps rather than merge F1 and F2, we could simply ban .tieloc and .tieval from F2 along with sexrepro. If the combined changes of this post were implemented, F2 would be much more F2-like than it has been in a while.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 15, 2008, 06:10:09 PM
Why not just say that you're not allowed to form ties in F2 ? This would be very easy to spot if a bot is breaking the rule, and it would still be possible to implement tie defences so your bot can compete in F1 aswell...
Also I think a grey area rule that sais you can only use "exploits" in F1... so once a dirty trick is deemed too powerfull it's restricted to F1...
And I still think -8 shots need a charge time before being able to fire, or should only contain the part of your DNA you've charged when you fire the shot, or something like that.
Viruses and -8 shots are very similar, and both have the purpose of getting your DNA into someone else. But a virus will take ages to charge just a single gene, and it will be fired in a random direction, it's expensive to fire the virus, and slime will stop it. A -8 shot can be fired instantly containing 32000 pb with no charge time, no added costs, you can aim the shot, it can contain more than one gene, and the only disadvantage is that you need to be closer to the oponent and follow up with mem shots to force reproduction. And mem shots can be blocked by poison, but I think it was something like 200 poison to stop 1 mem shot...
The uses for viruses just seems very narrow compared to raping... I have a hard time imagining anything I could use a virus for in a league fight... I'm sure there's some way it could still be usefull, maybe as a suplement to raping... but still, I much prefered viruses since you had to think about how you where building them, making them as short as possible, nothing was added unless it was nessesary. Now it just seems too easy...
Not saying I have a great idea for fixing this, but IMO something need to be done
Title: Saber (F2)(abyaly)07-10-08
Post by: abyaly on October 15, 2008, 10:23:08 PM
Sharefeeders and multibots should be OK in F2, since nothing really extreme is going on. However, bots using ties for super effective killing shouldn't. The difference? .tieloc and .tieval.
There is no tie memory manipulation, venom insertion, or (quick) energy transfer without tieloc and tieval. Tie communication can still occur through tout.
Title: Saber (F2)(abyaly)07-10-08
Post by: Moonfisher on October 16, 2008, 07:04:41 AM
I guess you could set it that way... although it creates sort of a grey area... what if a poorly written multibot tends to tie to alge and make them part of the organism sharing energy with it ? How would we even know this was from being poorly written rather than a clever behavior to work around tie feeding ?
Just makes it a litle harder to check if a bot is misusing ties... you would also have to ban mem/venom shots that include .tieloc/.tieval, or you could just have 2 bots cause the oponent to feed you...

There's also the issue that most of the current F2 bots have tie defences in order to be able to compete in F1... one of them being excalibur... one I would hate to see go...

I see the point of having multibots and sharefeeders in F2... but I'm not sure we currently have any of those in F2.
With no tieloc or tieval allowed all the old F2 bots would have to be reviewed. And some may be weaker in F1 without their tie defences...
Maybe there's another way to handle it... that I can't think of...