Sections
Home
Hills
Infinite Hills
Tournaments
Software
Evolving
Optimizer
Community
Newsletter
Discussion
History
Sections
 
For Beginners
First Steps
FAQ
Guides
Lexicon
Benchmarks
For Beginners
> Home > The Corewar Newsletters > Core Warrior > Issue #1

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>
2002-2005 corewar.info. Logo C. Schmidt