Author Topic: Occura Amplificis  (Read 3898 times)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« on: March 21, 2008, 01:12:18 AM »
A complete redesign of Lazy One to omit defensive features and try winning by strength in numbers. A lot of tweaking made it turn out like Commander Keen's Profero Victoria. The red code doesn't seem to do its job, I hope its function is obvious:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
Code: [Select]
cond
start
 *.thisgene .mkvirus store
 150 .vshoot store
 1 .sharenrg store
 .tie inc
 25 *.nrg 500 sub sgn 1 add mult .repro store
 10 .up store
 600 rnd .aimsx store
 *.nrg 3 div *.body sub .strbody store
 *.body *.nrg 3  div sub .fdbody store
 [color=#FF0000]-32000 .shootval store
 .shootval .shoot store[/color]
 0 .delgene store
stop

cond
start
 99 .sharenrg store
 0 .shoot store
 0 .fixpos store
 111 .out3 store
 *.eye3 *.eye5 sub 0 floor *.eye7 *.eye5 sub 0 floor sub .aimsx store
stop

cond
 *.shang 0 !=
start
 *.shang .setaim store
 0 .aimsx store
stop
Able to beat Excalibur in under 1 minute most of the time.

EDIT => The red code does work, as Excalibur mushed it as soon as I removed it.
« Last Edit: May 02, 2014, 01:46:50 PM by Botsareus »
"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 bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #1 on: March 21, 2008, 10:25:55 PM »
Here's the newer version:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
start
 *.thisgene .mkvirus store
 150 .vshoot store
 1 .sharenrg store
 .tie inc
 25 *.nrg 500 sub sgn 1 add mult .repro store
 10 .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

cond
start
 99 .sharenrg store
 1 .sharewaste store
 0 .shoot store
 0 .fixpos *.fixpos sgn abs mult store
 *.eye3 *.eye5 sub 0 floor *.eye7 *.eye5 sub 0 floor sub .aimsx store
stop

cond
 *.shang 0 !=
start
 *.shang .setaim store
 0 .aimsx store
stop

Disposes of waste using .sharewaste, only changes .fixpos if [*.fixpos 0 != ], and trimmed off useless conspec store.
« Last Edit: March 21, 2008, 10:28: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 Commander Keen

  • Moderator
  • Bot Builder
  • *****
  • Posts: 91
    • View Profile
Occura Amplificis
« Reply #2 on: March 22, 2008, 04:09:27 AM »
This can beat Excalibur!!!    

I tried it vs. Excalibur in an F1 contest, and it won. Excalibur won 5 matches and Occura Amplificus won 14.

You might want to consider changing the code to
 -32000 .shootval store
-1 .shoot store

because

 -32000 .shootval store
.shootval .shoot store

just constantly shoots out info shots that don't do anything useful...

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Occura Amplificis
« Reply #3 on: March 22, 2008, 04:18:11 AM »
Well, it makes other bots spend a lot of energy the next time they try to shoot.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Occura Amplificis
« Reply #4 on: March 22, 2008, 08:56:22 AM »
It has a nice solid virus hard to secure against.
Bit long though. I don't think 0 .delgene will help, people usualy place virus defences as the last genes anyway, or atleast they should.
Also if you use .genes dec a lot of bots won't detect the virus.
But remember the more you put in there the longer it will take to channel.
It might be enough to just rotate tie and feed with sharenrg (BTW you can also add -1 .tieloc store 1000 .tieval store, to empty energy faster).
Or you could split them up into 2 or 3 viruses and toggle between them, one that makes them feed you through ties, one to make them shoot -2 shots, and so forth. This way if you only have the biggest virus use .mkvirus to spread itslelf the other viruses won't be vulnerable to virus defences that use *.mkvirus .delgene store.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #5 on: March 24, 2008, 06:16:41 PM »
Quote from: Commander Keen
Excalibur won 5 matches and Occura Amplificus won 14.

Really? I only ran 12 rounds, but I had a 100% win rate.
Now also capable of beating every other F1 league bot, except Pacifist, which it only beats rougly half the time.


Quote from: Numsgil
Well, it makes other bots spend a lot of energy the next time they try to shoot.

Precisely. The shots don't seem to travel too much further, but they do one-shot kill the source.

Quote from: Moonfisher
Also if you use .genes dec a lot of bots won't detect the virus.

Haven't heard that one before. It seems unethical to mess with a bot's internal values  

I need a way for the bot to stop piling itself with its own virus. (See vital virus forum in the bot tavern). At the moment, this is what I'm planning:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
 *42 0 =
start
42 inc
*.thisgene .mkvirus store
150 .vshoot store
1 .sharenrg store
.tie inc
25 *.nrg 500 sub sgn 1 add mult .repro store
10 .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
.genes dec
stop

This way, the code will execute once, and only once (I hope). The virus may seem big, bulky and slow, but believe me, once the bot starts reproducing, it's out there in no time. Don't forget, there will be hundreds of bots making viruses, and a bot will be very lucky if it doesn't get hit. Run a sim with Occura Amplificis about 10 minutes, you'll see the map is covered with nothing but veggies coming and going, and the ones that come only take seconds to get infected.
« Last Edit: March 24, 2008, 06:23:56 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 abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Occura Amplificis
« Reply #6 on: March 24, 2008, 06:34:04 PM »
Quote
Now also capable of beating every other F1 league bot, except Pacifist, which it only beats rougly half the time.
Oh?
It's a shame Jez isn't running the leagues any more. It's hard to see who's ahead.

It is very impressive that you can pack that much power into so few bps.
« Last Edit: March 24, 2008, 06:35:13 PM by abyaly »
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #7 on: March 24, 2008, 07:04:09 PM »
I tried every single suggested modification, even my position 42 trick, and they all dampened the bot's performance.

Maybe I should point out, as a general bit of advice, that I have a large list of bots now, and I won't post a new bot until it has beaten all of them. Many of my bots are a result of weeks worth of tweaking.

I tried every single suggested modification, even my position 42 trick, and they all dampened the bot's performance.

Maybe I should point out, as a general bit of advice, that I have a large list of bots now, and I won't post a new bot until it has beaten all of them. Many of my bots are a result of weeks worth of tweaking. Have a look at the original Lazy One, and see what an improvement this as a proof of concept.
"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 abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Occura Amplificis
« Reply #8 on: March 24, 2008, 07:33:05 PM »
Get Etch Mk II
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #9 on: March 24, 2008, 08:10:54 PM »
Quote from: abyaly
Get Etch Mk II

Point made 
Here's version 2:

Code: [Select]
cond
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

cond
start
 99 .sharenrg store
 1 .sharewaste store
 0 .shoot store
 0 .fixpos *.fixpos sgn abs mult store
 *.eye3 *.eye5 sub 0 floor *.eye7 *.eye5 sub 0 floor sub *.shang sgn abs 1 sub abs mult .aimsx store
 *.shang *.shang sgn abs .setaim mult store
stop

Note that the code has been compressed to 2 genes, constants tweaked, and afflicted bots don't give away nrg, due to them keeping other bots alive.

EDIT => I set the 500 in the repro code to 200; it now seems to be able to create an equilibrium system with Pacifist, which is really annoying. It seems to do better against the other bots though, so I'll let it run a long time to see whether it still has the upper hand.
« Last Edit: December 22, 2011, 11:57:11 AM by Shasta »
"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 abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Occura Amplificis
« Reply #10 on: March 24, 2008, 08:34:43 PM »
You can save a few bp to make the virus develop faster (without changing any behavior)
- (1bp) replace the "1 add" with a "++"
- (1bp) Turn "0 .delgene store" into ".delgene store" (because an empty stack counts as a 0)
- (3bp) Turn
*.nrg 3 div *.body sub .strbody store
*.body *.nrg 3 div sub .fdbody store
into
*.nrg 3 div *.body sub dup .strbody store - .fdbody store

Total savings: 5 bp



PS : What version are you running? On my end Occura (the latest one) has so far been unable to beat pacifist. 6-0
« Last Edit: March 24, 2008, 08:39:32 PM by abyaly »
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #11 on: March 24, 2008, 08:35:23 PM »
It can now beat Pacifist almost every time!  

EDIT => I hope no-one read what was here before, but I destroyed the evidence just in case.
« Last Edit: March 25, 2008, 12:15:03 AM 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 bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #12 on: March 25, 2008, 12:35:03 AM »
Wait a minute... I just made sense of abyaly's cryptic messages; what exactly does the dup command do?
"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 Commander Keen

  • Moderator
  • Bot Builder
  • *****
  • Posts: 91
    • View Profile
Occura Amplificis
« Reply #13 on: March 25, 2008, 12:49:56 AM »
dup duplicates the last variable on the stack.

So "5 dup mult .repro store" for instance, is the same as "5 5 mult .repro store"

If you ever use the same number or variable, duplicating it can save a whole load of code.

So *.nrg 3 div *.body sub dup .strbody store - .fdbody store would do this:

*.nrg 3 div *.body sub - energy / 3 minus body

So that lot resolves to a number, then dup duplicates the number. So the stack has the number twice. Then .strbody store stores the value in strbody, but since there is 3 values on the stack (nrg/3-body, nrg-3/body, .strbody) store only uses two, leaving one of the nrg/3-body 's on the stack, which is used by the next store.

I hope that makes sense...

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Occura Amplificis
« Reply #14 on: March 26, 2008, 12:28:30 AM »
Thanks for the concise summary. Now I have time to update all my bots before running the league (goodbye spare time)
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan