Issue 30 May 20, 1996
______________________________________________________________________________
Core Warrior is a weekly newsletter promoting the game of corewar. Emphasis
is placed on the most active hills--currently the '94 draft hill and the
beginner hill. Coverage will follow where ever the action is. If you have
no clue what I'm talking about then check out these five-star internet locals
for more information:
FAQs are available by anonymous FTP from rtfm.mit.edu as
pub/usenet/news.answers/games/corewar-faq.Z
FTP site is: ftp.csua.berkeley.edu /pub/corewar
Web pages are at:
http://www.stormking.com/~koth ;Stormking
http://www.ecst.csuchico.edu/~pizza/koth ;Pizza
http://pauillac.inria.fr/~doligez/corewar/ ;Planar
Newbies should check the stormking page for the FAQ, language specification,
guides, and tutorials. Post questions to rec.games.corewar. All new players
are infinitely welcome!
If ftp.csua.berkeley.edu is unreachable, you can download pMARS at:
Terry's web page--http://www.infi.net/~wtnewton/corewar/
Planar fpt site--ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars
______________________________________________________________________________
Greetings.
Sorry this is late. How many times do I apologize to you guys anyways? Lots
of new warriors on the '94 hill, four of them in the top ten. I would love
to chat, but busy busy.
PIN numbers? Self-fights? Artificial aging? Should we vote on this stuff?
--M R Bremer
______________________________________________________________________________
Current Status of the Internet Pizza Server ICWS '94 Draft Hill:
Hill Specs:
coresize: 8000
max. processes: 8000
duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
minimum distance: 100
rounds fought: 200
instruction set: ICWS '94 Draft
# %W/ %L/ %T Name Author Score Age
1 45/ 39/ 16 Scan Man David van Dam 151 167
2 33/ 19/ 47 Rosebud Beppe 147 81
3 44/ 41/ 15 Wind-up Toy v1.2c Ian Oversby 146 199
4 39/ 34/ 27 Thermite II Robert Macrae 143 1747
5 38/ 33/ 30 stoninc Maurizio 143 1
6 39/ 35/ 27 T.N.T. pro Maurizio Vittuari 142 126
7 39/ 36/ 25 Chameleon M R Bremer 141 1218
8 39/ 36/ 25 dummy brain bjoern guenzel 141 3
9 40/ 38/ 23 Blur Anton Marsden 141 154
10 38/ 35/ 28 Solomon v0.6 Ian Oversby 141 2
11 36/ 33/ 31 Bomber Boy David van Dam 140 36
12 30/ 21/ 48 Impfinity v4g1 Planar 140 1946
13 26/ 11/ 63 ompega Steven Morrell 140 8
14 39/ 39/ 22 The Core Clear V1.3 David van Dam 139 262
15 37/ 36/ 27 Grilled Octopus v0.5 David Boeren 138 963
16 27/ 16/ 57 Hazy Shade II John K W 138 706
17 39/ 41/ 19 Violent Micro v0.4 basehead 138 12
18 40/ 42/ 18 Stepping Stone Kurt Franke 137 560
19 41/ 44/ 15 Eggbeater Anton Marsden 137 7
20 31/ 26/ 42 Whisper v0.1 Ian Oversby 136 10
21 30/ 24/ 46 blue candle bjoern guenzel 136 27
22 35/ 35/ 30 Tornado 3.0 Beppe 135 1548
23 30/ 26/ 43 Walk Like An Egyptian John K W 135 305
24 30/ 26/ 43 test John K W 134 76
25 32/ 29/ 39 Flurry Anton Marsden 134 708
Weekly age: 88 ( 107 last week, 78 the week before )
New warriors: 11 Turnover/age rate 13%
Average age: 435 ( 456 last week, 403 the week before )
Average score: 140 ( 141 last week, 142 the week before )
The top 25 warriors are represented by 14 authors: van Dam, Oversby, Marsden,
and JKW with 3, Vittuari, Bezzi, and guenzel with 2.
David van Dam owns the top spot. He has a strangle hold on KoTH that would
make Microsoft jealous. As for the rest of the rabble . . . newcomer Rosebud
by Bezzi has come on strong, debuting in second place. After falling a bit
mid-week, it has managed to return to second place. All the 1000+ guys
maintain their usual positions. Tornado was still alive when this snap shot
was taken, but--sorry Beppe. Impfinity should cross the 2000 mark by next
issue. I remember a version of Sphinx in the old '88 days that lasted over
2100.
Besides Rosebud, new warriors include Bomber Boy, an incediary bomber, blue
candle, a stone/spiral, Violent Micro, strategy unknown, Whisper and ompega,
imp heavy warriors, Eggbeater, a scanner, Solomon v0.6, from a long line of
pspace warriors, and stoninc, a very successful test (stone?) from Vittuari.
______________________________________________________________________________
94 - What's New
# %W/ %L/ %T Name Author Score Age
2 29/ 16/ 55 Rosebud Beppe 142 1
16 29/ 27/ 44 test John K W 132 1
13 33/ 34/ 34 Bomber Boy David van Dam 132 1
17 26/ 23/ 51 blue candle bjoern guenzel 129 1
17 36/ 42/ 22 Violent Micro v0.4 basehead 129 1
20 29/ 27/ 44 Whisper v0.1 Ian Oversby 131 1
13 21/ 11/ 68 ompega Steven Morrell 131 1
12 39/ 45/ 16 Eggbeater Anton Marsden 133 1
6 37/ 37/ 26 dummy brain bjoern guenzel 137 1
12 35/ 36/ 29 Solomon v0.6 Ian Oversby 134 1
5 38/ 33/ 30 stoninc Maurizio 143 1
______________________________________________________________________________
94 - What's No More
# %W/ %L/ %T Name Author Score Age
26 21/ 34/ 45 Torch t19 P.Kline 109 4
26 0/ 1/ 2 stone test 11 Beppe 3 4
26 1/ 2/ 1 Yogi Bear P.Kline 4 7
26 1/ 1/ 2 test eif JKW 4 69
26 34/ 41/ 25 Gem of the Ocean P.Kline 128 542
26 34/ 39/ 27 Flimsy v0.4a Ian Oversby 129 187
26 2/ 0/ 2 test Maurizio Vittuari 8 35
26 19/ 13/ 68 EvolCap XI John Wilkinson 125 437
26 31/ 35/ 34 La Bomba 1.3 Beppe Bezzi 126 310
26 34/ 40/ 26 Blanket Party J E Long 127 465
26 37/ 48/ 15 Solomon v0.3 Ian Oversby 126 354
______________________________________________________________________________
94 - What's Old
# %W/ %L/ %T Name Author Score Age
12 30/ 21/ 48 Impfinity v4g1 Planar 140 1946
4 39/ 34/ 27 Thermite II Robert Macrae 143 1747
22 35/ 35/ 30 Tornado 3.0 Beppe 135 1548
7 39/ 36/ 25 Chameleon M R Bremer 141 1218
15 37/ 36/ 27 Grilled Octopus v0.5 David Boeren 138 963
25 32/ 29/ 39 Flurry Anton Marsden 134 708
16 27/ 16/ 57 Hazy Shade II John K W 138 706
18 40/ 42/ 18 Stepping Stone Kurt Franke 137 560
23 30/ 26/ 43 Walk Like An Egyptian John K W 135 305
Lost Blanket Party, Evol Cap, and Gem of the Ocean, but added Walk Like An
Egyption.
______________________________________________________________________________
HALL OF FAME
* means the warrior is still active.
Pos Name Author Age Strategy
1 Impfinity v4g1 Planar 1946 * Stone/ imp
2 Thermite II Robert Macrae 1747 * Qscan -> bomber
3 Jack in the box Beppe Bezzi 1620 P-warrior
4 Tornado 3.0 Beppe Bezzi 1548 * Bomber
5 Torch t18 P.Kline 1539 Bomber
6 Frontwards v2 Steven Morrell 1420 One shot scanner
7 Evol Cap 6.6 John Wilkinson 1299 Imp / stone
8 quiz Schitzo 1262 Scanner/ bomber
9 Chameleon Myer R Bremer 1218 * P-warrior
10 T.N.T. Maurizio Vittuari 1204 Bomber
11 Grilled Octopus v0.5 David Boeren 963 * P-warrior
12 Iron Gate 1.5 Wayne Sheppard 926 CMP scanner
13 Agony II Stefan Strack 912 CMP scanner
14 Barrage Anton Marsden 876 Qscan -> replicator
15 Blue Funk Steven Morrell 869 Stone/ imp
16 Thermite 1.0 Robert Macrae 802 Qscan -> bomber
17 Blue Funk 3 Steven Morrell 766 Stone/ imp
18 Night Train Karl Lewin 755 Replicator
19 Mirage 1.5 Anton Marsden 736 Scanner/ bomber
20 Blizzard Anton Marsden 713 Qscan -> replicator
21 Flurry Anton Marsden 708 * Qscan -> pwarrior
22 Hazy Shade II John Wilkinson 706 * P-warrior
23 HeremScimitar A.Ivner,P.Kline 666 Bomber
24 La Bomba Beppe Bezzi 650 Qscan -> replicator
25 myVamp v3.7 Paulsson 643 Vampire
Hazy Shade II by JKW pushes off Blue Funk 5 by Steven Morrell.
______________________________________________________________________________
Current Status of the Internet Pizza Server Beginner's Hill:
Hill Specs:
coresize: 8000
max. processes: 8000
duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
minimum distance: 100
maximum age: At age 100, warriors are retired.
rounds fought: 200
instruction set: ICWS '94 Draft
# %W/ %L/ %T Name Author Score Age
1 51/ 13/ 36 bxt im4 bjoern guenzel 188 25
2 52/ 25/ 23 Toxin IVa Edgar 178 36
3 48/ 22/ 29 Fork v0.1-10p Christoph C. Birk 174 82
4 50/ 27/ 23 Toxin IVb Edgar 174 23
5 51/ 29/ 20 scan test bjoern guenzel 174 21
6 53/ 34/ 13 Extreme Prejudice Scott Manley 172 79
7 52/ 40/ 8 Sapper Andrew Fabbro 164 1
8 47/ 32/ 21 Toxin IV Edgar 162 60
9 49/ 37/ 14 coal 3.22b bjoern guenzel 160 64
10 39/ 26/ 35 So Long Hyakutake Scott Manley 153 81
11 46/ 45/ 10 Drill 1.1 Edgar 147 38
12 35/ 31/ 34 Szyzyg v1.01 Scott Manley 138 48
13 40/ 44/ 16 Bloodhound Mk III Andrew Fabbro 136 31
14 39/ 46/ 15 8-Ball 2 Iain Hogg 133 54
15 29/ 25/ 46 invicta John K. Lewis 133 43
16 33/ 34/ 33 Szyzyg v1.0 Scott Manley 131 49
17 38/ 48/ 14 8-Ball Iain Hogg 128 58
18 38/ 56/ 6 Hide'n'Seek debug Edgar 119 7
19 36/ 61/ 3 Slow Edgar 111 10
20 33/ 58/ 10 yet another test 0.2 Justin Kao 108 20
21 33/ 64/ 4 Micro Centurion Edgar 102 16
22 29/ 59/ 12 yet another test 0.3 Justin Kao 99 9
23 6/ 2/ 0 Sapper Andrew Fabbro 18 2
24 6/ 2/ 0 Sapper Andrew Fabbro 18 3
25 4/ 0/ 0 test 0.01 Christoph C. Birk 12 75
37 challenges. Pathetic. So it goes in the summer I suppose. Violent Micro
and basehead are no more, taking up residence on the '94 draft hill. bjoeren
guenzel also has a solid position on the pro hill.
______________________________________________________________________________
The Hint
Killing Imps
Since Bezzi wrote a hint on imps last issue, I thought I'd find some material
on how to kill them. This is part of a hint column from Paul Kline's
_Push Off_ with some comments added by me (denoted with the >> sign).
------------------------------------------------------------------------------
On Killing Imps. Oh yes, they can be killed. Here are some of the ways.
1. Gates. Gates. Gates. Say again. Gates. Gates. Gates
Here is the form W. Mintardjo used in Beholder's Eye and Winter Werewolf:
gate equ example-10
example spl 0,<gate
dat <gate
The DAT line can be adapted to hold an increment for bombing/scanning:
dat #-gate,<gate
>> Of course the spl line can do the same:
>> spl #-gate, <gate
>> Since authors tend to have gates close to the executing code, the values
>> of the increments had to be small numbers. However, the scan/bomb
>> increments can also be spl #-2667-gate, <-2667-gate or spl #-2667*2-gate,
>> <-2667*2-gate. This gives a little more freedom in picking constants, at
>> least against 3 point imps.
An imp cannot pass 'gate' because of the continual decrementing. (Well
actually I have seen an imp structure that passes such a gate, but it was
a little too delicate to survive normal bombing :-)
>> Paul must have wrote this before he invented Cannonade, a gate crashing
>> imp spiral. By having a non-standard 2668 imp closely followed by a
>> standard 2667 spiral, Cannonade is able to sacrifice one of the mov 0,2668
>> instructions on the gate. When decremented, the instruction turns into a
>> mov 0,2667, perfect for the following spiral. However, with post
>> increment, you could just increment your gate instead of decrementing it.
Here is the form used in the vampires, Sucker and Twilight Pits:
gate equ example-10
example spl 0,<gate
jmp trap,<gate
....
trap dat <gate
These gates are an end-game strategy. The program does its normal attack,
vamping or stunning, then a core-clear which eventually moves the DAT line
into place. From then on 'gate' is continuously decremented.
Don't overlook partial gating, which decrements 'gate' on every-other or
one-out-of-three. If it is not possible for your program to evolve a
perfect gate, you can still pick up wins with a partial. This includes
-every- available statement into which you can put a predecrement operand.
Got JMP's? Turn them into JMP x,<gate. SPL's the same thing. Strive
to create an imp-hostile environment. Your decrementing instruction may
be the only one to survive the battle!
Here is a core-clear incorporating a partial gate:
gate equ example-10
example spl 0,<gate+2667
clear mov bomb,<gate
jmp clear,<gate+2667
bomb dat <example-1-gate
This code is either decrementing gate or gate+2667, which makes a 66% gate
against a 3-point imp, or a 50% gate against other sizes.
To harden your 'bomb' against itself being decremented, use the form:
bomb dat <example-1-gate,<example-1-gate
Then if both the SPL and DAT get decremented you are still okay, and
also if only the DAT gets decremented.
Here is the form called 'wimps' by B. Thompsen:
wimp jmp 0,<-10
Thompsen starts a couple of these in core, then after core-clearing causes
his other code parts to self-destruct, leaving the wimps to kill any
remaining imps. Smart!
2. Imp-killing scan increments. These are imp-size specific, so are
not quite as effective as gates, but still useful. Normally used against
3-point imps, they work only after some portion of the imp-opponent has been
spl-stunned and is therefore running very slowly. The increment is chosen
so that it scans location N, then other locations for a while, then location
N+2667. Assuming that the imp has not had time to repair N, N+2667, or
N+5334, the delay between N and N+2667 can be several hundred cycles.
A scan increment that scanned N+2667 too quickly after N would be a very
inefficient one. But there are a number of increments that scan N and N+2667
in less than 1000 scans which are also efficient core-scanning increments.
There are even a few that scan N+2667 *and* N+1143 (7-point imps) in less
than 1000 scans which are moderately efficient. Of the 2100 numbers that
most quickly find opponents of size 13, and scan N+2667 after N in
from 300-1000 steps, here are the four smallest:
59, 81, 83, 107
In order for this to be a successful strategy, scanning must continue for
as long as possible, yet still allow time for a core-clear and for the
opposing processes to all die.
>> In addition to imp-killing scan increments, there is the imp-killing
>> core clear. Clearing with dat <2667, <2667*2 is often effective. This
>> spiral clear will stun and then kill 3 point and 7 point imps. I believe
>> this code was first used in JKW's SETI, but don't quote me on that.
>>
>> ;name spiral spl clear followed by linear dat clear
>> add.a #382, ptr
>> mov @-1, {ptr
>> jump jmp -2, 0
>> half dat <0-dist,<0-dist-2
>> ptr spl #2, #3
3. Forward bombing and decrementing, two different strategies, but
the same principle. Since the imp never repairs its trailing process
you can knock them off with a left-to-right bombing run. Depending on the
bomb you are using, this can be more-or-less successful. Here is one
approach:
example spl 0,<gate
loop add inc,stone
stone mov <10,loop
djn loop,<-20
inc dat #2667,#3044
This is a mod-4 bomber, which runs three decrementing streams at stone+10,
stone+10+2667, and stone+10+5334, which may overtake and kill a 3-point imp.
After 25% of core has been tracked, 'stone' will drop a bomb on 'loop',
so you need to have something out there (wherever the a-operand is pointing)
that moves you into the next phase - could be 'loop' again for that matter.
Another approach would be to watch for imp instructions, pick one
up and start bombing from there, using it as the increment.
4. DAT bombing. The best bomb is:
dat <2667,<5334
but your chances of killing an imp-spiral with single-bomb DAT's is
almost nil, and the bomb is only effective against 3-point imps. Here is
an example of using the bomb in paper:
start spl 1
spl 1
mov -1,0 ; < create 7 processes
p1s mov p1b,<1000 ; decremented by parent
p1 mov #7,p1s
mov <p1s,<p1n ; create child
p1n spl @p1n,-1188 ; start child
mov p1b,<p1n ; bomb in sequence with child
jmz @0,@p1 ; if i'm ok, go again
p1b dat <2667,<5334
This paper should kill at least 30% of short 3-point imps (spiral length
less than 9), but is less effective against longer imps. The advantage of
using paper to bomb is that imps can't kill paper. Unfortunately, imps
tend to subvert paper processes so the effective bombing rate goes down
as the game progresses. However the above paper resists subversion somewhat
by bombing ahead of and -2667 ahead of its children to prevent their being
overrun by its own 'imped' processes.
>> This is an '88 replicator that would get totally annihilated on the '94
>> hill. Just throw in a TimeScape replicating engine with the linear
>> bombing and--voila--anti-imp paper.
5. Self-splitting. Since the imp only kills your program if you have
fewer processes than he does, you can create a tie by having more. Then
if you are overrun you will follow, not outrun him. This means extra
processes at -every- location, including spl-zero lines, since any or
all other lines may be dat-bombed and lost during the battle.
6. Very rapid startup. Imps and their co-components can take 40-50
instructions to launch, plus a 'large' startup code. If you come out
swinging that's 40-50 instructions for bombing or scanning to your
advantage.
>> Not so true anymore. Binary launches are huge, but jmp/add and vector
>> launched spirals have a relatively small footprint. However, they do take
>> extra time to launch, so a rapid start up (ala quick scan maybe) can be
>> effective in more ways than one.
______________________________________________________________________________
Extra Extra
I ripped this off the newsgroup in case you missed it. Just another thread
in the PIN/no PIN argument. Thanks to Nathan Green for his work on this.
David van Dam (D.vanDam@is.twi.tudelft.nl) wrote:
: guenzel@extern.lrz-muenchen.de (Bjoern Guenzel) wrote:
: > I wonder if it is possible to create a 'mega-handshaking': a program
: > which returns a unique win/loss in it's self-fight that allows to
: > calculate the secret number. Then write a second program that easily
: > beats all the others... (only for one month, of course).
But when you have a script file that generates the warrior, it only takes
the time to submit 3 warriors to make a new one.
: I think it's not so difficult.
Not too difficult at all.
: You just use the handshake routine to determine the distance between your
: warriors in the self fight (aha, another reason against self fights). The
: the first time you send your warrior to the hill and it can win (distance
: DIV 200) times. The second time you change the program a little bit and you
: win (distance MOD 200) times.
I used div/mod 100, but the idea is the same. You also need to be able to
tell which warrior found who first too.
: With these 2 values you can calculate the secret number. It's simple.
: So, who has the time to try it out?
I guess that would be me. :)
After debugging my programs, I determined that pizza's magic -F number was
<nah, think I'll keep that little secret... :)> using the method described
above. I created two warriors, Cheater and Control. Cheater was designed
to SPL carpet the opponents starting position, and then spl/dat clear.
Control was exactly the same, except with the wrong numbers. Without the
magic numbers, it should do very poorly.
The assult on the veteran hill was not encouraging. As I had feared, the
warriors on the veteran hill don't stay in thier starting places long
enough to get bombed. :(
Cheater only did well against one warrior, 107/91/2 vs. 7/191/2
The warriors on the beginner's hill did a much better job of sitting
still. :)
The Beginner hill:
# %W/ %L/ %T Name Author Score Age
11 48/ 42/ 10 Cheater Nathan Green 154 2
25 16/ 68/ 16 Control Nathan Green 65 1
Against many opponents, Cheater scored ~150 wins, ~50 losses. (I'll give
you one guess how many starting locations I was able to cram into 100
instructions.)
Control, however, only managed to push the last killed program off the hill.
I wonder what kind of wacky warriors would evolve in an experimental hill
in which the -F number was known in advance...
--
Nathan Green (ngreen@plains.nodak.edu)
GCS d? s: a21.4>21.5 C+++ UV P>+ L++>+++ E W N++ o++ K+
w---(--) M- V PS PE Y t+ 5 X R tv-(--) b++>+++ DI++>+++ D+
G+>++++ e(*)>+ h!>++ !r !y+ (Version 3.1)
______________________________________________________________________________
Questions? Concerns? Comments? Complaints? Mail them to people who care.
authors: Beppe Bezzi <bezzi@nemo.it> or Myer Bremer <bremermr@ecn.purdue.edu>
|