From news-rocq.inria.fr!news2.fnet.fr!julienas!EU.net!howland.reston.ans.net!vixen.cso.uiuc.edu!newsrelay.iastate.edu!dunix.drake.edu!acad.drake.edu!pk6811s Fri Jul 8 16:25:42 1994 Article: 993 of rec.games.corewar Path: news-rocq.inria.fr!news2.fnet.fr!julienas!EU.net!howland.reston.ans.net!vixen.cso.uiuc.edu!newsrelay.iastate.edu!dunix.drake.edu!acad.drake.edu!pk6811s From: pk6811s@acad.drake.edu Newsgroups: rec.games.corewar Subject: Homemade Ice Cream - yum! Date: 7 Jul 94 13:47:34 CST Organization: Drake University, Des Moines, Iowa Lines: 123 Message-ID: <1994Jul7.134734.1@acad.drake.edu> NNTP-Posting-Host: acad.drake.edu Homemade Ice Cream is FAR more successful than I thought it would be. Basically it only loses to Torch, Sasami (what IS that thing anyway?) Stimpy, and SJ-4. And ties Ryooki and Azuka. The basic goal was to re-introduce paper on the Hill. Since imps came back paper was the poor relation - too lossy against scanners and spl-jmp bombers, and since all the stones seem to have spirals - unable to score massively against anybody. Of course, Ryooki and Azuka are also paper - just paper??? Earlier experiments showed that an effective means of locating scanners (at least the ones on the Hill) is a sub/jmz scan using a small step size - around 11. The same scan is also somewhat effective in locating rapid-launched spirals, large launch routines, and vampire fangs. Having found something the first thing to do is to save that instruction on the chance it is a fang or spiral, then proceed to bomb the location and some distance backward from there - on the chance it is someone's startup code. Then reset the pointer to the original found location. To attack a spiral just start dat-bombing using the found instruction as the increment. But before starting, how about subtracting it once and dat-bombing THAT location? If our found instruction was a fang this will zap the vampire's proto-fang and upset his bombing sequence. Then perform the spiral attack until dat-zero is found - using dat-zero as the bomb in case the increment happens to be zero. What happens next depends on what the opponent is. If a scanner, either he is dead or he is going to win once the paper is launched. If a vampire, we might not have zapped his fang and he's still dangerous. If a stone-imp, even if the imp is dead he might have killed our paper. At this point it makes sense to start two independent activities, just in case one of them has been killed. This 'redundancy' is an effecive way to introduce second-phase strategy, since the risk of both sets of code having been bombed are small. The antivamp routine is designed to find one fang and attack the a-pointer location, then core-clear and gate. The core-clear won't happen unless the paper is killed, but it does give some useful backup in that instance. The paper is my old 7-process version that frequently kills short 3-point spirals - which seem to be popular again. Next, space the components out so they don't all get clobbered at the same time. First try was equal spacing - which worked well. Then it occured to me that this would leave me open to disaster against an opponent using certain step sizes which could bomb all the components in a brief period. So I tried uneven spacing and gained a small overall improvement against several opponents. The antivamp uses a little different bomb - 'MOV 20,<5' - which hopefully will destroy any processes trapped in the pit. It also starts its search only 200 instructions away - thus if the paper is dead antivamp will complete the search rapidly, finding the paper, and start the core-clear. ;redcode-94 quiet ;name Homemade Ice Cream ;kill Homemade Ice Cream ;author P.Kline ;strategy bscan, spiral attack, antivamp, paper ;macro unpit mov 20,<5 ; destroy vampire's pit avb dat 0,0 spiral dat 0,0 scan sub #13,trace ; initial scan start jmz.f scan,@trace mov @trace,spiral ; save for spiral-attack trace mov p1b,-130 ; bombs away sub #8,@start djn trace,#13 jmp fintrap,1000 for 7 dat 0,0 rof gloc dat 0,0 for 9 dat 0,0 rof fintrap add #8*13,trace ; reset pointer trptr sub spiral,trace ; in case it's a fang... killimp mov avb,@trace ; spiral-attack on imps add spiral,@trptr jmn.f killimp,@trace; until dat-zero is found spl av,1000 dloc jmp p1,gate+50 for 22 dat 0,0 rof av jmz.a 0,