Article 2118 of rec.games.corewar: Path: hellgate.utah.edu!caen!math.ohio-state.edu!cs.utexas.edu!swrinde!elroy.jpl.nasa.gov!kilroy!jlayland From: jlayland@kilroy.Jpl.Nasa.Gov (James Layland) Newsgroups: rec.games.corewar Subject: Goodbye FlyPaper 3.0 (*sniff*) Date: 18 Oct 1993 16:36:07 GMT Organization: Jet Propulsion Laboratory, Pasadena, CA USA Lines: 189 Message-ID: <29ugln$967@elroy.jpl.nasa.gov> NNTP-Posting-Host: 128.149.63.2 Summary: Obituary and redcode FlyPaper has been languishing near the bottom of the Hill for a while now, and it has only been a matter of time... Its early high-flying was due to some special modifications put in to deal with specific warriors, but they made it more vulnerable to some new warriors. And it gets demolished by QuickFreeze. The basic strategy of FlyPaper is to kill scanners first, then turn into anti-imp paper to kill/tie everything else. GammaPaper by W. Mintardjo was based on a similar principle, but used a stone to kill the scanners. My tests showed that the stone took longer than I wanted against bombers and vampires. My idea was to use a one-shot scanner as the anti-scanner part. This is a stripped-down scanner that searches core till it finds something, wipes it with DAT bombs, then jumps to the paper start-up. This has 2 potential advantages: 1) Against bombers/vamps/replicators that throw junk all over core, the scanner will exit before a full scan of core and start the paper sooner than if I had to wait for a complete bombing run; 2) Against scanners, I can still pick up >50% wins because my simpler scanner can be shorter than most scanners (9 lines including the DAT statement with scanning constants) because it lacks a coreclear. In addition, the CMP-scanner is bootstrapped away from the paper start-up, so it acts as a decoy against scanners. Unfortunately, this means it loses 100% of the time against QuickFreeze, which is guaranteed to find the paper startup and completely erase it before the CMP-scanner jumps to it. The last innovation between FlyPaper 2.0 (published a long time ago) and FlyPaper 3.0 was fine-tuning against a specific class of warriors which showed up and destroyed the first version of FlyPaper-- the CMP-scanners with decoys (Agony 5,6, Dragon Spear). The problem is that FlyPaper's scanner looks for only one thing, then turns into paper. A scanner with a large step size samples core at random, so it is very likely that the first thing it finds will be a 100-line decoy, rather than a 12-line scanner. This just turns it into a paper with a huge start-up delay. In FlyPaper 3.0, I used a very small stepsize, so I scan linearly through core. This means that my scanner will now find either the decoy or the scanner first with almost 100% probability, depending only on which is located higher in core. My tests showed that all of the decoy/scanners on the Hill at the time bootstrapped up in core, so by scanning backward, I suddenly was winning 70% against some of them. Of course, this makes my performance highly dependent on the bootstrapping strategy of my opponents, and is why I did not publish code previously. Paul Kline saw some evidence of the small step size in his _Push Off_ column which noticed a strong dependence on scan direction in tests of Lil Shears against the Hill. (The other program that showed strong dependence was Impurge, which uses a small positive scan increment.) Sorry to ramble on so long... Here is the code for FlyPaper3.0. ;redcode ;name FlyPaper 3.0 ;author J.Layland ;strategy QuickScanner->Paper, ideas from GammaPaper/Plasma/Paratroops ;strategy 2.0-- now uses Agony-based cmp-scanner, added bootstrap routine. ;strategy Imp killing replicator copied from Gamma Paper ;strategy 3.0-- New (better???) scanner, changed constants/spacing ;strategy sidestep decoys?? skip equ 70 dist2 equ -20 init EQU incr-dist-1 ; last+skip-1 ;incr-dist-100 ;last+skip-1 dist EQU 10 boot mov