Author Topic: IM is getting interesting  (Read 2850 times)

Offline Testlund

  • Bot God
  • *****
  • Posts: 1573
    • View Profile
    • Games And Electronica
IM is getting interesting
« on: September 28, 2008, 03:18:29 AM »
For the first time bots entering my sim don't get killed instantly. A whole bunch of species have been roaming my sim this time around. First Multiply4 was the most successful, but seem to have been replaced by VC and Flyfruit. I don't know if they evolved more successful or if you have redesigned them. Thought I should upload a screenshot of it.  
"God is an ever receding pocket of scientific ignorence." - Neil DeGrasse Tyson

"God is a kid with an ant farm" - Constantine

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
IM is getting interesting
« Reply #1 on: September 29, 2008, 06:08:43 AM »
I think it might be a compination of VC getting infected by the virus in FlyFruit and the infected bots mutating to improve survival of the infected bots...
I know the VC I've seen so far where infected by the virus but didn't seem to act like fruit flies... it was more of a fungus like behavior... but seemed to work pretty well....

Offline Testlund

  • Bot God
  • *****
  • Posts: 1573
    • View Profile
    • Games And Electronica
IM is getting interesting
« Reply #2 on: September 29, 2008, 12:06:58 PM »
And one of those bots infected my Autotroph with it's dna causing it to start multiplying quickly, increased CostX to over 2, then the population dropped down, lowering CostX to 0. I'll run it again tonight and see how it goes.
"God is an ever receding pocket of scientific ignorence." - Neil DeGrasse Tyson

"God is a kid with an ant farm" - Constantine

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
IM is getting interesting
« Reply #3 on: October 02, 2008, 10:59:08 AM »
I tryed running an sim on IM with standard F1 costs and some regular alge in it.
Didn't take long for some Seasnakes to pop in from eric.

They look like this now :
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']''''''''''''''''''''''''  Gene:  1 Begins at position  1  '''''''''''''''''''''''
 cond
 *111 431 !=
 start
 99 .sharenrg store
 .dnalen store
 300 .memloc store
 336 973 store
 *.body 5 >
 *.nrg 80 >
 dropbool
 *.maxvel .dn store
 50 .repro store
 *.totalmyspecies 1000 <
 *.nrg 200 >
 and
 60 mult not
 *.body 1 >
 and
 *.body 0 sub 10 drop 10 91 floor 312 *.robage !=
 0 *.numties 1 -3 >
 .tienum inc
 *.numties .up store
 >
 or
 and
 *.numties .deltie store
 dupbool
 *973 and
 =
 1 453 .tieloc store
 1000 .tieval store
 not
 and
 =
 2 *973 dupbool
 452 .tieloc store
 -1 .tieval store
 dropbool
 *973 2 >
 and
 8 .tieval store
 1 *.body =
 0 *.numties =
 and
 dupbool
 *.eye5 0 =
 *.memval *.dnalen dec
 =
 or
 and
 350 .aimright store
 *.eye5 0 *.dnalen !%=
 and
 *.refbody 20 >
 *.totalmyspecies 600 >
 or
 and
 *.refxpos *.refypos floor .setaim store
 .tie inc
 clearbool
 dec
 *.thisgene *.genes sgn add >=
 *.genes 777 *777 1 sub -1 mult sqr dup *777 .genes dec
 *.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 ceil dec
 stop
''''''''''''''''''''''''  Gene:  1 Ends at position  179  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  2 Begins at position  180  '''''''''''''''''''''''
 cond
 *104 431 2 !=
 start
 .eye5width store
 336 .eye3width store
 336 .tmemloc store
 *.body 80 >
 and
 *.maxvel store
 402 -133 1000 <
 *.nrg 200 >
 and
 ^ 60 *.body 10 mult sub .strbody inc
 not
 *.body 10 mult 10 sub 0 floor .fdbody store
 *.numties 0 div *.robage 1 >
 and
 *.tiepres .tienum store
 *.tmemval *.dnalen !=
 *.numties 8 >
 or
 and
 *.numties .deltie store
 *.tmemval *.dnalen !=
 452 .tieloc store
 -1 .tieval store
 *.numties 0 =
 and
 dupbool
 *.eye5 0 =
 *.memval dec
 *.dnalen =
 or
 and
 350 .aimright store
 dropbool
 *.memval *308 !=
 and
 *683
''''''''''''''''''''''''  Gene:  2 Ends at position  278  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  3 Begins at position  279  '''''''''''''''''''''''
 cond
 .setaim store
 .tie inc
 clearbool
 *.genes
''''''''''''''''''''''''  Gene:  3 Ends at position  285  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  4 Begins at position  286  '''''''''''''''''''''''
 cond
 .genes dec
 *.thisgene *.genes sgn add .mkvirus store
 *.genes 777 *777 1 sub overbool
 mult sqr dup store
 mult *777 store
 *.thisgene 1 sub sgn 1 *.thisgene *.shootval mult sqr *.thisgene add 7 1 sub clear add sgn -1 mult mult add .delgene store
 else
''''''''''''''''''''''''  Gene:  4 Ends at position  331  '''''''''''''''''''''''


As far as I can tell it's been infected by the virus version of Fruit Flie twice and then mutations have caused it to adopt a very different behavior.
Inititaly fruit flies would consume and kill everything in sight, but this thing protects the alge instead and feeds on them without killing them... so basicaly it's breeding alga minimalis while forming a fungus like patern around them... I don't know if the alga minimalis in erics sim are infected with something, but in my sim it seems like the bots around the alge are enough to protect it against other predators.
Either way Fruit Flies was never buildt for mutations, so I think it's very cool that chance caused a bot to get infected twice, making mutations less harmfull and allowing it to evolve.
This thing is so badly mutated by now you can barely reconize it, the only way I can tell it's 2 fruitflies is from the remains of the virus key.
Actualy I think this may generaly be a good idea when mutating a hand authored bot, just copy paste evrything a few times, easy way to make it more stable during the early stages of it's evolution.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
IM is getting interesting
« Reply #4 on: October 02, 2008, 11:32:32 AM »
Quote from: Moonfisher
I don't know if the alga minimalis in erics sim are infected with something, but in my sim it seems like the bots around the alge are enough to protect it against other predators.
They aren't.  I'm actually running a pre-version of 2.44.1 on my machine(s) that prevents veggies from getting infected with virus's when running in IM.  Viruses are too powerful in my opinion.  In IM at least, it strikes me as unfair that one can infect the all the veggies in a foreign sim.   The incoming nrg in certain sims may be such that veggies are supposed to be long lived and the eco-system may be adapted to that.  Infecting such long-lived veggies that essentially can't be killed is an enormous weapon, a sure way to insure everything in the sim gets infected no matter what.

Viruses are hard to see, hard to track, hard to watch speciate or compete as they change.  I'd prefer to tip that balance back towards viruses as a heterotroph to heterotroph weapon used by bots without veggy intermediaries.  Otherwise they essentially become the primary unit of evolution.  I'm open to opinions here of course, but inclined to do this.

Additionally, I plan to re-visit the whole infection paradigm soon.  I'd like to enable multi-gene viruses with a sequence-matching paradigm for infection targeting.  This would would provide a much more fertile ground for arms-race evolution of infection and resistance strategies between bots and viruses.

Many beers....

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
IM is getting interesting
« Reply #5 on: October 02, 2008, 01:07:21 PM »
Well infecting the alge can certainly be a great advantage in the F1 league, although EtchII and Fruitflies don't use any viruses right now it may make a difference later on. But with alge like shrinking violet and flyfruit on IM I wouldn't be too concerned about them getting infected. Ofcourse alga minimalis is an easy target for viruses.

Flyfruit v0.92 is pretty well secured against viruses I think... they should only be able to harm it if they pop in as the last gene.
And with all the slime and the small size it'll rarely get infected anyway.

It removes viruses that are inserted before the first gene or after the last gene.
It also removes viruses that try to spread themselves, which has occured to me is probably a weakness... it should just adopt those aswell...

Either way the last gene contains all behavior and starts out by securing against anything that may affect the way the alge works.
Since it's simple in many ways and blind, it didn't need to secure that many locations....

Eiher way I think it's pretty safe against viruses and it's able to adopt new viruses as it's own if it gets infected... I just need to remove the few lines causing it to delete whatever is in .mkvirus, since this could just be used as a weapon... (I think several of the viruses in there actualy adds the next gene to .mkvirus to make a bot delete itself trying to remove the virus)

Anyway, this is v0.92 as it looks now. (Enabled copy errors and delta mutations on IM, but with a low probability, mainly to mutate the viruses)

Code: [Select]
def botlen 280
def lock 431
def alge 4251
def maxpop 1000
def feedtime 6000

def rand 110
def key 111
def virus 112
def badvirus 113
def conspec 114
def tconspec 115
def feeding 116

def type 973

'============================================================================
============

cond
start
*.thisgene 1 !=
1 .badvirus store

.lock *.key !=
.lock .key store
stop


'1
cond
*.key .lock !=
start
.fixpos dec

'-- Birth
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
31999 rnd .out10 store
31999 rnd .tout10 store

*.memval *.dnalen !=
*.in9 .alge !=
*.in10 .out10 = or and
1 .conspec store

not
2 .conspec store

*.eye5 0 =
0 .conspec store

*.tmemval *.dnalen !=
*.tin9 .alge !=
*.tin10 .tout10 = or and
*.robage 1 > and
1 .tconspec store

not
2 .tconspec store

*.numties 0 =
0 .tconspec store

*.robage 0 =
5 rnd .rand store

*.rand 4 < and
*.rand .type store

*.type 0 =
*.type 3 >= or
3 rnd .type store


'-- Reproduction
*.body 5 >
*.nrg 80 > and
*.maxvel .dn store
50 .repro store

'*.totalmyspecies .maxpop <
*.nrg 200 > 'and
60 *.body 10 mult sub .strbody store


'-- Shrinking
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store


'-- Tie feeding
*.tconspec 2 =
*.numties 1 > or
*.numties .deltie store

*.tconspec 1 =
*.tiepres .tienum store
40 .stifftie store
99 .sharenrg store
10 .fixlen store

dupbool
*.type 1 = and
.tieval .tieloc store
1000 .tieval store

dropbool
dupbool
*.type 2 = and
.tieloc .tieloc store
-1 .tieval store

dropbool
*.type 2 > and
.shootval .tieloc store
-31999 .tieval store

'-- Hunting
*.numties 0 =
*.body 1 = and
dupbool
*.eye5 0 =
*.conspec 2 = or and
350 .aimright store

dropbool
*.conspec 1 = and
*.refxpos *.refypos angle .setaim store
.tie inc

clearbool
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
stop


'============================================================================
============

'2
cond
*.key .lock !=
start
32000 819 7 rnd add store
10000 rnd 520 19 rnd add store
stop

'3
cond
*.key .lock !=
start
32000 819 7 rnd add store
stop

'4
cond
*.key .lock !=
start
32000 299 14 rnd add store
stop

'5
cond
*.key .lock !=
start
32000 309 4 rnd add store
stop

'6
cond
*.key .lock !=
start
32000 .mkshell store
32000 .shootval store
32000 .strvenom store
32000 .mkpoison store
32000 .strbody store
.shoot dec
stop

'7
cond
*.key .lock !=
start
32000 .mkshell store
-31999 .shootval store
32000 .strbody store
-31999 .fdbody store
.shoot dec
stop

'8
cond
*.key .lock !=
start
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
100 .vshoot store
stop

'9
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
stop

'10
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
*.thisgene 1 sub .delgene store
stop

'11
cond
*.key .lock !=
start
.mkvirus inc
32000 .vshoot store
stop

'12
cond
*.key .lock !=
start
-31999 .shootval store
0 .tie store
.shoot dec
stop

'13
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
50 .repro store
stop

'------------------------------  Copy's, add more stuff no more news here

'****************************************************************************
*******************
'============================================================================
==================
'****************************************************************************
*******************


'Stolen

'Virus 1 - kill shot
cond
*.key .lock !=
start
*.thisgene .mkvirus store
-32000 .vshoot store
stop

'Virus 2 - clears genes
cond
*.key .lock !=
start
*.thisgene 1 rnd 2 mult -- add .delgene store
*.thisgene .mkvirus store
*.nrg 2 div .vshoot store
stop

'Virus 3 - ties to others
cond
*.key .lock !=
start
*.thisgene .mkvirus store
50 .vshoot store
.tie inc
-1 .tieloc store
-1000 *.tin2 77 sub sgn abs 2 mult -- mult .tieval store
stop

'Virus 4 - Mass reproduction
cond
*.key .lock !=
start
*.thisgene .mkvirus store
20 *.nrg sub sgn 0 floor mult .repro store
100 .vshoot store
stop

Virus 5 - Spreads virus to other areas
cond
*.key .lock !=
start
20 .dx store
20 .up store
*.thisgene .mkvirus store
50 .vshoot store
stop


cond
*.key .lock !=
start
*.thisgene .mkvirus store
100 .vshoot store
.tie inc
25 *.nrg 200 sub sgn 1 add mult .repro store
12 .up store
600 rnd .aimsx store
*.nrg 3 div *.body sub .strbody store
*.body *.nrg 3 div sub .fdbody store
-32000 .shootval store
.shootval .shoot store
0 .delgene store
stop


'============================================================================
==================
'****************************************************************************
*******************
'---------------------- DUPLICATES -------------------------------------------------------------
'****************************************************************************
*******************
'============================================================================
==================

'1
cond
*.key .lock !=
start
.fixpos dec

'-- Birth
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
31999 rnd .out10 store
31999 rnd .tout10 store

*.memval *.dnalen !=
*.in9 .alge !=
*.in10 .out10 = or and
1 .conspec store

not
2 .conspec store

*.eye5 0 =
0 .conspec store

*.tmemval *.dnalen !=
*.tin9 .alge !=
*.tin10 .tout10 = or and
*.robage 1 > and
1 .tconspec store

not
2 .tconspec store

*.numties 0 =
0 .tconspec store

*.robage 0 =
5 rnd .rand store

*.rand 4 < and
*.rand .type store

*.type 0 =
*.type 3 >= or
3 rnd .type store


'-- Reproduction
*.body 5 >
*.nrg 80 > and
*.maxvel .dn store
50 .repro store

'*.totalmyspecies .maxpop <
*.nrg 200 > 'and
60 *.body 10 mult sub .strbody store


'-- Shrinking
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store


'-- Tie feeding
*.tconspec 2 =
*.numties 1 > or
*.numties .deltie store

*.tconspec 1 =
*.tiepres .tienum store
40 .stifftie store
99 .sharenrg store
10 .fixlen store

dupbool
*.type 1 = and
.tieval .tieloc store
1000 .tieval store

dropbool
dupbool
*.type 2 = and
.tieloc .tieloc store
-1 .tieval store

dropbool
*.type 2 > and
.shootval .tieloc store
-31999 .tieval store

'-- Hunting
*.numties 0 =
*.body 1 = and
dupbool
*.eye5 0 =
*.conspec 2 = or and
350 .aimright store

dropbool
*.conspec 1 = and
*.refxpos *.refypos angle .setaim store
.tie inc

clearbool
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
stop


'============================================================================
============

'2
cond
*.key .lock !=
start
32000 819 7 rnd add store
10000 rnd 520 19 rnd add store
stop

'3
cond
*.key .lock !=
start
32000 819 7 rnd add store
stop

'4
cond
*.key .lock !=
start
32000 299 14 rnd add store
stop

'5
cond
*.key .lock !=
start
32000 309 4 rnd add store
stop

'6
cond
*.key .lock !=
start
32000 .mkshell store
32000 .shootval store
32000 .strvenom store
32000 .mkpoison store
32000 .strbody store
.shoot dec
stop

'7
cond
*.key .lock !=
start
32000 .mkshell store
-31999 .shootval store
32000 .strbody store
-31999 .fdbody store
.shoot dec
stop

'8
cond
*.key .lock !=
start
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
100 .vshoot store
stop

'9
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
stop

'10
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
*.thisgene 1 sub .delgene store
stop

'11
cond
*.key .lock !=
start
.mkvirus inc
32000 .vshoot store
stop

'12
cond
*.key .lock !=
start
-31999 .shootval store
0 .tie store
.shoot dec
stop



'1
cond
*.key .lock !=
start
.fixpos dec

'-- Birth
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
31999 rnd .out10 store
31999 rnd .tout10 store

*.memval *.dnalen !=
*.in9 .alge !=
*.in10 .out10 = or and
1 .conspec store

not
2 .conspec store

*.eye5 0 =
0 .conspec store

*.tmemval *.dnalen !=
*.tin9 .alge !=
*.tin10 .tout10 = or and
*.robage 1 > and
1 .tconspec store

not
2 .tconspec store

*.numties 0 =
0 .tconspec store

*.robage 0 =
5 rnd .rand store

*.rand 4 < and
*.rand .type store

*.type 0 =
*.type 3 >= or
3 rnd .type store


'-- Reproduction
*.body 5 >
*.nrg 80 > and
*.maxvel .dn store
50 .repro store

'*.totalmyspecies .maxpop <
*.nrg 200 > 'and
60 *.body 10 mult sub .strbody store


'-- Shrinking
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store


'-- Tie feeding
*.tconspec 2 =
*.numties 1 > or
*.numties .deltie store

*.tconspec 1 =
*.tiepres .tienum store
40 .stifftie store
99 .sharenrg store
10 .fixlen store

dupbool
*.type 1 = and
.tieval .tieloc store
1000 .tieval store

dropbool
dupbool
*.type 2 = and
.tieloc .tieloc store
-1 .tieval store

dropbool
*.type 2 > and
.shootval .tieloc store
-31999 .tieval store

'-- Hunting
*.numties 0 =
*.body 1 = and
dupbool
*.eye5 0 =
*.conspec 2 = or and
350 .aimright store

dropbool
*.conspec 1 = and
*.refxpos *.refypos angle .setaim store
.tie inc

clearbool
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
stop


'============================================================================
============

'2
cond
*.key .lock !=
start
32000 819 7 rnd add store
10000 rnd 520 19 rnd add store
stop

'3
cond
*.key .lock !=
start
32000 819 7 rnd add store
stop

'4
cond
*.key .lock !=
start
32000 299 14 rnd add store
stop

'5
cond
*.key .lock !=
start
32000 309 4 rnd add store
stop

'6
cond
*.key .lock !=
start
32000 .mkshell store
32000 .shootval store
32000 .strvenom store
32000 .mkpoison store
32000 .strbody store
.shoot dec
stop

'7
cond
*.key .lock !=
start
32000 .mkshell store
-31999 .shootval store
32000 .strbody store
-31999 .fdbody store
.shoot dec
stop

'8
cond
*.key .lock !=
start
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
100 .vshoot store
stop

'9
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
stop

'10
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
*.thisgene 1 sub .delgene store
stop

'11
cond
*.key .lock !=
start
.mkvirus inc
32000 .vshoot store
stop

'12
cond
*.key .lock !=
start
-31999 .shootval store
0 .tie store
.shoot dec
stop



'1
cond
*.key .lock !=
start
.fixpos dec

'-- Birth
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
31999 rnd .out10 store
31999 rnd .tout10 store

*.memval *.dnalen !=
*.in9 .alge !=
*.in10 .out10 = or and
1 .conspec store

not
2 .conspec store

*.eye5 0 =
0 .conspec store

*.tmemval *.dnalen !=
*.tin9 .alge !=
*.tin10 .tout10 = or and
*.robage 1 > and
1 .tconspec store

not
2 .tconspec store

*.numties 0 =
0 .tconspec store

*.robage 0 =
5 rnd .rand store

*.rand 4 < and
*.rand .type store

*.type 0 =
*.type 3 >= or
3 rnd .type store


'-- Reproduction
*.body 5 >
*.nrg 80 > and
*.maxvel .dn store
50 .repro store

'*.totalmyspecies .maxpop <
*.nrg 200 > 'and
60 *.body 10 mult sub .strbody store


'-- Shrinking
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store


'-- Tie feeding
*.tconspec 2 =
*.numties 1 > or
*.numties .deltie store

*.tconspec 1 =
*.tiepres .tienum store
40 .stifftie store
99 .sharenrg store
10 .fixlen store

dupbool
*.type 1 = and
.tieval .tieloc store
1000 .tieval store

dropbool
dupbool
*.type 2 = and
.tieloc .tieloc store
-1 .tieval store

dropbool
*.type 2 > and
.shootval .tieloc store
-31999 .tieval store

'-- Hunting
*.numties 0 =
*.body 1 = and
dupbool
*.eye5 0 =
*.conspec 2 = or and
350 .aimright store

dropbool
*.conspec 1 = and
*.refxpos *.refypos angle .setaim store
.tie inc

clearbool
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
stop


'============================================================================
============

'2
cond
*.key .lock !=
start
32000 819 7 rnd add store
10000 rnd 520 19 rnd add store
stop

'3
cond
*.key .lock !=
start
32000 819 7 rnd add store
stop

'4
cond
*.key .lock !=
start
32000 299 14 rnd add store
stop

'5
cond
*.key .lock !=
start
32000 309 4 rnd add store
stop

'6
cond
*.key .lock !=
start
32000 .mkshell store
32000 .shootval store
32000 .strvenom store
32000 .mkpoison store
32000 .strbody store
.shoot dec
stop

'7
cond
*.key .lock !=
start
32000 .mkshell store
-31999 .shootval store
32000 .strbody store
-31999 .fdbody store
.shoot dec
stop

'8
cond
*.key .lock !=
start
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
100 .vshoot store
stop

'9
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
stop

'10
cond
*.key .lock !=
start
*.thisgene .mkvirus store
32000 .vshoot store
*.thisgene 1 sub .delgene store
stop

'11
cond
*.key .lock !=
start
.mkvirus inc
32000 .vshoot store
stop

'12
cond
*.key .lock !=
start
-31999 .shootval store
0 .tie store
.shoot dec
stop

'============================================================================
============

'****************************************************************************
****

cond
start

'---------- Antiviral safety ---------------
0 .shoot *.shoot abs sgn mult store
0 .shootval *.shootval abs sgn mult store
0 .mkshell *.mkshell abs sgn mult store
0 .mkslime *.mkslime abs sgn mult store
0 .strvenom *.strvenom abs sgn mult store
0 .strpoison *.strpoison abs sgn mult store
0 .tie *.tie abs sgn mult store
0 .strbody *.strbody abs sgn mult store
0 .fdbody *.fdbody abs sgn mult store
0 .backshot *.backshot abs sgn mult store
0 .aimshoot *.aimshoot abs sgn mult store
0 .repro *.repro abs sgn mult store
0 .mrepro *.mrepro abs sgn mult store
0 .sexrepro *.sexrepro abs sgn mult store
0 .aimdx *.aimdx abs sgn mult store
0 .aimsx *.aimsx abs sgn mult store
0 .up *.up abs sgn mult store
0 .sx *.sx abs sgn mult store
0 .dx *.dx abs sgn mult store
0 .dn *.dn abs sgn mult store
0 .tieloc *.tieloc abs sgn mult store
0 .tieval *.tieval abs sgn mult store
0 .stifftie *.stifftie abs sgn mult store
0 .deltie *.deltie abs sgn mult store
0 .delgene *.delgene abs sgn mult store
0 .tienum *.tienum abs sgn mult store
0 .tieang *.tieang abs sgn mult store
0 .tielen *.tielen abs sgn mult store
0 .fixpos *.fixpos abs sgn mult store
0 .setboy *.setboy abs sgn mult store
'---------- Last of : Antiviral safety ---------------

*.setaim *.aim !=
*.aim .setaim store

*.dnalen 20000 >
2 .delgene store

*.badvirus 0 !=
1 .delgene store
0 .badvirus store

*.mkvirus 0 !=
*.mkvirus *.virus != and
*.mkvirus .delgene store

*.thisgene *.genes !=
*.thisgene 1 add .delgene store

clearbool
*.body 10 mult 10 sub 0 floor .fdbody store
*.maxvel .dn store
.deltie inc
.fixpos dec
50 .repro store
99 .sharenrg store
99 .shareshell store
99 .shareslime store
1 .sharewaste store
.dn .shoot store
32000 .shootval store
.alge .out9 store
.alge .tout9 store
31999 rnd .out10 store
31999 rnd .tout10 store

.dnalen *.memloc !=
.dnalen .memloc store
.dnalen *.tmemloc !=
.dnalen .tmemloc store
.body *.ploc !=
.body .ploc store
.fixpos *.vloc !=
.fixpos .vloc store
1 *.venval !=
1 .venval store

*.robage 0 =
628 rnd 314 sub *.aim 628 add add .setaim store
15 rnd .rand store

*.rand 6 < and
*.rand .type store

*.type 0 =
*.type 6 >= or
5 rnd .type store

*.type 1 =
-1 .tieloc store
-1000 .tieval store

*.type 2 =
.tieloc .tieloc store
-1 .tieval store

*.type 3 =
.tieval .tieloc store
1000 .tieval store

*.type 4 =
.fixpos .tieloc store
1 .tieval store

*.type 4 >
.shootval .tieloc store
-31999 .tieval store

*.shflav 0 !=
150 rnd 300 sub dup .aimright stor
10 mult .sx store
0 .shflav store
-3 .shoot store

*.nrg 500 >
*.robage 10 > and
200 *.shell sub .mkshell store
300 *.poison sub 0 floor .strpoison store
100 *.venom sub 0 floor .mkvenom store
3 .mkslime store

*.nrg 1000 >
*.robage 10 > and
500 *.shell sub .mkshell store
600 *.poison sub 0 floor .strpoison store
5 .mkslime store

*.nrg 2000 >
*.robage 10 > and
1000 *.shell sub .mkshell store
1100 *.poison sub 0 floor .strpoison store
8 .mkslime store


'==================================DROP FEEDING THING, JUST USE IN OUT CONSPEC ???


*.tin10 *.tout10 !=
*.tmemval .botlen = and
*.feeding 0 > or
*.nrg .feedtime > and
*.tiepres .tienum store
-1 .tieloc store
1000 .tieval store
1 .sharenrg store
0 .deltie store

clearbool
*.feeding 0 >
.feeding inc

*.feeding 5 >
*.nrg .feedtime < or
*.numties 0 = or
0 .feeding store

*.feeding 2 >
*.tmemval .botlen != and
0 .feeding store

*.numties 0 =
*.in10 *.out10 != and
*.memval .botlen = and
*.nrg .feedtime > and
.tie inc
1 .tienum store
-1 .tieloc store
1000 .tieval store
1 .sharenrg store
1 .feeding store
0 .deltie store

*.numties 0 >
*.feeding 0 = and
*.numties .deltie store

*.tiepres 0 >
*.feeding 0 = and
*.tiepres .deltie store
0 .tiepres store

*.vtimer 0 =
*.genes 2 sub rnd 1 add dup .mkvirus store
.virus store

*.vtimer 1 =
*.nrg 300 > and
*.nrg 30 div .vshoot store

*.vshoot *.nrg 30 div >
0 .vshoot store

*.timer 10 mod 0 =
200 rnd 20 floor *.aim add .setaim store
stop

end
I only made 13 different viruses or so and copy pasted them to increase chances a new virus would land in there.
Then I also stole a few viruses from bacilus and jammed them in there

So basicaly there's no need to look at all the viruses, the first and last gene contains all behavior.... one of the 13 viruses is fruitflies turned into a virus...
This version actualy starts out feeding the infected bots untill mutations change their dna length...

And making viruses more advanced sounds interesting although I'm not sure exactly what you have in mind...

I also tryed running a sim with just a few alga minimalis and seasnake (Not on IM to avoid flyfruits coming in), and it looks like it doesn't reproduce that much or feed that much from the alge, it just ties all the alge together with only a few bots and wigles around from tie length adjustment and such... but if I throw in Multiply then the second it attacks the alge the population explodes... so it looks like it saves the alge for when it realy needs it and defends it when something attacks it... the stronger the oponent the bigger the population increase... not sure how it's doing it.
« Last Edit: December 22, 2011, 11:42:22 AM by Shasta »

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
IM is getting interesting
« Reply #6 on: October 04, 2008, 02:56:42 AM »
Did you use the Sentinel virus? The sentinel bot itself was pretty stupid, but I think with some work, the virus can be devastating as it controls all the veggies after a while.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
IM is getting interesting
« Reply #7 on: October 04, 2008, 09:22:38 AM »
These where the viruses I stole from you... all inserted just once before all the dublicates of the first 13 viruses...
Didn't even check to see what they did, just needed some more viruses and was too lazy to make 'em myself...
One of the funnies viruses I thought of was this line : 10000 rnd 520 19 rnd add store
Realy messses up your eyes... not very effective as such, but the more advanced the eyes of a bot are the more this will harm it. (Unless it checks every cycle to fix the eyes again) And it looks funny

Code: [Select]
'Virus 1 - kill shot
cond
*.key .lock !=
start
*.thisgene .mkvirus store
-32000 .vshoot store
stop

'Virus 2 - clears genes
cond
*.key .lock !=
start
*.thisgene 1 rnd 2 mult -- add .delgene store
*.thisgene .mkvirus store
*.nrg 2 div .vshoot store
stop

'Virus 3 - ties to others
cond
*.key .lock !=
start
*.thisgene .mkvirus store
50 .vshoot store
.tie inc
-1 .tieloc store
-1000 *.tin2 77 sub sgn abs 2 mult -- mult .tieval store
stop

'Virus 4 - Mass reproduction
cond
*.key .lock !=
start
*.thisgene .mkvirus store
20 *.nrg sub sgn 0 floor mult .repro store
100 .vshoot store
stop

Virus 5 - Spreads virus to other areas
cond
*.key .lock !=
start
20 .dx store
20 .up store
*.thisgene .mkvirus store
50 .vshoot store
stop


cond
*.key .lock !=
start
*.thisgene .mkvirus store
100 .vshoot store
.tie inc
25 *.nrg 200 sub sgn 1 add mult .repro store
12 .up store
600 rnd .aimsx store
*.nrg 3 div *.body sub .strbody store
*.body *.nrg 3 div sub .fdbody store
-32000 .shootval store
.shootval .shoot store
0 .delgene store
stop
« Last Edit: December 22, 2011, 11:39:37 AM by Shasta »

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
IM is getting interesting
« Reply #8 on: October 05, 2008, 04:00:30 AM »
The kill shot really should have 32000 instead of -32000.
virus 3 looks like one of the early stages of Occura Amplificis, may be a bit dodgy. Be sure to replace .tin2 and 77 to whatever you use as tie conspec.
virus 6 IS the OA virus!

yeah, could work, I made a bot once called Virulus Multivirus, which I eventually gave up on due to its incompetence due to it being beaten by veggies, that detected which virus was most abundant in its DNA by having each virus increment a unique memory location, and then firing that virus. Disadvantage was, the control gene either had to be separate (making it inaccurate) or in every virus (making it slow).

Quote from: EricL
Otherwise they essentially become the primary unit of evolution.  I'm open to opinions here of course, but inclined to do this.

I think that's the point. Viruses evolve as well, although the current program as it is doesn't require them to. Bots should be able to destroy viruses floating round, which is just not possible if they are pixel-sized dots floating around. Then again, viruses don't just kill and are voluntarily made in DB...
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7713
    • View Profile
IM is getting interesting
« Reply #9 on: October 05, 2008, 10:34:06 AM »
I rather like how viruses evolve.  More so than any other part of the program it models real life astoundingly well.  Don't fight the virus mutations, embrace it!  It does make tracking mutations and evolution harder, though.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
IM is getting interesting
« Reply #10 on: October 05, 2008, 05:31:22 PM »
This is a really interesting topic. Should viruses be allowed to evolve freely, or do they have to wait for their hosts to mutate? Probably having a mutating host would make evolution much more rapid, especially with a fast-spreading virus,  so evolving zerobots might be easier with a force-shot virus.
« Last Edit: October 05, 2008, 05:38:41 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7713
    • View Profile
IM is getting interesting
« Reply #11 on: October 05, 2008, 06:12:51 PM »
Early zerobot sims were successful because of viruses.  At first we thought it was a bug, since there were long sequences of almost identical DNA.  But when I spent the effort to look at a sample sequence, I realized it was a primitive virus.

It might not be the sort of thing most people think of when they think zerobot result, but it's certainly interesting in its own right.

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
IM is getting interesting
« Reply #12 on: October 05, 2008, 07:00:48 PM »
I'd like to see a check box that can prevent viral firing completly, then we could set-up Shepards that can safely force zero bots to fire viruses.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
IM is getting interesting
« Reply #13 on: October 05, 2008, 08:22:40 PM »
I tried a viral evosim today; it seemed to work better than they usually do (I'm not very patient with evosims), but in the end only the veggies evolved, oddly enough only backwards movement though. (and that spread fairly quickly)
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
IM is getting interesting
« Reply #14 on: October 06, 2008, 02:39:26 PM »
Quote from: Endy
I'd like to see a check box that can prevent viral firing completly, then we could set-up Shepards that can safely force zero bots to fire viruses.
Huh, what is the point then. If you force zerobots to fire virusus if they can't. What do I miss.
Oh my god, who the hell cares.