From: Ben Ford Subject: Re: Incendiary Date: 2000/06/01 Message-ID: <000a4ac4.a476ddb0@usw-ex0106-046.remarq.com>#1/1 In article <20000601145437.22680.00001152@ng-cr1.aol.com>, happycan@aol.com (Happy can) wrote: >could someone define incendiary bombing? ive been studying the source of torch, >#102 on Olympus, and i cant understand how the bomb is supposed to work (let >alone the bombing pattern). I was under the impression that incendiary was a >two part bomb (with adjacent instructions in the core) that stunned, kind of a >substitute for a spl carpet, something like > >SPL 1 >JMP -1 > >or > >MOV 1, >1 >SPL -1, #2 > >so that if either instruction was executed it would be a powerful stun. Torch >doesnt seem to do that though, its bombs are far apart and don' t point to each >other at all (i think). > >Could help me with my confusion? > >Thanks >Marshall sp spl #-1-step,-step ; spl half of the incendiary in sub #step+step,1 msm mov sm,*tgt+(step*count)-17228 msp mov sp,@msm ; bomb alternately with spl & mov tgt jmz in,#0 ; bombed with spl to start clear .. some code snipped ... sm mov step+1,>step+1 ; mov half of the incendiary Ok, there is the main loop of torch. Remember, with a spl # feeding a loop, the instructions in the loop are executed in reverse order. So msp gets excuted before msm. First msp drops the spl-bomb where the b-field of msm is pointing, then msm drops the mov-bomb where the a-field of the spl-bomb points. So in core you have something like X-1-step mov step+1,>step+1 .. X spl #-1-step,-step So they are placed fairly far apart. Something hit by the spl-bomb just gets a little stunned. Something hit by the mov-bomb end up generating a carpet of spl's immediately following the mov-bomb, causing a major stun. Putting the spl right next to the mov doesn't greatly increase your chance of hitting the opponent so its better to spread them out, even tho the lone spl is a weak stun. However, incendiaries have a problem that the current style of papers spread too fast to be effectively stunned by this type of bombing so they have lost a lot of their strength. -Ben * Sent from RemarQ http://www.remarq.com The Internet's Discussion Network * The fastest and easiest way to search and participate in Usenet - Free! From: Martin Ankerl Subject: Re: GA goes d-clear Date: 2000/06/01 Message-ID: <3936D170.2D199C8D@awhs.at>#1/1 pk schrieb: > > M Joonas Pihlaja wrote: > > > > On Wed, 31 May 100 pizza@ecst.csuchico.edu wrote: > > > > > A challenger has arrived on the ICWS '94 Draft hill! Vital statistics: > > > Program "Evolver 538" (length 3) by "Martin Ankerl" > > > (contact address "Martin.Ankerl@csc.at"): > > > ;strategy only 3 lines of code! > > > ;strategy spl.x # 5 , } 1985 > > > ;strategy mov.i { 1510, }-1 > > > ;strategy djn.i $-1 , }-2 > > > > Wow, a d-clear from an evolver! (Well, almost.) Do d-clears > > often get produced by GA's or it this a first? oh... I even don't know what a d-clear is 8-) I am a beginner with corewars, and I used redmaker, it came out after 538000 iterations. (a loong time..) > I don't know, but i wouldn't think so... > Anyway, i'd think that we can expect something even more like a d-clear > in some time 8) > I'd love to see the population this guy'll get in 10 generations: It'll > probably be dclears & anti dclears... My computer is currently evolving this soup, but I am now at home till monday and my computer is in another town... Next monday you can expect more (as I hope) regards Martin Ankerl From: k0155000 Subject: pure GA tournament would be a good idea Date: 2000/06/01 Message-ID: <3936CE52.4ED0F13E@awhs.at>#1/1 [...] > One idea would be > to have a tournie which is well suited for 'pure' GA as there > seems to be some interest in that floating about. I'm also interrested! here is one funny warrior I have evolved. It's only 3 lines, and scored good in the wilkies and wilmoos benchmark. It took about 538000 Iterations: ;RedMaker Warrior ;name TtMo ;assert 1 spl.x # 5 , } 1985 mov.i { 1510, }-1 djn.i $-1 , }-2 end wilkies benchmark: Opponent Scores Results Performance of TtMo -------- ------ ------- ---------=---------=---------=---------= Blue Funk 3 162 775 59 343 598 ********** Cannonade 141 874 53 232 715 *********** Fire Storm v1.1 108 189 625 357 18 ************************* Iron Gate 175 124 416 583 1 **************** Marcia Trionfal 291 55 7 959 34 nobody special 278 114 3 892 105 * Paperone 146 148 479 474 47 ******************* Porch Swing 116 182 603 383 14 ************************ Rave 206 936 311 686 3 ************ Thermite 1.0 139 158 519 458 23 ********************* TimeScape (1.0) 275 138 11 884 105 * Tornado 104 195 650 349 1 ************************** -------- ------ ------- ---------=---------=---------=---------= Adjusted Score: 107.2 and wilmoos benchmark: Opponent Scores Results Performance of TtMo -------- ------ ------- ---------=---------=---------=---------= obvious to thos 265 240 46 852 102 *** Blur 2 113 185 612 373 15 ************************ Electric Head 155 127 366 460 174**************** The Fugitive 294 27 0 973 27 Impfinity v4g1 191 578 24 470 506 ******* Jack in the box 291 55 7 959 34 Newt 182 666 53 440 507 ******** He Scans Alone 110 168 493 300 207********************** Scan Man 879 185 529 204 267************************ Stepping Stone 137 160 526 450 24 ********************* Torch t18 161 130 408 511 81 ***************** unrequited love 283 86 2 918 80 * -------- ------ ------- ---------=---------=---------=---------= Adjusted Score: 93.5 From: happycan@aol.com (Happy can) Subject: Incendiary Date: 2000/06/01 Message-ID: <20000601145437.22680.00001152@ng-cr1.aol.com>#1/1 could someone define incendiary bombing? ive been studying the source of torch, #102 on Olympus, and i cant understand how the bomb is supposed to work (let alone the bombing pattern). I was under the impression that incendiary was a two part bomb (with adjacent instructions in the core) that stunned, kind of a substitute for a spl carpet, something like SPL 1 JMP -1 or MOV 1, >1 SPL -1, #2 so that if either instruction was executed it would be a powerful stun. Torch doesnt seem to do that though, its bombs are far apart and don' t point to each other at all (i think). Could help me with my confusion? Thanks Marshall From: "Wayne Sheppard" Subject: Re: Time for a new tournament? Date: 2000/06/01 Message-ID: #1/1 "David M. Moore" wrote in message news:39369759.6CB208B5@groupinfo.com... > Wayne Sheppard wrote: > > > > "David M. Moore" wrote in message > > news:3935975D.DE6FC068@groupinfo.com... > > > > > > I don't understand why koth.org's ICWS hill has a maxprocesses > > > of 8000; did this change after the 1988 tournament? > > > > The guy who made the very first public hill chose 8000 > > (as opposed to 8192). > > There is really not much difference between 8000 and 8192 > > is designing your warrior. > > However, there is a major difference between 8000 and 64 processes. Agreed. Again, I don't think any of the old "standards" made any claim to coresize or process limit size. The "standard" was limited to the instruction set and how it was interpreted. I believe each tournament could pick the conditions it was run under. 64 may have been a common value used. One reason for a low process value may have been because of the limitations of the early simulators. Many early simulators had problems with high process limits. The first hill didn't have this problem, which allowed for a higher process count. I remember an early quote something like... "one process per core location should be enough". [clip] > In general, everything becomes better when you > decrease the processes to 64 and increase the maxlength. "Better" is a relative term. Some people would say that 8000 processes is better. I would agree that a 64 process limit has not been "explored" as much as the current 8000. This would present more new ground to investigate. > More research is needed, but I definitely like this tourney idea. Sounds like a fine idea. From: "David M. Moore" Subject: Re: Time for a new tournament? Date: 2000/06/01 Message-ID: <39369759.6CB208B5@groupinfo.com>#1/1 Wayne Sheppard wrote: > > "David M. Moore" wrote in message > news:3935975D.DE6FC068@groupinfo.com... > > > > I don't understand why koth.org's ICWS hill has a maxprocesses > > of 8000; did this change after the 1988 tournament? > > The guy who made the very first public hill chose 8000 > (as opposed to 8192). > There is really not much difference between 8000 and 8192 > is designing your warrior. However, there is a major difference between 8000 and 64 processes. For example, the winner of the ICWS 88 tournament, Cowboy, was designed to work with 64 processes. It can't win a battle in the 8000 process environment (unless extremely lucky). Did maxprocesses change for later tournaments? If not, then perhaps the redcode-icws on koth.org isn't "the original standard for ICWS tournaments" as the web site claims. I am interested in another tournament with the same specifications that MICE and Cowboy worked under. There are some big reasons for this: 1. Historical perspective. I would like to see some modern well-documented warriors compared to the original tournament entries. Most people know about Core War from the original Scientific American articles. Those articles remain the best introduction to the game. I like the idea of having some sophisticated but well-documented programs that the SciAm readers can enjoy. 2. I'm as advanced in the '88 standard as anyone. In my opinion, I would welcome the 64 process limit with large maxlength (300?). I know that it would really diversify the strategies. Quickscans would be handicapped, so more sophisticated warriors could bootstrap. Everything imp-related and imp-bashing becomes more balanced. Self-splitting warriors must now deal with process starvation; that will make designs more interesting. Replicator designs change (probably for the better) because instead of getting stunned, they get starved. In general, everything becomes better when you decrease the processes to 64 and increase the maxlength. More research is needed, but I definitely like this tourney idea. -- David Moore dm@groupinfo.com From: "Wayne Sheppard" Subject: Re: Time for a new tournament? Date: 2000/06/01 Message-ID: #1/1 "David M. Moore" wrote in message news:3935975D.DE6FC068@groupinfo.com... > > I don't understand why koth.org's ICWS hill has a maxprocesses > of 8000; did this change after the 1988 tournament? > Is that the difference between the '86 and '88 standards? I don't think a standard size was ever defined in any of the old standards. The guy who made the very first public hill chose 8000 (as opposed to 8192). 8000 is now "quazi-standard". There is really not much difference between 8000 and 8192 is designing your warrior. Almost all warriors can run either with just tweaking of the constants. From: Philip Kendall Subject: Re: new to corewar Date: 2000/06/01 Message-ID: #1/1 "Jacob Hunt" writes: > I'm new to core war and very interested in playing it. Any pointers on what > would be the best strategy on starting to learn the game (i.e. a starting > point) As no-one else has said this yet, I'll get off my lazy backside and reply :-) http://www.kendalls.demon.co.uk/pak21/corewar/start.html Just sends you off to a couple of tutorials, really... HTH, Phil -- / Philip Kendall \ | http://www.kendalls.demon.co.uk/pak21/index.html | \ Spread css-auth: http://www.ast.cam.ac.uk/~pak/decss.html / From: Hillis Subject: Re: GA goes d-clear Date: 2000/06/02 Message-ID: <39387077.CFC50312@erols.com>#1/1 M Joonas Pihlaja wrote: > > On Wed, 31 May 100 pizza@ecst.csuchico.edu wrote: > > > A challenger has arrived on the ICWS '94 Draft hill! Vital statistics: > > Program "Evolver 538" (length 3) by "Martin Ankerl" > > (contact address "Martin.Ankerl@csc.at"): > > ;strategy only 3 lines of code! > > ;strategy spl.x # 5 , } 1985 > > ;strategy mov.i { 1510, }-1 > > ;strategy djn.i $-1 , }-2 > > Wow, a d-clear from an evolver! (Well, almost.) Do d-clears > often get produced by GA's or it this a first? > > Joonas To make a long story short, yes I get lots of evolved warriors that look very similar, but they aren't as clean or as strong, and they get killed off by other, ultimately weaker, stuff. Here's one I evolved for the Baby hill a while back. (It didn't get on.) Program "h1_1.red" (length 15) by "Dave Hillis" ORG START MOV.I * 62, @ -354 START SPL.A # -395, } -332 MOV.I @ -1, } -2 DJN.I $ -1, } -3 ... followed by 11 more lines of fluff. Dave Hillis From: Hillis Subject: Re: Time for a new tournament? Date: 2000/06/02 Message-ID: <3938698C.ABE70CE7@erols.com>#1/1 In general, I think that GAs will do better under rules where old handwritten warriors won't work well (it's tough to go up against over a decade of legacy code) and where the state space is reduced. Shrinking the program length and core size in Ilmari's mini tournament seemed to help. Here's one idea, for what it's worth. There was earlier talk of having a multi-round tournament where contestants' programs would grow by 1 instruction with each round. A possible twist on this would be to allow contestants to add (insert) 1 new line to any of the warriors submitted to the previous round. You could also increase the core size from round to round. Dave Hillis From: pk Subject: Re: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/03 Message-ID: <3939B895.871849B1@videotron.ca>#1/1 Nope, they're not... that's what i was afraid of: newbies becoming all confused bc they both share they same name... though(thank god 8), you don't seem to be a newbie ;-) The guy @ sourceforge just took the basic idea, but the scoring system, and the language aren't the same... and i really don't think i'm gonna like the final product 8^) Dahab wrote: > > I compared the code used on both, and it feels to me like they are > different, such as corewars.sourceforge.net uses "move" instead of "mov". > any ideas? -- AKA paul_virak_khuong at yahoo.com, pkhuong at deja.com, pkhuong at crosswinds.net and pkhuong at technologist.com(list not complete)... From: "Dahab" Subject: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/03 Message-ID: #1/1 I compared the code used on both, and it feels to me like they are different, such as corewars.sourceforge.net uses "move" instead of "mov". any ideas? From: jkw@koth.org Subject: Re: Time for a new tournament? Date: 2000/06/03 Message-ID: <4.1.20000603162147.00a1dd20@pop-server>#1/1 At 03:09 PM 6/3/00 -0400, you wrote: >sorry for interfering : > I am a new CoreWar fan and searching for doku. >I was on KOTH.org. There is a linksection from which I got the 'Guide to >art' >but it seems incomplete (links are missing eg. stone.html) has anybody a >complete >version ? >thanx As far as I know, Wangsaw never made any further updates to that tutorial. But several other tutorials discuss stones, My First CoreWar Book, by Steven Morell, for instance... in chapter 2... -jkw From: Enrico Kochon Subject: Re: Time for a new tournament? Date: 2000/06/03 Message-ID: <393938E4.1027E10@web.de>#1/1 sorry for interfering : I am a new CoreWar fan and searching for doku. I was on KOTH.org. There is a linksection from which I got the 'Guide to art' but it seems incomplete (links are missing eg. stone.html) has anybody a complete version ? thanx From: jkw@austin.rr.com Subject: Re: new to corewar Date: 2000/06/03 Message-ID: <4.1.20000602124521.00a1e7e0@pop-server>#1/1 At 04:32 AM 5/31/00 -0400, you wrote: >> I always forget to join IRC on Sundays for the chat... > >Is there a chat about coreware? > >--Jan > Yea... /server irc.koth.org /join #corewars From: M Joonas Pihlaja Subject: Re: Time for a new tournament? Date: 2000/06/03 Message-ID: #1/1 On Wed, 31 May 2000, David M. Moore wrote: [snip] > I'm referring to the same specifications that MICE and Cowboy > performed under. I don't understand why koth.org's ICWS hill > has a maxprocesses of 8000; did this change after the 1988 > tournament? Is that the difference between the '86 and '88 > standards? I think '86 allowed 'MOV #0 x' which acts like 'mov datzero, x' apparently; Dewdney describes CHANG1 (who fought against MICE) to use this strategy (in SciAm/Jan'87). CHANG1 -- the first imp/stone? Joonas From: M Joonas Pihlaja Subject: Re: Time for a new tournament? Date: 2000/06/03 Message-ID: #1/1 On Thu, 1 Jun 2000, Wayne Sheppard wrote: [snip] > I don't think a standard size was ever defined in any of the > old standards. The guy who made the very first public hill > chose 8000 (as opposed to 8192). 8000 is now > "quazi-standard". Well, I'm not sure this counts, but Dewdney did specify a hill of size 8000 in the SciAm articles. ;) > There is really not much difference between 8000 and 8192 is > designing your warrior. Almost all warriors can run either > with just tweaking of the constants. Hmm.. Well, stone design is a little trickier in 8192 than 8000 and not only because two is the only divisor. Don't really have anything to back this up except anecdotal evidence. Namely, when converting an incendiary bomber from core size 8000 to 8192 it seemed like the available (primary step, distance of 2nd bomb) pairs didn't have as good a pattern as in 8000; but that's a Tweak. Joonas From: M Joonas Pihlaja Subject: Re: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/04 Message-ID: #1/1 On Sat, 3 Jun 2000, Dahab wrote: > I compared the code used on both, and it feels to me like > they are different, such as corewars.sourceforge.net uses > "move" instead of "mov". any ideas? I think I saw some notes in corewars.sourceforge.net that mentioned that redcode was implemented too; they even might have a redcode hill. I'm not sure what the redcode dialect is or how well it conforms to any 'standard'. Joonas From: "Jan Vornberger" Subject: Re: new to corewar Date: 2000/06/04 Message-ID: <8hduik$g3l$17$1@news.t-online.com>#1/1 > Yea... > > /server irc.koth.org > /join #corewars > Thank you --Jan From: Koth Subject: KOTH.ORG: Status - Standard 06/05/00 Date: 2000/06/05 Message-ID: <200006050400.AAA08208@gevjon.ttsg.com>#1/1 Weekly Status on 06/05/00 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sun Jun 4 19:16:03 EDT 2000 # %W/ %L/ %T Name Author Score Age 1 36/ 20/ 44 Freight Train David Moore 151 71 2 36/ 22/ 42 sIMPly.Red v0.95 Leonardo Humberto 150 28 3 34/ 20/ 45 Test Alexander (Sasha) Wa 148 10 4 41/ 35/ 24 PacMan David Moore 147 100 5 34/ 22/ 45 Guardian Ian Oversby 146 70 6 40/ 41/ 19 Stasis David Moore 140 178 7 28/ 16/ 56 EV Paper John K Wilkinson 140 84 8 40/ 41/ 19 Beholder's Eye V1.7 W. Mintardjo 139 346 9 37/ 36/ 27 Stillborn Bomber v0.2 mjp 139 11 10 42/ 45/ 13 Iron Gate Wayne Sheppard 138 396 11 38/ 38/ 24 Tangle Trap David Moore 138 144 12 30/ 22/ 48 Shish-Ka-Bob Ben Ford 137 26 13 28/ 19/ 53 Test I Ian Oversby 136 127 14 40/ 46/ 14 Foggy Swamp Beppe Bezzi 134 67 15 28/ 22/ 50 Evoltmp 88 John K W 134 121 16 40/ 47/ 14 Blur '88 Anton Marsden 132 108 17 38/ 50/ 12 Blurstone '88 M. J. Pihlaja 127 65 18 38/ 50/ 11 Shadow Seeker John Metcalf 126 7 19 30/ 36/ 34 Frog Sticker P.Kline 125 20 20 26/ 43/ 31 Twill Andy Pierce 110 1 21 6/ 40/ 54 Nerx-A19 Arek Paterek 71 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 06/05/00 Date: 2000/06/05 Message-ID: <200006050400.AAA08212@gevjon.ttsg.com>#1/1 Weekly Status on 06/05/00 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Wed May 31 20:33:45 EDT 2000 # Name Author Score Age 1 QuiVa John Metcalf 24 125 2 SmallFry Simon Duff 11 2 3 Her Majesty P.Kline 10 51 4 fclear Brian Haskin 7 16 5 vamp/scan test b1 Ken Espiritu 5 5 6 D-clearM Ken Espiritu 3 32 7 Friction Ken Espiritu 3 4 8 MarMe2 DonWagner Modificati 2 1 9 Dracula's Cape Ben Ford 2 10 10 Imps Test Simon Duff 1 6 11 MarMe2a DonWagner 0 0 From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 06/05/00 Date: 2000/06/05 Message-ID: <200006050400.AAA08225@gevjon.ttsg.com>#1/1 Weekly Status on 06/05/00 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Jun 4 18:13:22 EDT 2000 # %W/ %L/ %T Name Author Score Age 1 44/ 41/ 15 Pitbull Christian Schmidt 148 2 2 40/ 39/ 21 CrazyShot Christian Schmidt 141 1 3 42/ 44/ 14 Eraser II Ken Espiritu 141 126 4 32/ 25/ 43 Omnibus John Metcalf 140 178 5 42/ 45/ 13 Jinx Christian Schmidt 139 132 6 43/ 46/ 11 Stalker P.Kline 139 154 7 35/ 30/ 35 Blacken Ian Oversby 139 416 8 42/ 45/ 14 Zooom... John Metcalf 138 305 9 31/ 24/ 45 nPaper II Paul-V Khuong 138 169 10 34/ 30/ 35 test not me 138 3 11 42/ 47/ 11 vamp/scan test b1 Ken Espiritu 138 84 12 43/ 49/ 8 Kenshin Steve Gunnell 138 124 13 29/ 22/ 49 Jade Ben Ford 136 238 14 41/ 47/ 12 Boys are Back in Town 1.1 Philip Kendall 135 431 15 28/ 22/ 50 Uninvited John Metcalf 134 121 16 27/ 21/ 52 Jaguar Christian Schmidt 133 156 17 27/ 21/ 52 Tie Factory Christian Schmidt 133 20 18 29/ 25/ 46 EvoP 3 Ken Espiritu 133 165 19 30/ 27/ 44 Experimental John Metcalf 132 125 20 29/ 29/ 41 Ant Factory Christian Schmidt 130 264 21 12/ 33/ 55 Oxygen Martin M. Pedersen 90 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 06/05/00 Date: 2000/06/05 Message-ID: <200006050400.AAA08218@gevjon.ttsg.com>#1/1 Weekly Status on 06/05/00 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Tue May 30 10:10:15 EDT 2000 # %W/ %L/ %T Name Author Score Age 1 53/ 32/ 15 Black Moods Ian Oversby 175 7 2 46/ 30/ 24 Controlled Aggression Ian Oversby 163 11 3 38/ 16/ 46 Venom v0.2b Christian Schmidt 161 33 4 31/ 6/ 63 Evol Cap 4 X John Wilkinson 155 80 5 28/ 3/ 69 Evolve X v4.0 John Wilkinson 154 28 6 32/ 20/ 48 Rosebud Beppe 144 59 7 38/ 37/ 25 Dr. Gate X Franz 140 51 8 35/ 33/ 32 Draken Fire X Ben Ford 137 2 9 37/ 39/ 24 Stepping Stone 94x Kurt Franke 134 66 10 25/ 16/ 59 Sphere v0.2 Christian Schmidt 134 22 11 35/ 36/ 29 BigBoy Robert Macrae 133 105 12 26/ 19/ 55 Purple v0.1 Christian Schmidt 132 32 13 36/ 43/ 21 Tsunami v0.3 X Ian Oversby 130 5 14 30/ 31/ 40 Self-Modifying Code X Ben Ford 129 1 15 32/ 35/ 33 Lithium X 8 John K Wilkinson 128 71 16 38/ 50/ 12 S.E.T.I. 4-X JKW 126 81 17 35/ 46/ 19 Pagan John K W 125 65 18 36/ 46/ 18 Memories Beppe Bezzi 125 87 19 35/ 50/ 15 WingShot Ben Ford 120 3 20 33/ 50/ 16 BiShot Christian Schmidt 116 19 21 15/ 66/ 19 Blob Warrior Ari A. Pajunen 63 0 From: Ben Ford Subject: Re: purely evolved warrior got on the redcode experimental hill :-) Date: 2000/06/05 Message-ID: <0b415408.5049ced4@usw-ex0106-046.remarq.com>#1/1 In article <393BE220.62B6808E@awhs.at>, Martin Ankerl wrote: >Hello, > >I have evolved the following warrior with redmaker: > >Program "Evolver 1090" (length 3) by "Martin Ankerl" > >spl.a # 1992, { 1 >mov.i } 7875, }-1 >djn.a $-1 , }-2 > >all benchmarks with 1000 rounds: >wilkies: 118.2 >wilmoo: 103.3 > >it reached the 18th place on the experimental hill, and it got a score of >106.8 on the redcode-94nop hill where it didnt enter (both on koth). > >It came out after 1090000 iterations. If the warriors keep getting better >like they do now, I think that in some days (or weeks?) it will evolve a >warrior which can get on the 94-nop hill :-) > > >Martin Ankerl Just so you know, the experimental hill has a coresize of 80,000 instead of 8,000. So you are probably evolving in a different core that what it is competing in. With the experimental hill however, its a very young hill so its easier to get on it. Someone still competing on the beginner hill could probably get a warrior on the experimental hill. * Sent from RemarQ http://www.remarq.com The Internet's Discussion Network * The fastest and easiest way to search and participate in Usenet - Free! From: Martin Ankerl Subject: purely evolved warrior got on the redcode experimental hill :-) Date: 2000/06/05 Message-ID: <393BE220.62B6808E@awhs.at>#1/1 Hello, I have evolved the following warrior with redmaker: Program "Evolver 1090" (length 3) by "Martin Ankerl" spl.a # 1992, { 1 mov.i } 7875, }-1 djn.a $-1 , }-2 all benchmarks with 1000 rounds: wilkies: 118.2 wilmoo: 103.3 it reached the 18th place on the experimental hill, and it got a score of 106.8 on the redcode-94nop hill where it didnt enter (both on koth). It came out after 1090000 iterations. If the warriors keep getting better like they do now, I think that in some days (or weeks?) it will evolve a warrior which can get on the 94-nop hill :-) Martin Ankerl From: wh@msgto.com (Walter Hofmann) Subject: Re: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/05 Message-ID: #1/1 On Sun, 4 Jun 2000 20:45:41 +0300, M Joonas Pihlaja wrote: > >On Sat, 3 Jun 2000, Dahab wrote: > >> I compared the code used on both, and it feels to me like >> they are different, such as corewars.sourceforge.net uses >> "move" instead of "mov". any ideas? > >I think I saw some notes in corewars.sourceforge.net that >mentioned that redcode was implemented too; they even might have >a redcode hill. I'm not sure what the redcode dialect is or how >well it conforms to any 'standard'. There is a file called DIFFERENCES in the tar.gz archive which describes the differences. Walter From: "Ransom Smith" Subject: Re: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/05 Message-ID: #1/1 Dahab wrote in message news:Ydh_4.87$bg.1915@newsreader.i-2000.net... > I compared the code used on both, and it feels to me like they are > different, such as corewars.sourceforge.net uses "move" instead of "mov". > any ideas? if memory serves, while corewars.sourceforge.net isn't related to this newsgroup at all (the real world, man!) corewar.sourceforge.net is. (no 's'). I think that's an FAQ question: "Is it Core Wars or Corewars or CoreWars or Core War or Corewar or CoreWar or Core wars or Core war or corewars or corewar or..." From: wh@msgto.com (Walter Hofmann) Subject: Re: are koth.org and corewars.sourceforge.net the same corewars? Date: 2000/06/05 Message-ID: #1/1 On Sat, 3 Jun 2000 20:07:17 -0400, Dahab wrote: > >I compared the code used on both, and it feels to me like they are >different, such as corewars.sourceforge.net uses "move" instead of "mov". >any ideas? The corewars program at corewars.sourceforge.net supports both Redcode and its own language. You can select which language to use in the options dialog in the program. There are hills for both languages on the web site; alas, the redcode hills are still unpopulated. You chance if you are a Redcode hacker. Check the hill page for details. As far as scoring is concerned, it can score by cells/time alive/kills with arbitrary coefficents or "winner 3, looser 0, draw 1 both" in one-against-one matches. Score formulas as in pMars are not supported (yet?). Walter From: "Robert Macrae" Subject: Re: eolving corewar warrior Date: 2000/06/06 Message-ID: <8hjsub$bkh$1@lure.pipex.net>#1/1 > I think that the search area is so big that even with the genetic > algorithm it is difficult to find good solutions. Its a bit like > evolving insects and comparing them to animals (hand written programs). Yes. Try improving the density of your search over the plausible space of warriors by using distributions for instructions that reflect those found in hand-coded warriors. For example, DJN -2 should occur much more frequently than DJN -2000, and SPL #-300 should be more common that SPL $-300 Robert Macrae From: Martin Ankerl Subject: Re: GA goes d-clear Date: 2000/06/06 Message-ID: <393D3252.E434C26C@awhs.at>#1/1 Jan Vornberger schrieb: > > > My computer is currently evolving this soup, ... > > My english is not so good and i don't understand all what you say, > but is there a prog (redmaker?) that changes the code randomly > and makes a tournament like: The best will survive. And than > change again? Does that work? > > --Jan You seem to be from Germany, so here is an answer in German: Ich habe 3 verschiedene Programme gefunden: Redmaker, Sys4b und ga_war Diese verwenden alle einen genetischen Algorithmus, dabei werden zuerst rein zuf�llige Programme erstellt. Es k�mpfen immer 2 dieser erstellten K�mpfer gegeneinander, wobei meistens der schlechtere gel�scht und durch eine leicht ver�nderte (mutierte) Variante des besseren K�mpers ersetzt wird. Dadurch entstehen mit der Zeit immer bessere K�mpfer. Das funktioniert eigentlich ganz gut, allerdings hab ich 2 Hauptprobleme: 1. Die Evolution geht sehr langsam, weil das Testen der K�mpfer ziemlich viel Rechenzeit braucht. 2. Nach einiger Zeit f�ngt sich die Evolution in einem lokalen Optimum, also die ganze "Suppe" (=alle generierten K�mpfer) fixiert sich auf einen K�mpfertyp, meist ein einfacher Coreclear. Die Chance durch das zuf�llige Ver�ndern pl�tzlich auf einen ganz anderen K�mpfertyp, der noch dazu besser als die schon optimierten coreclears ist zu geraten ist so gut wie 0. Allerdings gibt es einige freie GA-Libraries, die ziemlich m�chtig sind. Es m��te sich halt jemand mal die M�he machen diese zu verwenden. regards Martin Ankerl From: Martin Ankerl Subject: Re: purely evolved warrior got on the redcode experimental hill :-) Date: 2000/06/06 Message-ID: <393D3546.13782E4@awhs.at>#1/1 Ben Ford schrieb: > Just so you know, the experimental hill has a coresize of 80,000 > instead of 8,000. Experimental hill has coresize of 55440, and 500000 cycles to completition. The problem is not the coresize but the number of cycles; it takes a much much longer evolving warriors with 500000 cycles. When I began evolving I only alowed 10000 cylces and doubled it after some iterations till I reached 80000 cycles. > So you are probably evolving in a different > core that what it is competing in. With the experimental hill > however, its a very young hill so its easier to get on it. > Someone still competing on the beginner hill could probably get a > warrior on the experimental hill. You'r right, but I think that a score of 107 on the No Pspace - Hill is not bad (currently > 110.1 is needed to enter). The big problem is that the evolution finds a local optimum where it cant escape - some smarter algorithms are needed. There are some very good (and free) GA-libraries around, with these I think it will be possible to evolve very good warriors. But at first I have to learn C++ ... :-( regards Martin Ankerl From: "Jan Vornberger" Subject: Re: GA goes d-clear Date: 2000/06/06 Message-ID: <8hj7ki$r3m$11$1@news.t-online.com>#1/1 > My computer is currently evolving this soup, ... My english is not so good and i don't understand all what you say, but is there a prog (redmaker?) that changes the code randomly and makes a tournament like: The best will survive. And than change again? Does that work? --Jan From: Winston Bean Subject: Tourney Idea Date: 2000/06/07 Message-ID: <393F4395.E01A7697@alaska.net>#1/1 Howdy! It's Winston here (WFB). Though I've been away from my dear Core Wars for quite some time, I've been intently watching from the sidelines. With all the interest in evolved warriors, I think a tournament incorporating that would be great. I realize that's already been a topic of discussion, but I haven't seen any specifics thrown out. So, here's what I have in mind: The technically competent moderator (that's definitely not me) writes a fairly simple, very open-ended GA evolution proggy in an agreed upon language (being the wannabe that I am, I suggest QBasic). In fact, the entire newsgroup could cooperate on making this, editing the source together, openly. The source will be as well documented as possible, so someone with limited programming acumen, or none at all, won't be excluded. Once this framework is complete, everybody downloads a copy to tinker with. The area with the most potential for change would probably be the algorithms and evolution parameters--these should be easily changed to any degree. Basically, the entire source is set up so it's fairly easy to tweak a few numbers here and there, or completely overhaul it. Give people time to work with their copy, and then plenty of time to evolve warriors. Now, the warriors could either be entered against each other in a round-robin style tournament or something similiar, or, alternately, could be sent against the current 94nop or -b hill (actually, copies of these, so each entry goes up against the original hill). In my mind, this may not add much more to the tourney itself, but would definitely advance the evolutionary branch of Core War. K, half of that I came up with on the fly, so feel free to pick at or disregard the above. The format isn't terribly well thought out, but at first thought it seems like a viable way to go. It's rather late, and I may not have been very clear in getting my message across--if this is the case, please don't hesitate to ask for clarification. The more I read over my ramblings, the more it all seems like a lame idea, so I'll go ahead and post this before I get so disgusted with myself that I just forget this whole post =p. Anyway, I'm just trying to get the ball rolling on a new tourny. Looking foward to future discussion. Ciao! -Winston From: M Joonas Pihlaja Subject: Re: purely evolved warrior got on the redcode experimental hill :-) Date: 2000/06/07 Message-ID: #1/1 On Mon, 5 Jun 2000, Martin Ankerl wrote: [snip] > it reached the 18th place on the experimental hill, and it > got a score of 106.8 on the redcode-94nop hill where it didnt > enter (both on koth). Congratulations! This might be a first on the experimental hill. Joonas From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 2000/06/13 Message-ID: Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: Ben Ford Subject: Re: Summer Tourney idea Date: 2000/06/14 Message-ID: <192df6a7.155b5eed@usw-ex0105-038.remarq.com>#1/1 In article <961005555.24455@itz.pp.sci.fi>, Ilmari Karonen wrote: >In article , Wayne Sheppard wrote: >>How about a normal round-robin tournament with the standard KOTH settings >>but with a modified scoring system? I propose that the length of the >>program be considered in the final score in a very significant way. Your >>score will be calculated as normal (3/0/1) but the result is then divided by >>your warrior's length. > >Sounds interesting, but you'd probably want to add an appropriately >chosen constant (5 to 10 or so) to the warrior lengths before the >division. Otherwise DJN.F #foo, {0 would be nearly unbeatable. > >-- >Ilmari Karonen >http://www.sci.fi/~iltzu/ Maybe sqrt(length) as the divisor? Should be enough of a boost to short warriors without crippling the big ones. * Sent from RemarQ http://www.remarq.com The Internet's Discussion Network * The fastest and easiest way to search and participate in Usenet - Free! From: Ilmari Karonen Subject: Re: Summer Tourney idea Date: 2000/06/14 Message-ID: <961005555.24455@itz.pp.sci.fi>#1/1 In article , Wayne Sheppard wrote: >How about a normal round-robin tournament with the standard KOTH settings >but with a modified scoring system? I propose that the length of the >program be considered in the final score in a very significant way. Your >score will be calculated as normal (3/0/1) but the result is then divided by >your warrior's length. Sounds interesting, but you'd probably want to add an appropriately chosen constant (5 to 10 or so) to the warrior lengths before the division. Otherwise DJN.F #foo, {0 would be nearly unbeatable. -- Ilmari Karonen http://www.sci.fi/~iltzu/ From: "Wayne Sheppard" Subject: Summer Tourney idea Date: 2000/06/14 Message-ID: #1/1 How about a normal round-robin tournament with the standard KOTH settings but with a modified scoring system? I propose that the length of the program be considered in the final score in a very significant way. Your score will be calculated as normal (3/0/1) but the result is then divided by your warrior's length. For example: Size - Normal Score - Modified Score 1 - 50 - 50 2 - 110 - 55 3 - 180 - 60 4 - 180 - 45 10 - 190 - 19 As you can see, this will encourage very short warriors. But if you can write a longer warrior that dominates the smaller warriors, you will come out on top. Any suggestions? From: rustcrumb@aol.com (RustCrumb) Subject: (kinda) Tourney Idea Date: 2000/06/14 Message-ID: <20000613215503.29155.00001114@ng-fa1.aol.com>#1/1 I was thinking about evolving warriors and stuff, the idea of treating a corewarrior as 'life', and had this idea. What if there were some conditions that were not constant or homogenous in the core. The environment corewarriors 'live' in right now is homogenous and static, in that instructions will always be executed the same way all over the core, always. If you changed that, added local (address) and global (whole core) core conditions that would change over the course of a battle which would affect how warriors worked, you could add a whole new level of complexity to the game. You might make a local condition be an 'energy' level for each address, so that executing certain instructions drains the address of energy, and instructions don't execute (effectively NOP) without enough energy. A global condition might affect certain instructions, like a 'global temperature' that would make certain instructions, like JMP and SPL, take longer to execute. The temperature would rise as other instructions, like maybe MOV, are executed, so that a warrior would need to adapt to the 'temperature' or find a way to regulate it to its advantage. These varying conditions would definitely lead to new strategies involving 'environmental' manipulation. Hope i sound clear here ... its kind of hard to explain. the tourney part of the idea: a team of programmers implements these changes in secret, then announces a tourney and the new rules at the same time. The tourney would start a month after the initial announcement. Each author would submit one warrior, which would fight in several different starting enviroments. In each environment, all the warriors would fight each others and accumulate points. At the end of the tourney, the warrior which had accumulated the most total points would be the winner. The idea would be to write a warrior that could work (and win) in the most varyng environments. Hope thats clear, its still kinda vague in my mind :P Am I crazy? Questions? Marshall From: Jason Rolfe Subject: Core War-Like Alife Date: 2000/06/16 Message-ID: <394AABA1.F8B77622@research.bell-labs.com>#1/1 I am attempting to construct an artificial life environment similar to that in Core Wars and am looking for papers describing similar endeavors. So far, I have located Rasmussen, et al. in Physica D 42 (1990) "The Coreworld: Emergence and Evolution of Cooperative Structures in a Computational Chemistry", which describes the VENUS environment. In the paper, there is mention of a second-generation alife environment to be entitle EARTH. Unfortunately, I have not found any other references to EARTH. Was EARTH actually created? Have Rasmussen and his co-authors written any other papers on the subject? Are there any other separate but similar systems? Systems which encapsulate and artificially breed and kill organisms will probably not be relevant to my project. Thus, Tierra, Avida, and anything which simply interfaces a GA to MARS are not applicable. I am specifically interested in allowing the world to evolve on its own, rather than externally managing the population of organisms. Thanks for your help. Jason Rolfe (jrolfe@research.bell-labs.com) From: Philip Kendall Subject: Web page move... Date: 2000/06/20 Message-ID: #1/1 Hi all... My Web pages have moved from http://www.kendalls.demon.co.uk/pak21/corewar/ to http://www.ast.cam.ac.uk/~pak/corewar/ Please update your links :-) Cheers, Phil -- / Philip Kendall \ | http://www.ast.cam.ac.uk/~pak/index.html | \ Spread css-auth: http://www.ast.cam.ac.uk/~pak/decss.html / From: jason@carrot.localdomain (jason) Subject: update to ga_war.c and a few evolvers Date: 2000/06/20 Message-ID: #1/1 Hello, I was playing with ga_war.c last weekend and fixed a bluemoon segfault. I have posted a updated version at: http://ezmo.com/jason/projects/corewar/corewar.html Jason Boer jason@ezmo.com Here a some programs from a population of 20 for 100000 rounds. ;redcode-94 ;assert CORESIZE == 8000 ;name nr_0.red nop.x $ -8,{ -2 sub.ba *-13,#-12 jmz.a # 0,> 13 sub.ba { -4,$ 11 spl.x #-14,> 15 mov.i > 9,> -6 jmz.i > 1,$ -5 slt.a { 6,$ 4 nop.ba *-11,{ -1 spl.f * 0,* 4 end ;1077 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_1.red sne.b $ -8,{ -2 sub.a *-13,#-12 jmz.a # 0,> 13 sub.ba { 0,$ 11 spl.x #-14,> -1 mov.i > 7,> -6 jmz.i > 1,$ -9 slt.a {-13,$ 4 nop.ba * -5,{ -1 add.f * 2,* 9 end ;1053 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_10.red cmp.a $ -8,# -7 jmz.a # -1,> 13 jmz.x { 5,$ 4 spl.x # 6,* 15 mov.i > 9,>-14 sub.x @ 15,$ 11 jmp.ba { 5,$ 2 jmz.x < -6,< 10 nop.b $-11,< -7 mod.ab * 15,> 4 end ;1077 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_11.red slt.a # 8,# 7 seq.ab * 12,#-12 jmz.a # 4,> 13 jmz.x {-10,$ 4 spl.x # 6,*-14 mov.i > 9,> -6 cmp.i # 15,$ 11 slt.a { 5,$ 4 cmp.ab <-11,{ 10 mul.ab * 0,* 4 end ;1055 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_12.red sne.ab $ 15,{ -2 sub.a *-13,#-12 jmz.i # 0,> 13 sub.ba { -1,# 11 spl.x #-14,> -1 mov.i > 7,> -6 jmz.i > 1,$ -9 spl.a #-13,@ 5 djn.ba * -5,{ -1 add.f * 3,* 9 end ;1069 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_13.red spl.b $ -8,{ -2 sub.a *-13,# 3 jmz.x #-10,> 13 nop.b # 15,{ -4 spl.ba # -1,$ 9 mov.i > 7,> -6 dat.i > 1,$ -9 djn.ba $ -5,{ 12 add.f * -3,{ 9 end ;1067 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_14.red sne.b $ -8,$ 9 sub.f *-13,*-11 jmz.x #-10,> 13 jmn.b # 15,> 8 spl.x # -1,{ 9 mov.i > 7,> -6 dat.i > 14,$ 1 jmp.ba @ -3,{ 12 mul.ab *-13,# 12 end ;1064 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_15.red cmp.a # 8,# 7 sne.ab * 12,#-12 jmz.a # 4,> 13 nop.x {-10,$ 4 spl.ba # 6,*-14 mov.i > 9,> -6 cmp.i # 15,$ 11 slt.ab # 5,$ 14 cmp.ab <-11,{ 10 mul.ab * 0,* 15 end ;1051 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_16.red cmp.a # 7,# 7 seq.a * 12,#-12 jmz.ab # 4,> 13 add.x @-10,{ 4 spl.ba #-13,*-14 mov.i > 9,> -6 jmp.i <-10,$ 11 slt.ab { 5,$ 4 cmp.ab $-11,$ -7 mul.a * 0,* 5 end ;1113 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_17.red sne.b $ -8,{ -2 sub.a *-13,$-12 jmz.x # -2,> 14 spl.x #-14,> -7 mov.i > 7,> -6 jmz.i > 1,$ -9 slt.a {-13,# 4 djn.ab @ -5,{ -1 add.f * -5,{ 9 end ;1057 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_18.red sne.ba # 1,> 9 nop.x @ 7,>-11 cmp.i $ -2,>-14 jmz.ab # 1,> 15 spl.f # 5,< 9 mov.i > 7,> -6 jmz.a $-13,* -2 dat.x > 14,< 1 sub.i @ 8,$-12 end ;1061 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_19.red slt.ba $ -8,# -2 mov.ba *-13,#-12 jmz.a # 0,> 13 jmz.ba { -4,$ 4 spl.f # -4,>-14 mov.i > 9,> -6 jmz.i * 1,$ -5 mov.a { 5,$ 4 nop.ba <-11,{ 2 seq.a * 0,* 4 end ;1100 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_2.red slt.ba $ -8,# -2 mod.ba *-13,#-12 jmz.a # 0,> 13 jmz.ba $-10,$ 4 spl.f # -4,>-14 mov.i > 9,> -6 cmp.i * 1,$ 11 jmz.a { 5,$ 4 nop.ba <-11,{ 2 seq.a * 0,* 4 end ;1062 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_3.red cmp.a $ -8,# -7 jmz.a # -1,> 13 jmz.ba < 5,@ 4 spl.x # 6,* 15 mov.i > 9,>-14 sub.x @ 15,$ 11 jmp.ba {-13,> 2 jmz.b $ 4,< 10 mod.ab * 15,> 4 end ;1105 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_4.red sne.b $ 1,$ 9 nop.x * 8,>-11 jmz.ab # -4,> 15 spl.x # 5,{ 9 mov.i > 7,> -6 nop.ba @-13,{ 5 dat.x > 14,$ 1 mul.x *-13,# 12 mul.x > -7,* 11 mod.ba > 8,<-12 end ;1081 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_5.red sub.ab < 12,* 1 jmz.a # -1,> 13 jmz.ba < 5,< 4 spl.x # -1,$ 15 mov.i > 9,>-14 sub.ba @ -1,$ 11 jmp.ba *-13,> 2 jmz.x > 4,> -1 mod.ab < -4,$ 4 end ;1086 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_6.red slt.ba $ -8,# -2 mov.ba *-13,#-12 jmz.a # 0,> 13 jmz.ba { -4,$ 4 spl.f # -4,>-14 mov.i > 9,> -6 jmz.i * 1,$ -5 mov.a { 5,$ 4 nop.ba <-11,{ 2 seq.a * 0,* 4 end ;1064 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_7.red sne.a $ 7,# -7 seq.i $ -6,# 9 jmz.a # 9,> 13 jmz.x {-10,$ 4 spl.x # 6,* 10 mov.i > 9,>-14 mov.a { 5,$ 2 jmz.ab < 8,$ 10 mul.ab { 15,> -3 end ;1088 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_8.red spl.b $ -8,* -2 sub.a *-13,# 3 jmz.x #-10,> 13 nop.b # -8,{ -4 spl.ba # -1,$ 9 mov.i > 7,> -6 dat.i > 1,$-10 seq.a @ 4,{ 9 djn.ba $ -5,{ 12 add.f * -3,{ 9 end ;1020 ;redcode-94 ;assert CORESIZE == 8000 ;name nr_9.red cmp.a # 8,# 7 sne.ab $ 12,#-12 jmz.a # 4,> 13 nop.x {-10,$ 4 spl.ba # 6,*-14 mov.i > 9,> -6 cmp.i # -8,$ 11 slt.ab # 5,$ 14 cmp.ab <-11,{ 10 mul.ab * 0,* 15 end ;1091 From: Hillis Subject: Re: Core War-Like Alife Date: 2000/06/20 Message-ID: <395018E6.78296BAC@erols.com>#1/1 Jason Rolfe wrote: > > I am attempting to construct an artificial life environment similar > to that in Core Wars and am looking for papers describing similar > endeavors. > So far, I have located Rasmussen, et al. in Physica D 42 (1990) "The > Coreworld: Emergence and Evolution of Cooperative Structures in a > Computational Chemistry", which describes the VENUS environment. In the > paper, there is mention of a second-generation alife environment to be > entitle EARTH. Unfortunately, I have not found any other references to > EARTH. Was EARTH actually created? Have Rasmussen and his co-authors > written any other papers on the subject? I saw this reference - can't swear that it's relevent. Rassmussen, S., Knudsen, C. Feldberg, R. (1991) Dynamics of programmable matter. In C. Langdon, C. Taylor, J. D. Farmer, & Rasmussen (Eds) Artificial Life II, Santa Fe Institue studies in the sciences of complexity (Vol X, pp211-254) Redwood City, CA: Addison-Wesley > Are there any other separate but similar systems? Systems which > encapsulate and artificially breed and kill organisms will probably not > be relevant to my project. Thus, Tierra, Avida, and anything which > simply interfaces a GA to MARS are not applicable. I am specifically > interested in allowing the world to evolve on its own, rather than > externally managing the population of organisms. > Thanks for your help. > > Jason Rolfe > (jrolfe@research.bell-labs.com) These are good places to look. http://surf.de.uu.net/zooland/ http://www.santafe.edu/ Dave Hillis BTW: zooland has cross references to the KoTH site From: Martin Ankerl Subject: genetic algorithms doesnt work good. Date: 2000/06/20 Message-ID: <394FB450.1B242912@web.de>#1/1 Hello, I have now tried many redcode-evolvers, but there is always the same problem: it seems to be impossible to evolve something better than a coreclear. I think that better warriors can only evolve if the environment gives coreclears a low survival-chance. Perhaps this can be done by testing the evolved warriors against some handwritten which perform very good against such coreclears (which kind of warriors should I use for this?) Another big problem is that it takes a lot of time to start pmars every time. I think if pmars would be integrated in an evolver it would be much faster - has anyone tried this yet? Martin From: M Joonas Pihlaja Subject: Re: genetic algorithms doesnt work good. Date: 2000/06/21 Message-ID: #1/1 On Tue, 20 Jun 2000, Martin Ankerl wrote: > I think that better warriors can only evolve if the environment gives > coreclears a low survival-chance. Perhaps this can be done by testing > the evolved warriors against some handwritten which perform very good > against such coreclears (which kind of warriors should I use for > this?) You could try a few scanners -- HSA is good. Though I fear that HSA will be too steep a threshhold. Unless your evolver will start producing stones HSA will keep thrashing everything. Perhaps more suitable would be CLP or variations of it which don't brainwash. CLP is a core clear which dodges forward and backward core clears. It's pretty fragile against anything not a core clear or oneshot. > Another big problem is that it takes a lot of time to start pmars > every time. I think if pmars would be integrated in an evolver it > would be much faster - has anyone tried this yet? I don't have a clue how ga_war works (is that what you use?), but I expect it wouldn't be too hard to incorporate the relevant parts of pmars (sim.c mainly, probably some other bits too). Especially if you don't need complex assembler. If you want I can send you something that might be a little easier to incorporate (in C). Joonas From: "Ransom Smith" Subject: Yet Another Lame Tournament Idea Date: 2000/06/21 Message-ID: #1/1 This mostly stems from the fact that a lot of the recent tournament ideas have been something about GA's and evolving, and I'm not particularly interested in those topics, so ... uh... Let's do something else, because I am the World's Most Important Person. Or something like that. Okay, I've been playing around with this one in my head for some time, here goes: How about we disallow DAT? No, really. We can make illegal instructions to terminate processes with using DIV or MOD, so let's try something with DAT removed from the language altogether. Then the problem becomes "What do we initialize Core with?" Well, we could try NOP. Nobody seems to have found a use for it yet, how about we initialize datless core with it? Then leaky processes wouldn't spare you the agony and die immediately, they'd spew out across the core at 1c/process until they hit a DIV or MOD left behind by a bomber or some such. Or if we wanted to get really messy, we could initialize to NOP {1, <1. A series of leaky processes could serve as an offensive weapon! Or how about SPL #0, <0? Any leaky processes immediately become a whole flock of processes, decrements spew back on your warrior, and you promptly become rather stunned. How about DIV 0, 0? then any stray proc's would die, unless the area had been DJN'ed, which would neutralize the destructive capacity, and make the core... um... habitable. Well, there's a bunch more options, but I gotta go. Extrapolate amongst yourselves, O Less Important People... [Oh, come off it. It was a joke, alright? I love you all. Really.] From: Philip Kendall Subject: Re: pMARS Date: 2000/06/21 Message-ID: #1/1 "Ransom Smith" writes: > Anyone know what the DOS 386/+ version of pMARS was compiled with? $ strings pmars.exe [...] Turbo-C - Copyright (c) 1988 Borland Intl. [...] Ditto for pmarsv.exe. FWIW, the 286 versions claim to be "Borland C++ - Copyright 1991 Borland Intl." Phil -- / Philip Kendall \ | http://www.ast.cam.ac.uk/~pak/ | \ Spread css-auth: http://www.ast.cam.ac.uk/~pak/decss.html / From: "Ransom Smith" Subject: pMARS Date: 2000/06/21 Message-ID: #1/1 Anyone know what the DOS 386/+ version of pMARS was compiled with? My first guess would be DJGPP, but that doesn't fit at all, because not only does it not require dpmi services, I found out the other day that if I leave cwsdpmi in memory and try to switch to any graphical coreviewer, pMARS crashes. From: Hillis Subject: Re: update to ga_war.c and a few evolvers Date: 2000/06/22 Message-ID: <3952BFBA.DBC1DED4@erols.com>#1/1 jason wrote: > > > Here a some programs from a population of 20 for 100000 rounds. > ................... These are very impressive. They aren't a lot of fun to read and their Wilkies benchmark scores range from about 13 to a high of 45. But they are far and away the best example of pure evolved scanners that I've ever seen. For those who are interested in such things, I recommend that you look at them in pmars graphical display mode. Run nr_1.red against a "SPL #1, #1" to see the scanner working. Then run it against a "SPL #0, #0" which the JMZ scanner misses, and it will switch to a crude paper behavior. Dave Hillis dbhillis@erols.com From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 2000/06/28 Message-ID: Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------