Onto a hill
AI notice: This text is created with the support of AI systems; it is reviewed editorially and taken responsibility for before publication.
Sooner or later it stops being enough to run your warrior against two or three opponents you wrote yourself. You want to know where it stands.
That is what hills are for: public rankings on which every new warrior faces all the existing ones. They have been running since the early nineties, they are free, and all you need is an email address.
What a hill is
A hill is a server with a queue. You send a warrior, it is computed against every other warrior on the hill — usually over several hundred rounds per pairing — and that produces a score. It then appears in the ranking.
Important, and often confusing for newcomers:
The score is an average against the current field and is never frozen.
Your warrior can lose points without you doing anything — because somebody else submitted something that runs well against it, and the field therefore changed. A score is not a property of your warrior but a statement about its relationship to all the others.
Two philosophies
There are two fundamentally different designs, and it is worth knowing which one you are standing on.
The displacement hill. Fixed size, usually 20 slots. When a new warrior arrives and beats the last one, the last one drops off — permanently. The field stays small, current and hard. Only what is currently holding its own is on it. That is how the classic hill at koth.org works.
The unlimited hill. Every warrior stays, forever. Over the years the field grows into an archive where today's programs face three decades of warrior history. That is how the Koenigstuhl by Christoph Birk works, now holding over 1100 warriors.
The two measure different things. On a displacement hill what counts is whether you beat the current top. On an unlimited hill what counts is how you fare against the entire historical spectrum — including many weak entries that practically everyone beats.
How the points work
The usual formula, familiar from step 1:
Score = (wins × 3 + ties) × 100 / rounds
Three points for a win, one for a tie, none for a loss. From which follows something not obvious at first glance: a tie is worth a third of a win. A warrior that survives a lot and wins little can outscore a more aggressive one that wins more often and dies more often. Ties are not a fallback result but a strategic tool — and many top warriors are deliberately built around them.
What is realistic
A look at the Koenigstuhl field (1104 warriors, status July 2026), so you can place your own results:
| Score | |
|---|---|
| Weakest entry | 9.66 |
| Lower quartile | 115.5 |
| Median | 150.9 |
| Upper quartile | 165.7 |
| Leader | 186.85 |
And now the number that says most about Core War:
Between rank 1 and rank 3 lie 0.71 points. Between rank 1 and rank 10 lie 5.76 points.
Getting into the upper half is craft — a cleanly built warrior of one of the classic classes will do. The last five points at the top are an entirely different game, where individual constants decide ranks. Do not let that discourage you: the jump from "runs" to "midfield" is large and quick to get, the one from "good" to "rank 1" costs months.
Two standings, two abilities
Some hills publish two rankings of the same field. One weights all opponents equally; the other weights wins against strong opponents more heavily.
That is not merely a different presentation but genuinely measures something else. On the Koenigstuhl the top 10 of the two standings share only 8 of 10 entries, and across the whole field a warrior shifts by a median of 36 places. One extreme case: Silkworm sits at rank 450 in one standing and 166 in the other.
Translated: "beats the average" and "beats the elite" are different abilities. A warrior that clears out the broad midfield but loses to the top looks good in one standing and mediocre in the other. That is exactly why both lists exist.
Submitting
Submission works by email. No form, no account, no registration — the system predates the web as we know it and still works.
The warrior source goes into the body of the email, not into an attachment. Attachments are ignored. The very first line determines which hill the submission goes to:
;redcode-94nop
;name My Warrior
;author Your Name
;strategy Briefly, what it does.
;assert CORESIZE == 8000
ORG start
start MOV.I $0, $1
END
Useful additional lines:
| Line | Effect |
|---|---|
;test |
Assemble only, do not submit. Ideal for a first attempt. |
;password <word> |
Sets a password you can later use to withdraw the warrior. |
;kill <name> |
Removes one of your warriors (needs the password). |
A server this old has quirks. One of them: do not put an ;assert on the
number of rounds. Some hills pre-assemble the warrior with different settings,
and the check then fails although nothing is wrong with the warrior.
The formatting mistakes that actually kill submissions
And now the part no other guide mentions, because you only learn it by living through it. We lost our first two submissions not on the warrior but on the email format.
Send the mail as plain text. If your client sends HTML or "formatted text", it converts alignment spaces into non-breaking spaces. Those arrive at the server as unknown characters, and you get an error for every affected line:
Error in line 18: 'qfac equ 163'
Unrecognized or improper placement of token: '?'
The warrior is perfectly fine. The spaces are not.
- Thunderbird: hold Shift while clicking "Write"
- Outlook: Format Text → Plain Text
- Gmail: ⋮ menu in the compose window → Plain text mode
Keep lines short. Many clients wrap automatically at around 78 characters. If that happens in the middle of a comment line, the second half suddenly stands there without a semicolon — and is read as code:
Error in line 10: 'constants)'
Unrecognized or improper placement of token: ')'
Again, nothing is wrong with the warrior. Stay under 70 characters per line and it cannot happen. Long dashed separator lines and wide comment blocks are the typical culprits.
Test with ;test first. The server then only assembles and replies with the
result, without submitting anything. Two minutes that save a failed attempt.
And if nothing comes back at all? Then it is usually not your fault. These servers are decades old and run on goodwill; outages of hours or days happen. Some also deliberately slow down incoming connections to deter spam — they keep a sender waiting a minute before accepting anything. A mail client that gives up before then never delivers, and because that happens at the transport layer, you often do not even get an error message.
The right response is patience, not fiddling: send once and leave it. A decent mail server holds the message for several days and delivers it as soon as the other end is reachable again. Do not send the warrior ten times — and above all, do not look for a substitute address. Delivering around the stated recipient will get you onto a blocklist faster than it gets your warrior submitted.
Etiquette
The Core War scene is small, friendly and has been the same for decades. A few customs that count for more here than elsewhere:
Credit your sources. Almost every modern warrior builds on somebody. If you
have taken a scan structure from someone or developed a published idea further,
put it in the ;strategy line. That is not a concession there but basic
decency — and it costs you nothing, because everyone can see where things come
from anyway.
Do not submit by the minute. Every submission is computed against the entire field. Uploading ten variants in a row to find the best is impolite — and unnecessary, since you can measure that locally, faster and with more rounds.
Give your warrior its own name. Sounds trivial, but "Test" and "Warrior1" will then sit in a public ranking for years.
The Hall of Fame
There is one distinction you cannot apply for: the Hall of Fame at corewar.co.uk. Entry follows a purely mechanical criterion — age.
Age counts how many other people's submissions a warrior has survived on a displacement hill without being pushed off. On the '94nop hill the threshold is 100; at 1000 you enter the all-time list.
That is a remarkably good criterion, because it does not measure form on the day but durability. A warrior that reaches rank 1 narrowly and is then taken apart by the next three submissions never gets in. One that sits at rank 8 for years and outlasts everything does.
It takes time accordingly. On a quiet hill, a hundred foreign submissions can mean months to years.
What you now know
- A hill is a continuous ranking; scores are relative to the current field and change on their own.
- Displacement hills are small and hard, unlimited hills are an archive. They measure different things.
- Ties are worth a third of a win — surviving is a valid strategy.
- Reaching the midfield is craft. Between rank 1 and 3 lie 0.71 points.
- Submit by plain-text email, source in the message body, lines under 70
characters — and use
;testthe first time. - Attribution is taken for granted in this scene.
That concludes the learning path. If you want to go deeper, the reference continues: the complete instruction set, all addressing modes, and the strategy encyclopaedia with measured strengths and weaknesses for each class.
Field figures come from the Koenigstuhl field (1104 warriors, July 2026). The formatting mistakes described are first-hand experience from two failed submissions in July 2026.