Newsgroups: rec.games.corewar
Subject: Re: Question from an oldtimer
From: KENT@dirac.physics.jmu.edu (Kent Peterson)
Date: 21 Nov 92 11:17:19 -0500
Distribution: world
Organization: JMU Physics Dept.
X-News-Reader: VMS NEWS 1.24

In <136140001@hpcupt1.cup.hp.com> wang@hpcupt1.cup.hp.com writes:

> Why are people still playing CoreWars?  I stopped playing a few years ago
> when I determined Vampire type fighters have too much advantages over other
> types of fighters; one hit and the game is over.
> 
> I can describe my last CoreWars fighter as 2 parallel running vampires that
> periodically check if the twin is dead or not.  If so, the survivor will turn
> itself into multiplying rabits.  It's insurance against lucky shots.
> 
> How do the latest champions work?  If things have changed, please correct
> my theory about vampires.
> 

Things have changed all right.  Any and all of the current champions could
knock the socks off any and all of the contestants in the previous yearly
tournaments.  One of the main reasons is the use of large numbers of processes
running together, usually created by executing a SPL 0 instruction.  Of course,
this means you need to have code that can be executed by multiple processes
without damaging itself, but this isn't too hard, and the resulting toughness
is really worth it.

Intelligence, such as the self-checking program you described, isn't that
important anymore (unfortunately, IMHO).  However, there are a few tricks
available that make programs smarter than the usual bomb-bomb-bomb versions,
such as the use of CMP to scan 2 locations every 3 cycles.  Here's the classic
example of such a program:

;redcode verbose
;name Crimp 2
;author Andy Pierce
;strategy  cmp scanner with decoy
;strategy  v2:  smaller, faster core clear, original constants

ret     add offset,start
start   cmp -50,-1
        slt #11,start
count   djn ret,<6024
        mov bomb1,@start
        mov bomb2,<start
        add next,start
        jmn start,ret
bomb2   spl 0,2
next    mov @-49,<-48
bomb1   jmp -1,0
offset  dat #-98,#-98

The "redcode verbose", "name", "author", and "strategy" lines are for the
ongoing tournament King of the Hill, which is addressed in the FAQ.

Programs such as Crimp 2 ruled the hill for months last spring, before more
innovations came out and gradually pushed them off.  This program looks at
2 addresses using the CMP, checking to see if they are equal.  Chances are,
if they aren't, you've found a section of a program, so the SLT checks to
see if it's your own code.  If it's not, bomb one of the two locations,
exchange the A- and B-fields of the CMP, bomb the other location, then go
back to scanning.  The DJN mutates core, and when the mutation finally
overwrites the program, it drops into the core-clear at the end - starting
with a SPL 0 so unlucky bombs from an enemy can't kill the program.

When CMP-scanners seemed to be entrenched so firmly on the hill that they
would never be pushed off, many people said that innovation in Redcode had
come to an end.  However, just a few weeks ago, the first imp-ring appeared
on the hill, and this strategy has since been accepted as a very powerful
one - one of the few strategies that actually do well in tooth-and-nail
competitions, where "smart" programs - self-checkers and the like - generally
get smashed.  Moral: never give up on CoreWar.

Kent Peterson