From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.reston.ans.net!nntp.coast.net!news.kei.com!newsfeed.internetmci.com!in1.uu.net!comp.vuw.ac.nz!regent.comp.vuw.ac.nz!amarsden Mon Jul 8 18:42:30 1996 Article: 5572 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.reston.ans.net!nntp.coast.net!news.kei.com!newsfeed.internetmci.com!in1.uu.net!comp.vuw.ac.nz!regent.comp.vuw.ac.nz!amarsden From: Anton Marsden Newsgroups: rec.games.corewar Subject: Core Warrior 37 Date: Sun, 7 Jul 1996 19:24:26 +1200 Organization: Victoria University of Wellington, New Zealand. Lines: 616 Message-ID: NNTP-Posting-Host: regent.comp.vuw.ac.nz Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Sender: amarsden@regent.comp.vuw.ac.nz .xX$$x. .x$$$$$$$x. d$$$$$$$$$$$ ,$$$$$$$P' `P' , . $$$$$$P' ' .d b $$$$$P b ,$$x ,$$x ,$$x ,$$b $$. Y$$$$' `$. $$$$$$. $$$$$$ $$P~d$. d$$$b d d$$$ `$$$$ ,$$ $$$$$$$b $$$P `$ $$$b.$$b `Y$$$d$d$$$' . . a . a a .aa . a `$$$ ,$$$,$$' `$$$ $$$' ' $$P$XX$' `$$$$$$$$$ .dP' `$'$ `$'$ , $''$ `$'$ `Y$b ,d$$$P `$b,d$P' `$$. `$$. , `$$P $$$' Y $. $ $ $ Y..P $ `$$$$$$$' $$$P' `$$b `$$$P `P `$' `Y'k. $. $. $. $$' $. Issue 37 July 8, 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 ftp site--ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars Fechter ftp site--ftp://members.aol.com/ofechner/corewar ______________________________________________________________________________ Greetings. Some interesting activity on the hill this week including the fall of Thermite II and Stepping Stone. In this issue we find out why Q^2 Miro is doing so well and JKW discusses mirrored imps. This is the first Core Warrior issue I've compiled and there's bound to be a few mistakes somewhere so not too many flames please :-) Reminder: the 'limited process hill' is open. Send your warriors to with a ;redcode-94lp header. To get more information, send an e-mail with a subject line of 'help' (no quotation) marks to the above address. --Anton Marsden ______________________________________________________________________________ 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 48.1/ 38.3/ 13.6 Blur 2 Anton Marsden 157.9 33 2 49.0/ 42.2/ 8.8 Q^2 Miro Anders Ivner 155.8 31 3 45.4/ 37.8/ 16.8 myVamp5.3 Paulsson 152.9 102 4 42.6/ 35.3/ 22.0 Yogi Bear P.Kline 149.9 150 5 29.6/ 10.2/ 60.2 Return Of The Jedimp John K W 148.9 22 6 41.7/ 34.5/ 23.8 Paper, Scissors and Stone David van Dam 148.9 74 7 44.4/ 40.3/ 15.3 Goldfinch P.Kline 148.4 95 8 37.0/ 26.7/ 36.2 Simple v0.4 Ian Oversby 147.3 42 9 35.9/ 24.9/ 39.2 Armory II John K W 146.8 85 10 42.0/ 38.7/ 19.2 Twister Beppe Bezzi 145.3 400 11 40.5/ 35.9/ 23.6 Goliath David van Dam 145.1 94 12 35.4/ 26.5/ 38.1 Pulp v0.2 Ian Oversby 144.2 41 13 40.2/ 36.6/ 23.2 T.N.T. pro Maurizio Vittuari 143.8 664 14 34.1/ 25.4/ 40.5 Jack in the box II Beppe Bezzi 142.8 303 15 34.2/ 27.5/ 38.2 the historian bjoern guenzel 140.9 419 16 43.5/ 46.8/ 9.7 test me2 Beppe Bezzi 140.2 26 17 42.4/ 44.7/ 12.9 test A P.Kline 140.0 2 18 29.0/ 18.5/ 52.5 Rosebud Beppe 139.6 619 19 38.1/ 37.2/ 24.7 Scimitar 2 P.Kline 139.0 12 20 31.2/ 24.9/ 43.8 blue candle bjoern guenzel 137.6 533 21 25.3/ 13.6/ 61.1 ompega Steven Morrell 136.9 61 22 35.3/ 37.0/ 27.7 Versatility 1.5 Ross Morgan-Linial 133.6 19 23 33.6/ 33.6/ 32.8 Simple v0.3 Ian Oversby 133.5 105 24 37.0/ 48.2/ 14.8 pavement v0.14 bjoern guenzel 125.9 5 25 11.6/ 43.3/ 45.2 Jam Sponge Dave Newton 79.8 1 Weekly age: 90 ( 56 last week, 108 the week before ) New warriors: 14 Turnover/age rate 16% Average age: 158 ( 275 last week, 296 the week before ) Average score: 141 ( 133 last week, 127 the week before ) The top 25 warriors are represented by 13 authors: Bezzi, Kline with 4, Guenzel, Oversby with 3, and van Dam, JKW with 2. King Report: Blur 2 was on top for the majority of the challenges this week. But towards the end of the week Q^2 Miro by Ivner started to dominate. This is not surprising - Ivner has developed a very good qscan (see Extra Extra for the details). JKW's new warrior Return Of The Jedimp also had a few moments of glory (as John hastened to mention in the newsgroup). A huge loss of age this week (approximately 2925 points)! Thermite II finally kicks the bucket (will we see a Thermite III soon?), as does Stepping Stone making T.N.T pro the oldest warrior on the Hill. ______________________________________________________________________________ 94 - What's New # %W / %L / %T Name Author Score Age 13 25.8/ 22.2/ 52.0 Armory II John K W 129.3 1 4 36.5/ 36.0/ 27.5 Paper, Scissors and Stone David van Dam 136.9 1 18 21.4/ 13.3/ 65.2 ompega Steven Morrell 129.6 1 7 30.0/ 24.1/ 45.9 Simple v0.4 Ian Oversby 135.8 1 6 31.6/ 25.3/ 43.1 Pulp v0.2 Ian Oversby 137.9 1 1 42.9/ 39.5/ 17.6 Blur 2 Anton Marsden 146.2 1 1 44.6/ 44.5/ 10.9 Q^2 Miro Anders Ivner 144.7 1 20 39.5/ 49.6/ 10.9 test me2 Beppe Bezzi 129.4 1 1 25.2/ 9.5/ 65.2 Return Of The Jedimp John K W 141.0 1 24 30.2/ 38.9/ 30.9 Versatility 1.5 Ross Morgan-Linial 121.4 1 15 34.9/ 37.8/ 27.3 Scimitar 2 P.Kline 132.0 1 24 34.1/ 50.9/ 15.0 pavement v0.14 bjoern guenzel 117.3 1 14 42.6/ 45.6/ 11.8 test A P.Kline 139.7 1 25 8.8/ 44.2/ 47.0 Jam Sponge Dave Newton 73.5 1 6 of the 14 new warriors entered the Hill in the top 10. ______________________________________________________________________________ 94 - What's No More # %W / %L / %T Name Author Score Age 26 1.0/ 1.2/ 1.6 Armory II John K W 4.7 55 26 18.5/ 12.4/ 69.1 ompega Steven Morrell 124.6 225 26 0.0/ 0.1/ 3.8 test Maurizio Vittuari 3.8 33 26 36.1/ 47.5/ 16.4 HopScotch 1.6 Robert Macrae 124.7 363 26 35.7/ 47.0/ 17.2 Stepping Stone Kurt Franke 124.4 1049 26 1.3/ 1.4/ 1.1 Pulp v0.2 Ian Oversby 5.1 19 26 29.7/ 35.6/ 34.7 Jo Clark II Ian Oversby 123.8 266 26 28.9/ 35.1/ 36.0 test Maurizio 122.7 307 26 1.6/ 1.6/ 0.7 Blur 2 Anton Marsden 5.4 30 26 3.2/ 4.2/ 0.3 Q^2 Miro Anders Ivner 9.9 24 26 16.2/ 8.7/ 75.1 The Avalanche John Wilkinson 123.8 142 26 32.7/ 41.5/ 25.8 Thermite II Robert Macrae 123.8 2262 26 0.8/ 0.5/ 6.5 Return Of The Jedimp John K W 8.7 15 26 1.2/ 1.3/ 1.3 Hint Test Anton Marsden 4.8 14 26 2.0/ 1.2/ 0.7 Torch t18 P.Kline 6.7 30 26 2.6/ 0.5/ 0.8 blue flame c1/10 bjoern guenzel 8.5 48 Thermite II and Stepping Stone Cease To Exist as do a few warriors over the age of 200. Lots of ;killing went on this week. ______________________________________________________________________________ 94 - What's Old # %W / %L / %T Name Author Score Age 13 40.2/ 36.6/ 23.2 T.N.T. pro Maurizio Vittuari 143.8 664 18 29.0/ 18.5/ 52.5 Rosebud Beppe 139.6 619 20 31.2/ 24.9/ 43.8 blue candle bjoern guenzel 137.6 533 15 34.2/ 27.5/ 38.2 the historian bjoern guenzel 140.9 419 10 42.0/ 38.7/ 19.2 Twister Beppe Bezzi 145.3 400 14 34.1/ 25.4/ 40.5 Jack in the box II Beppe Bezzi 142.8 303 Jack in the box II pops into the 300 club. ______________________________________________________________________________ HALL OF FAME * means the warrior is still active. Pos Name Author Age Strategy 1 Thermite II Robert Macrae 2262 Qscan -> bomber 2 Impfinity v4g1 Planar 1993 Stone/ imp 3 Jack in the box Beppe Bezzi 1620 P-warrior 4 Tornado 3.0 Beppe Bezzi 1567 Bomber 5 Torch t18 P.Kline 1539 Bomber 6 Chameleon Myer R Bremer 1437 P-warrior 7 Frontwards v2 Steven Morrell 1420 One shot scanner 8 Evol Cap 6.6 John Wilkinson 1299 Imp / stone 9 quiz Schitzo 1262 Scanner/ bomber 10 T.N.T. Maurizio Vittuari 1204 Bomber 11 Grilled Octopus v0.5 David Boeren 1154 P-warrior 12 Hazy Shade II John Wilkinson 1102 P-warrior 13 Stepping Stone Kurt Franke 1049 Qscan -> Vampire 14 Iron Gate 1.5 Wayne Sheppard 926 CMP scanner 15 Agony II Stefan Strack 912 CMP scanner 16 Barrage Anton Marsden 876 Qscan -> replicator 17 Blue Funk Steven Morrell 869 Stone/ imp 18 Flurry Anton Marsden 835 Qscan -> pwarrior 19 Thermite 1.0 Robert Macrae 802 Qscan -> bomber 20 Blue Funk 3 Steven Morrell 766 Stone/ imp 21 Night Train Karl Lewin 755 Replicator 22 Mirage 1.5 Anton Marsden 736 Scanner/ bomber 23 Blizzard Anton Marsden 713 Qscan -> replicator 24 HeremScimitar A.Ivner,P.Kline 666 Bomber 25 T.N.T. pro Maurizio Vittuari 664 * Bomber LaBomba by Beppe Bezzi was kicked off this week by T.N.T. pro, now the only active warrior in the HoF (with Rosebud not far behind). Thermite II has a comfortable hold on 1st place even if it has stopped growing older and Stepping Stone settles for 13th place. ______________________________________________________________________________ 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 50.3/ 28.8/ 20.9 Versatility 1.2 Ross Morgan-Linial 171.7 85 2 51.8/ 31.9/ 16.4 Syzygy 1.0 Philip Kendall 171.6 70 3 51.3/ 32.5/ 16.2 Yet 3c Justin Kao 170.2 66 4 48.3/ 33.0/ 18.7 Phoenix Alpha Andy Nevermind 163.6 71 5 48.9/ 35.7/ 15.4 Saboteur v0.4k shar 162.2 27 6 45.3/ 34.0/ 20.7 Sandwich Bags Andy Nevermind 156.6 59 7 42.0/ 30.9/ 27.0 Inferno 1.0 Philip Kendall 153.1 9 8 44.2/ 39.8/ 16.0 Yet 3a Justin Kao 148.6 67 9 42.4/ 39.3/ 18.3 3-clear 0.6 Ilmari Karonen 145.5 93 10 40.2/ 35.8/ 24.0 Antivenin Ross 144.7 58 11 38.1/ 32.0/ 29.9 (-: :-) Ross 144.3 19 12 31.5/ 21.5/ 47.0 Ties, Ties, Ties! (+2) Ross 141.5 21 13 41.2/ 41.8/ 17.0 hyper 1.0 Ross 140.6 90 14 37.9/ 36.4/ 25.7 test Justin Kao 139.4 82 15 39.8/ 44.9/ 15.3 Switch Hitter 0.3t Ross Morgan-Linial 134.8 97 16 20.2/ 7.8/ 72.0 Nematode v1.3e Jonathan Stott 132.8 26 17 27.7/ 27.9/ 44.4 Cannon Fodder I. Karonen 127.5 72 18 18.6/ 10.3/ 71.1 Nematode v1.3c Jonathan Stott 126.8 52 19 22.7/ 21.2/ 56.1 Wasps 1.3 Ross 124.1 20 20 25.4/ 26.8/ 47.8 Avenger I Oliver Fechner 124.0 89 21 30.2/ 38.2/ 31.6 Utility Knife Robert J. Street 122.2 29 22 24.6/ 33.1/ 42.4 Fork 4/13 Christoph C. Birk 116.0 13 23 19.4/ 25.2/ 55.4 Mama's Boy Robert J. Street 113.6 12 24 10.5/ 64.2/ 25.4 D-Scan Ross 56.8 1 25 3.8/ 0.0/ 0.0 Yet Another stupid pun... Justin Kao 11.5 4 Versatility is still on top. The top three warriors appear to be in a class of their own. I noticed there are quite a few pspacers on the Hill at the moment. I believe that the best way to learn to code well is to concentrate on one type of warrior and see how much you can improve it... you may not make it to the top of the Hill but you will certainly come to understand the game a bit better. You don't have to take my advice :-) ______________________________________________________________________________ The Hint Quick Scanners by Anton Marsden Quick scanners (qscanners) have become a common ingredient in many modern warriors (mainly bombers and papers) recently. However, the qscans used are all very similar in structure and performance. In this article I will be discussing a "new" method of attack for qscans. If you are unfamiliar with the classic qscans check out Core Warrior #7 for a good tutorial (by Robert Macrae). It may also be helpful to take a look at Thermite II (CW 24) or Twister (CW 35). In a standard qscan about 16 locations are scanned (in 8 cycles) and then a JMN check is made to see if anything was found: s3 for 4 sne.i qst+4*bigst*(s3+0), qst+4*bigst*(s3+0)+bigst*1 seq.i qst+4*bigst*(s3+0)+bigst*2, qst+4*bigst*(s3+0)+bigst*3 mov.ab #qst+4*bigst*(s3+0)-found, found rof jmn.b which, found The code required for this setup is very small and this is probably the reason it became a very popular qscan method. But it's inefficient because of the huge delay between finding a location and bombing the location. This means that booting warriors are likely to escape the bombs as are most pspacers. To remedy this, I started experimenting with this type of scan: seq.i qst+4*bigst, qst+4*bigst+bigst*1 jmp kill1 seq.i qst+4*bigst+bigst*2, qst+4*bigst+bigst*3 jmp kill2 kill1: ; find correct location ; bomb it ; jump to boot routine kill2: ; similar to kill1 It works, but requires a large amount of code for every scanned location. There are many possible variations on this "engine". The trick is to find a nice compromise between size and speed. Here is one of the better qscans I have written: offset EQU (start+1000) COUNT EQU 6 start: N FOR COUNT scan&N: seq.i offset+400*N,offset+400*N+100 jmp kill&N+1 seq.i offset+400*N+200,offset+400*N+300 jmp kill&N ROF jmp boot GAP EQU 15 REP EQU 6 datb: dat GAP,-GAP dat200: dat 200,200 dat100: dat 100,100 N FOR COUNT kill&N: add.f dat200,pos&N sne.i datz,*pos&N add.f dat100,pos&N hit&N: mov.i datb,*pos&N pos&N: mov.i offset+400*N,offset+400*N+GAP/2 add.f datb,pos&N djn.b hit&N,#REP jmp boot ROF Anders Ivner has also contributed to this issue with his qscan (Q^2) which has a slightly slower response time than mine but uses a _lot_ less instructions. Testing QScan Performance ------------------------- QScans can be hard to test well so here are some tips on how to test your own qscans: - Replace all warrior code with NOP instructions and a JMP to the first NOP instruction. This technique can be adapted to work with fragmented (non- sequential) code as well (using JMPs). This way all your booted code will be executed and you'll die if you warrior was hit by a DAT bomb (this is a Good Thing for testing purposes). - pmars -r 8000 -c 100 (8000 rounds, 100 cycles maximum) This will give you a good idea of how your qscan will perform. Note that booting warriors will be the toughest to kill followed by pspacers then qscanners. - Without actually testing your qscan you can describe its performance by noting the cycle numbers at which it will actually attack a scanned location. For example, a standard qscan similar to the one in Twister will roughly attack in the 14th cycle (for any of 12 locations) and then in the 23rd cycle and so forth. The qscan in this article will attack in these cycles: 4,5,6,6,7,7,...,14,14,15,15,16,17. Most opponents are very vulnerable in the early cycles of the battle so attacking as early as possible has its advantages. I submitted a warrior to the '94 Hill called Hint Test which was Twister (Tornado) with the qscan replaced by an earlier, slower version of the qscan above. Here are some of the results: Hint Test vs. Twister: 111/68/21 Hint Test vs. Thermite II: 103/59/38 # %W / %L / %T Name Author Score Age ... 7 37.1/ 38.1/ 24.8 Hint Test Anton Marsden 136.2 1 ... 23 34.8/ 42.7/ 22.6 Twister Beppe Bezzi 126.8 373 As you can see, qscan response can have a major effect on your score. ______________________________________________________________________________ Extra Extra Q^2 by Anders Ivner [Editor note: Anders wrote a good intro and I decided not to edit it even though it repeats some of what is said in the hint.] In a standard quickscan there is a delay between when something (presumably the enemy) is found and when the quickscan actually reacts. To shorten this time tests are generally inserted (say) every fifth qscan block. Q^2 instead uses the inc/decrementing abilities of the JMP instruction to react immediately when something is found. This allows it to attack the enemy on average five cycles earlier than a standard qscan, time that may be important to catch it in its booting phase. An example to illustrate what I mean: sne seq jmp attack, attack sne seq jmp attack, {attack sne seq jmp attack, }attack sne seq jmp attack, >attack sne seq jmp attack, a01 HOP05 equ jmp SIG05 equ Okay, here's a good place to start, the mirror imp launch from Two Pack. I'll try to explain the idea a little more. First, note the initial weakness inherent to the mirror imp. The line "mov imp, imp2" is necessary because a mirrored imp spiral requires TWO imp instructions intact in the core in order for it to survive. ------------- imp_sz equ 4001 imp2 equ imp+4000 start mov imp, imp2 spl 1 spl 1 spl 1 spl 1 spl 2 jmp @vector,{0 jmp *vector,{0 for 15 jmp imp2+imp_sz*vector, imp+imp_sz*vector rof vector jmp imp2, imp imp mov.i #11, imp_sz ------------- This is a two-point mirrored imp. If you run it, you'll see that there are two lines of executing processes 4000 spaces apart. Since 4001 is NOT an imp number, the executing imp process is not always updated immediately before it's own execution. This makes mirror imps more vulnerable to traditional attack. Ok, lets look at an example. Say that we're watching a 2-process, 2-point mirrored imp spiral. Two Pack simply launches a 32 process, 2point imp, but we'll deal with a 2-process one for simplicity. [100] mov.i #11, 4001 [4100] mov.i #11, 4001 [101] mov.i #11, 4001 [4101] mov.i #11, 4001 [102] mov.i #11, 4001 [4102] mov.i #11, 4001 Here are the executing processes, with the locations they execute in brackets. You'll note that while all the intructions on the "top" half of the mirror are executed immediately after being updated, those on the bottom half (4100, 4101, 4102) are updated three steps before they are executed. Hence, the weakness to traditional attack. However, it does have one clear advantage. When you go up against a warrior which uses a 'spiral clear' like that used in SETI or Memories, a two-point imp will not be cleared away with the assurance that a 3 or 7 point imp would be. Also, any warrior which attempts to "decode" the impstep, and use that to wipe imps away will get the number 4001, which will only wipe away half of the imp. Next advantage? Let's imagine a warrior has a 100% ">" gate at 4101... [100] mov.i #11, 4001 [4100] mov.i #11, 4001 [101] mov.i #11, 4001 [4101] mov.i #11, 4004 ;got inc'd 3 times, totally screwing us up [102] dat 0, 0 ;lost half the imp! :_( [4102] mov.i #11, 4001 ;But hark! THIS location already had an imp on it, because the imp was unaffected at the time the process at 101 was executed. Therefore, if we're lucky enough to have 4103 be an exectuable instruction, we have busted the gate, and saved our ass from a sure loss. After that, we can only pray that whatever part of our opponent's code we're executing doesn't go suicide on us. :-) The second problem is an inherent consequence of the first difficulty. That is, when you only have two imp points, and two of them need to be intact in order to survive, a single stun attack AUTOMATICALLY will be at least somewhat effective. The solution to these two problems? Well, Paul Kline came up with the idea for the 6-point mirrored imp. In fact, any imp_number+4000 will work as a mirrored imp step size. In addition to the most important advantage of not putting all your eggs(imps:) in two baskets, the 6-point imp gives a second advantage to the mirroring idea: increased resistance to gates. Here's a code snipet from the six-point imp warrior I was working on. It's jmp/add launched, which helps a great deal against certain scanners and bombers. ------------- imp_sz equ (2667+4000) imp equ (impin+2000) imp2 equ (imp+4000) start mov impin, imp mov imp, imp2 spl 1 spl 1 spl 1 spl adder-1 spl 2 jmp *vector, 0 jmp @vector, 0 jmp 1 adder add.f inc, vector inc dat imp_sz, imp_sz vector jmp imp2, imp impin mov.i #11, imp_sz ------------- Now, I'll leave it up to you to see why it is that the greater-than- two-point variety of mirrored spiral performs a little better against gates. However, I must confess that mirrored imps' ability to perform in battle alone doesn't justify my interest in them. Mirrored imps only have _significant_ advantages against scanners with a spiral clears and warriors with those special mirror-vulnerable gates, so use them with care. ;-) ______________________________________________________________________________ Questions? Concerns? Comments? Complaints? Mail them to people who care. authors: Beppe Bezzi or Myer Bremer or Anton Marsden