Some of the simpler techniques include blindly overwriting memory, searching for the opponent or spawning off new processes. These are commonly known as stone, scissors, paper after the popular playground game. Stone usually wins against scissors, scissors normally defeat paper, and paper mostly beats stone.
Here's an example of a typical Core War program:
org wipe step equ 5 first equ bomb-10 bomb:mov.i #1, -1 ptr: sub #step, #first wipe:jmz.f ptr, @ptr mov bomb, >ptr djn.f wipe, {ptr-5 endThis simple example of scissors once held a 20 point lead over it's rivals. The first instruction is never executed, it's the bomb used to overwrite opponents. The next two instructions form a loop which look through memory for an opponent, and the final two instructions actually overwrite it.
Core War is still going strong, and celebrates it's 25th anniversary in 2009. If you'd like to discover more about Core War, here are the top resources:
- The Beginner's Guide to Redcode will teach you the language of Core War
- pMARS is a portable implementation of the Core War virtual machine
- Core War Tutorials exist on virtually every aspect of the game
- Koenigstuhl is an archive of thousands of published Core War programs
- SAL organises a number of on-going king of the hill tournaments
- sfghoul and impomatic report the latest Core War news on their blogs
- #corewars is the official Core War discussion channel, hosted by irc.freenode.net
What are your experiences with Core War, have you ever had any success?