Darwinbots Forum
General => Off Topic => Topic started by: shvarz on December 10, 2007, 05:22:07 PM
-
I had a surge of virus infections in Alga minimalis this morning. Since the internet mode is supposedly not working, then I could not get it from some other sim. The virus is absolutely rampant, it reached over 300 copies in Alga and it killed off all of bots that were in my sim (Flypaper, Lionfish, Anemone and others).
I am just curious whether this virus appeared on its own or was designed by someone. Here is a representative copy:
start
*.thisgene 335 *.tie sgn 1 sub abs mult inc
*.nrg 100 div 338 *.vtimer sgn 1 sub abs mult store
0 7 *.in3 sgn 1 sub abs mult store
stop
-
That definately looks artificial. No idea who the culprit is though
-
Heh, there's a chance it might be one of mine, the coding looks slightly familiar and there's loads out there.
If it is though, it's mutated beyond my recognition. That third line looks totally mulched.
EDIT: Started up IM, and the first thing that comes in is an enormous clump of infected alga from shvarz. Damn, those things are nasty. I shudder to think what else is out there, especially with mutated strains and such. Looks like some sort of antivirus is mandatory from now on:
cond
*.mkvirus 0 !=
start
*.mkvirus .delgene store
stop
-
The third line looks like it clears out one of the early sysvars, probably .shoot. I'll bet there was some "don't attack me" conspec recognition short circuit in it, but it mutated out to attack the originator. Reminds me of some sort of scifi apocalypse. The bio-weapon engineered to eliminate everyone of a different race from you mutates to attack you too, and everyone dies
-
That's from an older Lionfish 5, totally. I see only two mutations. *.tie was *.vtimer and inc, store. I tried several virus ideas one week ago and dropped that one. It's bugged also, as it should have had .out3 instead of .in3.
But, well, it has spread.
That's actually why I dropped it for the final LF5. Uncontrolled virus are a pest, even worse if they include the .mkvirus and .vshoot.
Current LF5 looks like this:
cond
*.robage 2 >
start
50 .repro *.body 100 sub sgn 0 floor mult *.out3 *.myeye sub sgn abs mult store
10 .strbody *.nrg 500 sub sgn 0 floor mult *.out3 *.myeye sub sgn abs mult store
*.thisgene 1 add .delgene *.out3 *.myeye sub sgn abs mult store
*.thisgene .delgene *.thisgene 3 sub sgn 0 floor mult 1 rnd mult store
stop
I dunno if there are any still around.
-
This virus has been mutating and spreading more and more. Now the most prevalent form has 49 commands. But I sometimes see 9 or 12-command viruses coming into bots, but I can't find them in the DNA. Instead, I find normal genes duplicated. In my view this is just an amazing parallel to real viruses and gene transfer. But I wonder how it happens. Anyone cares enough to explain it to me?
Here's an example:
Mutation log:
Infected with virus of length 9 during cycle 1588647
Infected with virus of length 12 during cycle 1588643
Infected with virus of length 12 during cycle 1588591
Infected with virus of length 12 during cycle 1588523
Infected with virus of length 49 during cycle 1588200
Infected with virus of length 12 during cycle 1588168
Infected with virus of length 12 during cycle 1588030
Infected with virus of length 49 during cycle 1587914
Infected with virus of length 49 during cycle 1587776
Infected with virus of length 49 during cycle 1587248
Infected with virus of length 49 during cycle 1587096
Infected with virus of length 49 during cycle 1587013
Infected with virus of length 49 during cycle 1586772
Copy Error changed value of flow command from start to cond at position 48 during cycle 1583980
DNA:
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 1: Last 'stop' at position 49''''''''''''''''''''''',
cond
*.robage 0 =
start
.tie inc
stop
''''''''''''''''''''''''Gene 2: Last 'stop' at position 57''''''''''''''''''''''',
cond
*.robage 1 =
start
.deltie inc
stop
''''''''''''''''''''''''Gene 3: Last 'stop' at position 65''''''''''''''''''''''',
cond
*.nrg 1000 <
start
10 .fdbody store
stop
''''''''''''''''''''''''Gene 4: Last 'stop' at position 74''''''''''''''''''''''',
cond
*.nrg 10000 >
start
20 .repro store
stop
''''''''''''''''''''''''Gene 5: Last 'stop' at position 83''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 6: Last 'stop' at position 132''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 7: Last 'stop' at position 181''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 8: Last 'stop' at position 230''''''''''''''''''''''',
cond
*.robage 1000 >
*.shell 10000 <
cond
1 .mkshell store
stop
''''''''''''''''''''''''Gene 10: Last 'stop' at position 242''''''''''''''''''''''',
cond
*.robage 1000 >
*.shell 10000 <
cond
1 .mkshell store
stop
''''''''''''''''''''''''Gene 12: Last 'stop' at position 254''''''''''''''''''''''',
cond
*.nrg 11000 >
start
-2 .shoot store
100 .shootval store
200 .aimright store
stop
''''''''''''''''''''''''Gene 13: Last 'stop' at position 269''''''''''''''''''''''',
cond
*.robage 1000 >
*.shell 10000 <
cond
1 .mkshell store
stop
''''''''''''''''''''''''Gene 15: Last 'stop' at position 281''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 16: Last 'stop' at position 330''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 17: Last 'stop' at position 379''''''''''''''''''''''',
cond
*.robage 1000 >
*.shell 10000 <
cond
1 .mkshell store
stop
''''''''''''''''''''''''Gene 19: Last 'stop' at position 391''''''''''''''''''''''',
cond
*.nrg 3000 >
*.robage 30 >
start
10 .strbody store
stop
''''''''''''''''''''''''Gene 20: Last 'stop' at position 403''''''''''''''''''''''',
cond
*.nrg 3000 >
*.robage 30 >
start
10 .strbody store
stop
''''''''''''''''''''''''Gene 21: Last 'stop' at position 415''''''''''''''''''''''',
cond
*.thisgene 1 >
*.out3 *.myeye !=
or
*.robage 20 >
*.vtimer 0 =
start
*.thisgene .mkvirus store
100 .vShoot store
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 over mult store
*.thisgene 340 *.out3 *.myeye 1 floor sub over abs 1 sub abs mult store
stop
''''''''''''''''''''''''Gene 22: Last 'stop' at position 464''''''''''''''''''''''',
cond
*.robage 30 <
start
30 .up store
stop
''''''''''''''''''''''''Gene 23: Last 'stop' at position 473''''''''''''''''''''''',
cond
*.robage 30 =
start
300 rnd .aimright store
stop
''''''''''''''''''''''''Gene 24: Last 'stop' at position 483''''''''''''''''''''''',
cond
*.robage 1000 >
*.poison 200 <
start
1 .mkpoison store
stop
''''''''''''''''''''''''Gene 25: Last 'stop' at position 495''''''''''''''''''''''',
cond
*.nrg 3000 >
*.robage 30 >
start
10 .strbody store
stop
''''''''''''''''''''''''Gene 26: Last 'stop' at position 507''''''''''''''''''''''',
cond
*.nrg 1000 <
start
10 .fdbody store
stop
''''''''''''''''''''''''Gene 27: Last 'stop' at position 516''''''''''''''''''''''',
-
What I think is happening with the small 12 bp viruses is that a virus tries to make itself in to a virus, and another virus hits it in the same cycle. The virus making target gets pushed to another hapless gene.
Viruses are one of my favorite aspects of Darwinbots. They really do feel like real viruses.
-
Meh. Another mutation of a LF6 beta. I'm sorry I seem to have introduced many different virus as I was doing tweaks and tests. Since they can be carried by any host, their chance of survival is at least the chance of their best host.
I noticed the wrong gene transfer too. I think it's related with differences on how .thisgene and .mkvirus understand gene count. That was how nasty plant inherited the whole LF3 DNA, back when LF was one-gene.
-
Cool!
What about this virus: 0 cond
start
*.pleas 0 >
*.myeye 0 =
50 .repro store
314 .aimleft store
*.out3 *.myeye !=
*.robage 1 >
and
*.myeye 0 =
or
*.thisgene 1 add .delgene store
*.thisgene 1 sub 340 1 rnd mult store
*.out3 *.myeye =
*.out3 0 !=
and
*.thisgene 1 >
and
*.thisgene .delgene store
*.vtimer 0 =
*.thisgene .mkvirus store
100 .vShoot store
stop
It deleted bot's own DNA and causes the infected bot to go cancerous by forcing it to divide without limitations. Who made this beast?
-
-
What I think is happening with the small 12 bp viruses is that a virus tries to make itself in to a virus, and another virus hits it in the same cycle. The virus making target gets pushed to another hapless gene.
Yep, you can also delgene a previous gene to throw it off. Kinda buggy, be better if virus size was factored into cost/shot distance, when the actual virus was shot out istead.