The 2nd International Corewar Programming Contest
This is a single round Corewar programming contest held by COREWAR.INFO.
Corewar is a programming game in which two or more battle programs (called "warriors") compete for the control of the "Memory Array Redcode Simulator" virtual computer ("MARS"). These warriors are written in an abstract assembly language called Redcode. The object of the game is to cause all processes of the opposing warrior to terminate, leaving the victorious program in sole possession of the machine.
And here are the winners of the 2ICPC
1st : inversed
2nd : Roy van Rijn
3rd : Dave Hillis
Details of the 2ICPC DynaHill can be found at:
This is the tournament of The Grand Corewar Unification
It is the first time that warriors written for several
different hills are able to meet in the same tournament
on a single hill.
Furthermore, the entries won't only compete themself but
will in addition compete against a huge set of
warriors. That are no less than all warriors ever
published which fits the rules of this tournament.
That are >3800 pool warriors, including several
unpublished warriors I wrote for test reasons.
Warriors for all hills with a coresize of 80 or 8000 can
enter the tournament, namely:
ICWS '88 Standard Hill
ICWS '94 Standard Hill
ICWS '94 NOP Hill
Limited process hill
In addition the rules of the 1st International Corewar
Programming Contest (1.ICPC) are included as well.
The entries are devided into the following categories:
94draft warriors without the pspace instructions stp and ldp
94draft warriors containing the pspace
instructions stp and ldp
LP warriors optimized for max. processes
of 8 containing the pspace instructions stp and ldp
LP warriors optimized for max. processes
of 8 without the pspace instructions stp and ldp
Warriors for the 1.ICPC rules without the pspace
instructions stp and ldp
Warriors for the 1.ICPC rules containing the
pspace instructions stp and ldp
PS: Sorry for the inconsistencies in the naming.
Everything was organic growing over the past
All following special rules will give all entry
categories almost equal chances to be on top of the
Special rules for max. process
The max. process -p setting depends on which categories
battle each other.
Here is the matrix for the -p settings:
94/PW/88 DS/DN lp/ln NW
94/PW/88 High Mid2 Mid1 High
DS/DN Mid2 Mid2 Low Mid2
lp/ln Mid1 Low Lp Mid1
NW High Mid2 Mid1 Low
High: -p randomly for every battle between 8000 and 2000
Mid2: -p randomly for every battle between 400 and 120
Mid1: -p randomly for every battle between 160 and 80
Low: -p randomly for every battle between 120 and 16
Lp: -p fixed for every battle at 8
Special rules for warrior lengths
The maximum length for the warriors is 200. That one
for Nano warriors is 5
Special rules for '88 warriors
Compared to ICWS '94 the ICWS '88 instruction set is
limited. To give them an equal chance '88 warriors will
get therefor a special bonus.
- '88 warriors will get by default additionally 5-15%
of the rounds as wins.
- '88 warriors will get additionally 5-15% more wins
than they achieved in a battle.
Special rules for Nano warriors
Nano warriors fight each other in a coresize of 80
with the above mentioned max. process settings.
If Nano warriors battle a warrrior from a different
category distinct numbers of copies of the Nano
warrior are loaded into the coresize 8000 for a
For half of the rounds 2 copies of the Nano warrior
are loaded, for the other half 6 copies are loaded.
(This gave so far the most promising results)
The Nano warrior wins if the coresize 8000 warrior is
terminated. The coresize 8000 warrior wins if all
Nano warriors in the multi-battle are terminated.
- The predefined variable CORESIZE is allowed for
all warriors to calculate constants. This might
be useful especially for Nano warriors.
- The predifined variable CURLINE is allowed for
all warriors to calculate constants.
- All other predefined variable are disallowed.
- All warriors submitted will be published at the end
of the contest.
- All entries must run properly with exmars and pmars.
- It is disallowed to use one of the pool warriors as
an entry. The md5 checksum of the compiled entries
will be compared with that one for the pool warriors.
Running the Tournament
For the tournament the hill program Corewar DynaHill
v2.12 or higher will be used.
The Corewar DynaHill uses a different (dynamic) hill
concept, which is quite similar to the ranking system
used in Japanese professional sumo sport.
Every warrior fights 15 warriors on the hill. Depending
on the result a victory or a defeat is declared. In case
of a tie a victory is declared randomly. In case of
100% ties a defeat for both warriors is declared.
This means after fighting the 15 opponents the overall
score can range between 15 victories (15 - 0) and
15 defeats (0 - 15). The higher the number of victories,
the higher the warrior climbs up the hill for the next
run. The higher the number of defeats, the further the
warrior drops down the hill. No matter what the result
is, it is most likely that on the next hill run the
warriors have to face different opponents.
To limit the distance of two warriors fighting each
other the DynaHill is divided into several hill
segments. Warriors can fight only within each hill
segment. The names of the hill segments are mostly
taken from Sumo:
1. Makuuchi -> Top of the DynaHill
4. Sandanme -> Middle of the DynaHill
7. Maezumo -> Bottom of the DynaHill
Each hill segment contains 400 warriors. The Maezumo
will contain together with the tournament entries
slightly more than 400.
All entries will enter the DynaHill at the bottom
(Maezumo) facing the weakest warriors of the hill.
As higher they climb as stronger will be the opponents
and depending on their strength they might be able to
climb up to the top of the DynaHill or will 'hit the
wall' somewhere inbetween.
How to win the tournament
All entries will enter the bottom of the fully populated
DynaHill. After every hill run the ranking of the
DynaHill will be recalculated depending on the number of
victories for every of the warriors on the DynaHill
and each of the entries will get points as following:
If N is the number of entries the highest ranked entry
will get N points. The second highest will get
N-1 points, the next N-2, and so on. That one with the
lowest rank will get 1 point. If an entry achieves a
perfect 15 - 0 victory (win all his fights) it will
get additionally 2*N points.
The DynaHill will perform 50 hill runs. The entry who
get the most points during this time is the winner of
Contest Submission Guidelines
Submit your entries to: fizmo (at) corewar (.) info
Format your submission as follows:
;redcode <- define the entry category
;name <- name of your entry
;author <- your name
;strategy <- if you like you can add some comments here
;evolver <- if you use an evolver program please state
here which one you was using
then add your program
Here's a sample entry:
;author A. K. Dewdney
;strategy Throw DAT bombs around memory,
;strategy hitting every 4th memory cell.
bomb DAT #0
dwarf ADD #4, bomb
MOV bomb, @bomb
Every author can submit up to three entries, but only the best entry counts.
Top links for Corewar Newbies
The ICWS'94 draft (extended):
Clueless newbies should begin with Scott's Quick Core War Guide for a brief overview:
A very nicely written German tutorial can be found here:
If you're just starting to program in redcode you should download MARS, the Redcode virtual machine. Recommended are CoreWin for Windows:
or pMARS for virtually everything else.
Here is a Beginner's Guide to Redcode to learn the essentials of '94 Redcode programming:
The Corewar Bibliography is an ideal starting point for further research.
Also the Corewar Lexicon provides useful information:
If you like to dissect, study or play published warriors then check out Koenigstuhl:
Further interesting website are:
If you decided not to handcode your entry but use a evolver program then have a look here:
September 18, 2011