July 23, 1994 Issue #11
______________________________________________________________________________
In the past, _The_'94_Warrior_ was specifically dedicated to encouraging and
supporting the '94 draft standard. Starting with this issue, the newsletter
is oriented towards corewars in general. I have kept the title to avoid
confusion, and because it is still my hope to keep abreast of, and possibly
even accelerate, the latest advances in corewars. I hope you enjoy it!
The FAQ is available through anonymous FTP to rtfm.mit.edu, as
/pub/usenet/news.answers/games/corewar-faq.Z. There are also several
tutorials on the '88 and '94 (draft) standard available on
ftp.csua.berkeley.edu that will greatly ease the process of becoming a
proficient "redcoder."
______________________________________________________________________________
CHANGES and CORRECTIONS:
A slightly updated version of pMARS has been uploaded to ftp.csua.berkeley.edu.
Version 0.6.2 has some minor bug fixes, and will also make it much easier to
use code that you download from the newsgroup. (A very nice touch!)
Thanks again to the pMARS group for an excellent job!
Starting with this issue of the Warrior, I will be covering what I consider to
be the three most active corewar hills: the '94 Draft Hill, the '94
Experimental (Big) Hill, and the '88 Standard Hill (all on
Pizza@ecst.csuchico.edu). If there is enough interest, I can add other hills
as well. (I considered adding the beginner's hill; but, since I have no
programs on it, I have no idea what is happening there. Anyone want to cover
that hill for me? Would anyone object if I kept a simple program on the hill
just so I could follow it for a while?)
______________________________________________________________________________
The ICWS '94 Draft Hill:
Standard: '94 Draft (with extensions)
Core size: 8000 instructions
Max processes: 8000 per program
Duration: After 80,000 cycles, a tie is declared.
Max entry length: 100 instructions
The current ICWS '94 Draft hill on "Pizza":
# %W/ %L/ %T Name Author Score Age
1 41/ 26/ 33 Torch t5 P.Kline 155 51
2 46/ 38/ 16 Pyramid v5.5 Michael Constant 154 136
3 43/ 33/ 24 Homemade Ice Cream P.Kline 153 23
4 38/ 25/ 37 Sasami T.Hsu 152 71
5 34/ 21/ 44 Blue Funk 3 Steven Morrell 148 46
6 34/ 20/ 46 Ryooki T.Hsu 147 12
7 43/ 41/ 17 SJ-4 J.Layland 145 47
8 30/ 19/ 51 Aeka T.Hsu 141 1
9 39/ 37/ 24 Stimpy v2.0 Brant D. Thomsen 141 87
10 30/ 19/ 51 Cannonade P.Kline 141 216
11 32/ 23/ 45 NC 94 Wayne Sheppard 141 371
12 35/ 30/ 35 FlyPaper 3.0f J.Layland 140 2
13 38/ 37/ 25 Request v3.0 Brant D. Thomsen 140 14
14 37/ 37/ 26 IVScan 8000 James Layland 137 9
15 41/ 47/ 12 Iron Gate 1.5 Wayne Sheppard 136 335
16 39/ 43/ 18 Keystone t33 P.Kline 135 158
17 38/ 42/ 20 Christopher Steven Morrell 134 279
18 27/ 22/ 51 Blue Funk Steven Morrell 133 358
19 30/ 29/ 41 Lucky 3 Stefan Strack 132 351
20 41/ 52/ 7 test P.Kline 131 4
Another one of the old programs has disappeared from the hill: Rave 4.1 by
Stefan Strack was killed at the respectable age of 320. Rave is a "CMP"
scanner, and was one of the very first programs written specifically for the
'94 standard.
The leaders on the hill are no surprise, as we have the same five programs on
the top of the hill that were there last issue. However, the competition is
increasing. The difference between the scores of the top and bottom warriors
on the hill is 24, compared with 32 just last issue. That's about as close
as I have ever seen them.
______________________________________________________________________________
The ICWS '94 Draft Experimental Hill:
Standard: '94 Draft (with extensions)
Core size: 55,440 instructions
Max processes: 10,000 per program
Duration: After 500,000 cycles, a tie is declared.
Max entry length: 200 instructions
The current ICWS '94 Experimental (Big) hill on "Pizza":
# %W/ %L/ %T Name Author Score Age
1 49/ 34/ 17 ivscan6b J.Layland 165 22
2 47/ 35/ 18 Pyramid v5.3 Michael Constant 159 49
3 46/ 34/ 20 Request-55440 Brant D. Thomsen 158 158
4 36/ 17/ 47 Aleph 1 Jay Han 156 20
5 36/ 24/ 40 Variation G-1 Jay Han 148 122
6 43/ 39/ 18 Fscan Jay Han 146 6
7 41/ 37/ 22 Aleph 0 Jay Han 146 21
8 40/ 36/ 24 Stimpy v2.0 Brant D. Thomsen 144 13
9 31/ 23/ 46 NotSoBigImps James Layland 140 18
10 38/ 36/ 26 Lump J.Layland 139 103
11 31/ 24/ 44 Der Zweite Blitzkrieg - 9 Mike Nonemacher 138 120
12 39/ 39/ 22 Vanity IIx Stefan Strack 138 113
13 42/ 48/ 10 Rave B4.1 Stefan Strack 137 119
14 32/ 29/ 39 Lucky 13 Stefan Strack 136 164
15 30/ 24/ 46 Blue Funk Steven Morrell 136 12
16 41/ 47/ 13 Squint Mike Nonemacher 135 96
17 31/ 27/ 43 Splash 1 Jay Han 135 123
18 40/ 49/ 11 Plasma v5 Wayne Sheppard 130 60
19 27/ 23/ 50 Insight v1.0 Brant D. Thomsen 130 1
20 31/ 32/ 37 Sasami / 55440 T.Hsu 130 8
I suppose it's difficult to justify picking this as one of the three most
active hills, as it hasn't changed since the last issue of _The_'94_Warrior_.
Personally, I just like the fact that this hill has such a different "feel"
than the smaller '94 hill. It makes it a completely different challenge to
do well on it. (Besides, Jay Han might not forgive me if I dropped it!)
______________________________________________________________________________
The ICWS '88 Standard Hill:
Standard: '88
Core size: 8000 instructions
Max processes: 8000 per program
Duration: After 80,000 cycles, a tie is declared.
Max entry length: 100 instructions
The current Standard KotH hill on "Pizza":
# %W/ %L/ %T Name Author Score Age
1 41/ 26/ 33 Der Zweite Blitzkrieg Mike Nonemacher 156 41
2 46/ 38/ 16 SJ-4a J.Layland 155 40
3 39/ 24/ 37 Night Crawler Wayne Sheppard 154 69
4 44/ 37/ 19 Christopher Steven Morrell 150 33
5 42/ 36/ 22 Yop La Boum v2.1 P.E.M & E.C. 149 37
6 41/ 34/ 25 Blue Blood Ned Flanders 148 1
7 40/ 33/ 27 Keystone t21 P.Kline 147 79
8 43/ 40/ 17 Request v2.0 Brant D. Thomsen 147 60
9 44/ 42/ 13 Dragon Spear c w blue 146 59
10 34/ 22/ 45 ttti nandor sieben 146 63
11 40/ 35/ 25 Unknown Ned Flanders 146 2
12 43/ 43/ 14 Iron Gate 1.5 Wayne Sheppard 144 90
13 44/ 44/ 12 Q2 version 2.0 Travis Nixon 143 4
14 34/ 26/ 39 CAPS KEY IS STUCK AGAIN Steven Morrell 142 47
15 33/ 26/ 41 Blue Funk 88 Steven Morrell 141 6
16 40/ 41/ 19 Vanity II Stefan Strack 140 81
17 44/ 48/ 9 Juggernaut v1.5 Anders Ivner 140 82
18 37/ 36/ 26 Killer instinct Anders Ivner 138 84
19 40/ 43/ 17 Sauron v8.8 Michael Constant 137 36
20 35/ 33/ 33 FlyPaper 3.0 J.Layland 137 39
I've noticed that the '88 hill has turned into "beginners" hill of sorts.
Most the hills that have contributed to the aging of this hill recently have
been hanging around the bottom. This explains the absence of programs between
the ages of 33 and 6. (Christoper was, I believe, the last program to move
over from the original KotH hill.)
However, a couple of new programs have finally broken this trend. Q2 by
Travis Nixon was right up at the top of the hill when it was first submitted,
and Blue Blood by Ned Flanders is currently doing very well.
______________________________________________________________________________
HINTS and HELPS:
This month's hint has been supplied by Ting-Yu Hsu. T. Hsu has been a
powerful influence on the hill; Sasami has been in the top 5 on the '94 Pizza
Draft Hill since it's submission over a month ago. I'm especially excited to
be able to present this article, because replicators (also know as "paper"
programs) are an area I am particularly weak in. (I know, I know, one of
these days ...)
Creating a Competitive Paper
One of the warrior forms I have always enjoyed was the replicator.
Unfortunately, replicators have been around so long that any good warrior
(i.e., koth) can take one out. Thus, I took it upon myself to remedy this
situation. Below is a side by side comparison of your typical paper and
Ryooki, the only pure paper on the hill.
Line Paper Ryooki
---- --------------------- ----------------------
1 mov #6 ,0 nop >0 ,0
2 mov <-1 ,<1 mov <-1 ,{1
3 spl @0 ,-3365 spl @-3365,>800
4 mov 2 ,<-1 mov 3 ,{-1
5 mov 2 ,}25
6 jmz -4 ,-4 jmz.f *-4 ,*-4
7 dat <2667,<2667*2 dat <2667 ,<2667*2
Let's take the obvious addition first. Line 5 is an anti-vamp line. Look
how easy this is to accomplish with A-field indirection. A more subtle
application of line 5 is that it also serves to kill off older copies of
itself. To understand this point, you must realize that 100 copies of paper
running through core is more effective than 1000 copies of paper. Although
paper is a replicator, every time it replicates the effectiveness of each
individual copy decreases even though the effectiveness of the whole
increases. As more and more copies of paper appear in core, however, the
decreasing effectiveness of each individual copy starts to outweigh the
increasing effectiveness of the whole. This is best known as the point
of diminishing returns. Ryooki attempt to combat this by killing off copies
which are more than one generation old.
Probably the most important change is in line 6 (which forces the change
in line 1). By performing a jmz.f, Ryooki vastly increases her chance of
detecting a modification within her code. Additionally, by using indirection
to perform the check and jump, Ryooki is actually using two lines to determine
whether a modification occurred, not just one line. The change in line 1 is
just a side effect of using jmz.f, since a "mov #7,0" would cause the jmz.f
to consistently fail.
The final change is in line 3 (which forces the changes in lines 2 and 4).
With the availability of A-field indirection, Ryooki is able to store its
destination pointer in the A-field of the spl statement. Besides freeing
up the B-field, which Ryooki uses to randomly trash core, it also gives the
spl a chance to check whether the next copy of Ryooki is in good shape.
That is, when Ryooki performs her spl, her spl pointer should be pointing to
a "nop >0,0" instruction. If this is not the case, I do not care where
Ryooki splits to as long as it is NOT where the spl is pointing to. This
works under the assumption that jumping to a random location is better than
jumping to a location which you know is corrupt.
Here is how the two replicators perform against warriors on the hill which
I have code for (using mts and pmars -b -r 100 -F 2345). Some of the code
is a bit out of date, but I didn't feel like browsing my mail for koth scores.
(If someone out there could e-mail me more recent sources of warriors on the
hill, I would appreciate it since I've been without a news feed for a few
months now.)
Rank Name Author %W %L %T Score
___________________________________________________________________________
1 Paper Scott Nelson 18 38 43 1465
2 Request v2.0 Brant D. Thomsen 92 6 2 278
3 Iron Gate Wayne Sheppard 89 7 4 271
4 SJ-4a J.Layland 88 5 7 271
5 Stimpy v2.0 Brant D. Thomsen 86 6 8 266
6 Rave Stefan Strack 78 10 12 246
7 Sasami T.Hsu 41 7 52 175
8 Torch t5 P.Kline 40 13 47 167
9 Pyramid v2.0 Michael Constant 46 35 19 157
10 Blue Funk 3 Steven Morrell 7 13 80 101
11 Blue Funk Steven Morrell 6 16 78 96
12 Cannonade P.Kline 1 9 90 93
13 Aeka T.Hsu 2 15 83 89
14 Insight v1.0 Brant D. Thomsen 1 13 86 89
15 NC 94 Wayne Sheppard 0 35 65 65
16 Keystone t33 P.Kline 0 81 19 19
Rank Name Author %W %L %T Score
___________________________________________________________________________
1 Ryooki T.Hsu 32 27 41 2051
2 Rave Stefan Strack 87 10 3 264
3 Stimpy v2.0 Brant D. Thomsen 82 9 9 255
4 Iron Gate Wayne Sheppard 76 16 8 236
5 SJ-4a J.Layland 71 15 14 227
6 Torch t5 P.Kline 44 26 30 162
7 Sasami T.Hsu 31 23 46 139
8 Blue Funk 3 Steven Morrell 7 16 77 98
9 Blue Funk Steven Morrell 1 13 86 89
10 Insight v1.0 Brant D. Thomsen 1 14 85 88
11 Aeka T.Hsu 0 13 87 87
12 Cannonade P.Kline 1 28 71 74
13 NC 94 Wayne Sheppard 0 31 69 69
14 Request v2.0 Brant D. Thomsen 9 79 12 39
15 Keystone t33 P.Kline 0 90 10 10
16 Pyramid v2.0 Michael Constant 1 98 1 4
>From the rankings above, you should notice a few trends. First off, Ryooki
beats up on the vampires due to her anti-vamp code, Ryooki does about the same
against stones even though she is one line larger than paper, and finally,
Ryooki tends to get more wins off programs designed to kill paper, like
scanners and spl bombers.
Here are scores for Ryooki when I remove the anti-vamp line. As you can see,
the 6 line version of Ryooki scores pretty much the same as the 7 line version.
It does better against the stones and worse against the vampires which
is to be expected. Notice the performances of Torch and Sasami, two spl
bombing warriors. If you compare these scores against the ones from paper,
you should notice how much better Ryooki is at surviving non-dat bombs.
Rank Name Author %W %L %T Score
___________________________________________________________________________
1 Ryooki w/o anti-vamp T.Hsu 27 30 43 1863
2 Rave Stefan Strack 92 5 3 279
3 Stimpy v2.0 Brant D. Thomsen 83 7 10 259
4 Iron Gate Wayne Sheppard 79 14 7 244
5 SJ-4a J.Layland 78 13 9 243
6 Request v2.0 Brant D. Thomsen 47 50 3 144
7 Torch t5 P.Kline 29 25 46 133
8 Sasami T.Hsu 20 20 60 120
9 Cannonade P.Kline 1 14 85 88
10 Insight v1.0 Brant D. Thomsen 1 14 85 88
11 Blue Funk Steven Morrell 4 21 75 87
12 Blue Funk 3 Steven Morrell 6 25 69 87
13 Aeka T.Hsu 0 14 86 86
14 NC 94 Wayne Sheppard 0 34 66 66
15 Pyramid v2.0 Michael Constant 9 66 25 52
16 Keystone t33 P.Kline 0 84 16 16
Ryooki scored 28/22/50 when I first submitted it to koth, but since then
her preferred targets, slow starting stones and vampires, have been knocked
off the hill, so she is only hovering around 26/24/50 nowadays.
Finally, below in all her glory is the version of Ryooki which is currently
on the hill. Just for informational purposes, Ryooki is a female rabbit
(who meows like cat) from the Japanese anime "Tenchi Muyo".
T.Hsu
ting@teloquent.com
------------------------------------------------------------------------------
;redcode-94
;name Ryooki
;kill Ryooki
;author T.Hsu
;strategy Just a simple paper
;assert CORESIZE == 8000 && MAXLENGTH >= 100 && VERSION >= 60
;macro
;-----------------------------------------------------------------------------
; 1.0 Just an imp killing paper.
; 1.1 Use nop and jmz.f in the paper.
; 1.2 Use "mov 0,}0" instead of nop. Use "spl @nxt" instead of "spl nxt".
; 1.3 Larger due to anti-vampire code. Use labels instead of numbers.
; 1.4 Use "nop >0,0" instead of "mov 0,}0".
org boot_paper
nxt_paper equ -3365
boot_paper spl 1 ,0
spl 1 ,0
mov.i -1,#0
p_src nop >0 ,0 ; B-fld holds source
p_cpy mov.i <p_src ,{p_dst
p_dst spl @nxt_paper,>800 ; A-fld holds destination
mov.i p_bomb ,{p_dst ; anti-imp instruction
mov.i p_bomb ,}25 ; anti-vamp instruction
jmz.f *p_cpy ,*p_cpy
p_bomb dat <2667 ,<2667*2 ; bomb designed to kill imps
cnt for 90
dat 0,0
rof
______________________________________________________________________________
Looking to the Future:
I hope you enjoy the new format of the Warrior, and that you find the next one
to be worth the month-long wait. As always, your comments, suggestions,
criticisms, and submissions are encouraged and appreciated.
|