Skip to content

Commit 4351bec

Browse files
committed
Add robocode elo
1 parent 023a73b commit 4351bec

1 file changed

Lines changed: 192 additions & 0 deletions

File tree

pages/arenas/robocode.md

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ date-added: 2025-11-04T16:58:27.268231Z
77
players: 2+
88
language: Java
99
split: test
10+
ladder: true
1011

1112
**What is RoboCode?**
1213
RoboCode (Tank Royale) is a programming game where your code is the tank. You write Java programs that control tanks in a deterministic, turn-based arena, making real-time decisions about movement, aiming, and firing.
@@ -20,6 +21,197 @@ Outlast all other tanks in the arena. Destroy opponents with well-aimed shots wh
2021
**What makes it challenging?**
2122
Success requires balancing movement, targeting, and radar control. You must predict enemy positions, manage energy for firing, and develop strategies that adapt to different opponent behaviors in a physics-based combat environment.
2223

24+
<h2 id="cc-ladder">🪜 CC:Ladder</h2>
25+
26+
> See [Introducing CC:Ladder](/insights/20260115_human_ai_ladder/) for the full format and motivation.
27+
28+
The ladder is built from **115 open-source human robots**, imported from ~30 public classic-Robocode repositories and hosted as `human/*` branches on [CodeClash-ai/RoboCode](https://github.com/CodeClash-ai/RoboCode/branches). To rank them, we run a round-robin over all `115 * 114 / 2 = 6,555` unique pairs at 100 simulations each, then fit a Bradley-Terry model to the pairwise win matrix via maximum likelihood with L2 regularization (strength 0.01, base Elo 1200, slope 400). RoboCode battles are decisive &mdash; the median winner takes ~89% of the score share and only ~7% of pairs finish within 55/45 &mdash; so 100 sims settle each matchup as reliably as far larger counts.
29+
30+
<div class="ladder-stats"><div class="ladder-stat"><span class="ladder-stat-num">115</span><span class="ladder-stat-label">human bots</span></div><div class="ladder-stat"><span class="ladder-stat-num">-257&#8211;2,757</span><span class="ladder-stat-label">Elo range</span></div><div class="ladder-stat"><span class="ladder-stat-num">1,252</span><span class="ladder-stat-label">median Elo</span></div><div class="ladder-stat"><span class="ladder-stat-num">3,014</span><span class="ladder-stat-label">spread</span></div></div>
31+
32+
The 115 bots span **-257&ndash;2,757 Elo** &mdash; a 3,014-point spread &mdash; in a broad, roughly bell-shaped field with no runaway leader. Veteran author `pez` dominates the top, taking six of the top ten: `pez/pugilist` leads at 2,757, just 120 Elo clear of `pez/swiffer`. Half the field sits between 708 and 1,723, while the reference sample tanks shipped with Robocode (`robo_code/*`) scatter across the lower half &mdash; from `walls` near the median down to `sittingduck` at the floor &mdash; before a thin tail trails to -257.
33+
34+
<figure class="ladder-figure">
35+
<svg viewBox="0 0 680 250" role="img" aria-label="Histogram of robots Elo ratings" preserveAspectRatio="xMidYMid meet">
36+
<line class="grid" x1="46" y1="210.0" x2="664" y2="210.0"/>
37+
<text class="tick" x="38" y="214.0" text-anchor="end">0</text>
38+
<line class="grid" x1="46" y1="146.0" x2="664" y2="146.0"/>
39+
<text class="tick" x="38" y="150.0" text-anchor="end">5</text>
40+
<line class="grid" x1="46" y1="82.0" x2="664" y2="82.0"/>
41+
<text class="tick" x="38" y="86.0" text-anchor="end">10</text>
42+
<line class="grid" x1="46" y1="18.0" x2="664" y2="18.0"/>
43+
<text class="tick" x="38" y="22.0" text-anchor="end">15</text>
44+
<path class="bar" d="M47.5,210.0 L47.5,175.6 Q47.5,171.6 51.5,171.6 L79.1,171.6 Q83.1,171.6 83.1,175.6 L83.1,210.0 Z"><title>-257 to -69 Elo: 3 bots</title></path>
45+
<path class="bar" d="M86.1,210.0 L86.1,162.8 Q86.1,158.8 90.1,158.8 L117.8,158.8 Q121.8,158.8 121.8,162.8 L121.8,210.0 Z"><title>-69 to 120 Elo: 4 bots</title></path>
46+
<path class="bar" d="M124.8,210.0 L124.8,137.2 Q124.8,133.2 128.8,133.2 L156.4,133.2 Q160.4,133.2 160.4,137.2 L160.4,210.0 Z"><title>120 to 308 Elo: 6 bots</title></path>
47+
<path class="bar" d="M163.4,210.0 L163.4,111.6 Q163.4,107.6 167.4,107.6 L195.0,107.6 Q199.0,107.6 199.0,111.6 L199.0,210.0 Z"><title>308 to 496 Elo: 8 bots</title></path>
48+
<path class="bar" d="M202.0,210.0 L202.0,137.2 Q202.0,133.2 206.0,133.2 L233.6,133.2 Q237.6,133.2 237.6,137.2 L237.6,210.0 Z"><title>496 to 685 Elo: 6 bots</title></path>
49+
<path class="bar" d="M240.6,210.0 L240.6,60.4 Q240.6,56.4 244.6,56.4 L272.2,56.4 Q276.2,56.4 276.2,60.4 L276.2,210.0 Z"><title>685 to 873 Elo: 12 bots</title></path>
50+
<path class="bar" d="M279.2,210.0 L279.2,98.8 Q279.2,94.8 283.2,94.8 L310.9,94.8 Q314.9,94.8 314.9,98.8 L314.9,210.0 Z"><title>873 to 1,062 Elo: 9 bots</title></path>
51+
<path class="bar" d="M317.9,210.0 L317.9,124.4 Q317.9,120.4 321.9,120.4 L349.5,120.4 Q353.5,120.4 353.5,124.4 L353.5,210.0 Z"><title>1,062 to 1,250 Elo: 7 bots</title></path>
52+
<path class="bar" d="M356.5,210.0 L356.5,34.8 Q356.5,30.8 360.5,30.8 L388.1,30.8 Q392.1,30.8 392.1,34.8 L392.1,210.0 Z"><title>1,250 to 1,438 Elo: 14 bots</title></path>
53+
<path class="bar" d="M395.1,210.0 L395.1,86.0 Q395.1,82.0 399.1,82.0 L426.8,82.0 Q430.8,82.0 430.8,86.0 L430.8,210.0 Z"><title>1,438 to 1,627 Elo: 10 bots</title></path>
54+
<path class="bar" d="M433.8,210.0 L433.8,22.0 Q433.8,18.0 437.8,18.0 L465.4,18.0 Q469.4,18.0 469.4,22.0 L469.4,210.0 Z"><title>1,627 to 1,815 Elo: 15 bots</title></path>
55+
<path class="bar" d="M472.4,210.0 L472.4,98.8 Q472.4,94.8 476.4,94.8 L504.0,94.8 Q508.0,94.8 508.0,98.8 L508.0,210.0 Z"><title>1,815 to 2,004 Elo: 9 bots</title></path>
56+
<path class="bar" d="M511.0,210.0 L511.0,162.8 Q511.0,158.8 515.0,158.8 L542.6,158.8 Q546.6,158.8 546.6,162.8 L546.6,210.0 Z"><title>2,004 to 2,192 Elo: 4 bots</title></path>
57+
<path class="bar" d="M549.6,210.0 L549.6,162.8 Q549.6,158.8 553.6,158.8 L581.2,158.8 Q585.2,158.8 585.2,162.8 L585.2,210.0 Z"><title>2,192 to 2,380 Elo: 4 bots</title></path>
58+
<path class="bar" d="M588.2,210.0 L588.2,188.4 Q588.2,184.4 592.2,184.4 L619.9,184.4 Q623.9,184.4 623.9,188.4 L623.9,210.0 Z"><title>2,380 to 2,569 Elo: 2 bots</title></path>
59+
<path class="bar" d="M626.9,210.0 L626.9,188.4 Q626.9,184.4 630.9,184.4 L658.5,184.4 Q662.5,184.4 662.5,188.4 L662.5,210.0 Z"><title>2,569 to 2,757 Elo: 2 bots</title></path>
60+
<line class="axis" x1="46" y1="210" x2="664" y2="210" stroke-width="1.5"/>
61+
<text class="tick" x="46.0" y="228.0" text-anchor="middle">-257</text>
62+
<text class="tick" x="200.5" y="228.0" text-anchor="middle">496</text>
63+
<text class="tick" x="355.0" y="228.0" text-anchor="middle">1,250</text>
64+
<text class="tick" x="509.5" y="228.0" text-anchor="middle">2,004</text>
65+
<text class="tick" x="664.0" y="228.0" text-anchor="middle">2,757</text>
66+
<line class="median" x1="355.4" y1="18" x2="355.4" y2="210"/>
67+
<text class="median-label" x="361.4" y="28.0" text-anchor="start">median 1,252</text>
68+
<text class="tick" x="355.0" y="246" text-anchor="middle">Elo rating &#8594;</text>
69+
</svg>
70+
<figcaption>Distribution of Elo across the 115 human RoboCode bots. The field is broad and roughly bell-shaped, with pez's tanks clustered at the right edge.</figcaption>
71+
</figure>
72+
73+
The top ten:
74+
75+
1. human/pez/pugilist: **2,757**
76+
2. human/pez/swiffer: **2,637**
77+
3. human/admiralrasmussen/drussgt: **2,551**
78+
4. human/ur4n0_235/ur4no: **2,416**
79+
5. human/winstliu/bobthebuilder: **2,312**
80+
6. human/pez/aristocles: **2,312**
81+
7. human/pez/chironex_mini: **2,268**
82+
8. human/pez/paolo: **2,268**
83+
9. human/namnguyenthanhwork/cham: **2,188**
84+
10. human/pez/vertileach: **2,187**
85+
86+
<details>
87+
<summary>Show full RoboCode rankings</summary>
88+
89+
<ol>
90+
<li>human/pez/pugilist: <b>2,757</b></li>
91+
<li>human/pez/swiffer: <b>2,637</b></li>
92+
<li>human/admiralrasmussen/drussgt: <b>2,551</b></li>
93+
<li>human/ur4n0_235/ur4no: <b>2,416</b></li>
94+
<li>human/winstliu/bobthebuilder: <b>2,312</b></li>
95+
<li>human/pez/aristocles: <b>2,312</b></li>
96+
<li>human/pez/chironex_mini: <b>2,268</b></li>
97+
<li>human/pez/paolo: <b>2,268</b></li>
98+
<li>human/namnguyenthanhwork/cham: <b>2,188</b></li>
99+
<li>human/pez/vertileach: <b>2,187</b></li>
100+
<li>human/pez/chironex_micro: <b>2,031</b></li>
101+
<li>human/pez/mako: <b>2,030</b></li>
102+
<li>human/pez/frankie: <b>2,003</b></li>
103+
<li>human/pez/blackwidow_mini: <b>2,003</b></li>
104+
<li>human/pez/tityus: <b>1,977</b></li>
105+
<li>human/pez/gouldingi: <b>1,929</b></li>
106+
<li>human/jonharder/starterbot: <b>1,929</b></li>
107+
<li>human/zhiwei121/hero_pm: <b>1,881</b></li>
108+
<li>human/mgalushka/supermercutio: <b>1,862</b></li>
109+
<li>human/mgalushka/superramfire: <b>1,841</b></li>
110+
<li>human/pez/vertimicro: <b>1,820</b></li>
111+
<li>human/pranav_prakash/thecarver: <b>1,800</b></li>
112+
<li>human/pez/blackwidow: <b>1,780</b></li>
113+
<li>human/pez/hypoleach: <b>1,761</b></li>
114+
<li>human/admiralrasmussen/hawkonfire: <b>1,761</b></li>
115+
<li>human/pez/littlebrother: <b>1,742</b></li>
116+
<li>human/pez/marshmallow: <b>1,739</b></li>
117+
<li>human/joaocarpim/wrecker: <b>1,723</b></li>
118+
<li>human/g_otn/reimu: <b>1,723</b></li>
119+
<li>human/pez/leach: <b>1,723</b></li>
120+
<li>human/vftheodoro/barbiescript: <b>1,705</b></li>
121+
<li>human/mgalushka/supertracker: <b>1,686</b></li>
122+
<li>human/mgalushka/supercrazy: <b>1,668</b></li>
123+
<li>human/pseminatore/dodgebot_jnk: <b>1,651</b></li>
124+
<li>human/mgalushka/supercorners: <b>1,651</b></li>
125+
<li>human/u_0x65_e/kokomo: <b>1,633</b></li>
126+
<li>human/mgalushka/superspinbot: <b>1,563</b></li>
127+
<li>human/muzardo/trianglehunter: <b>1,529</b></li>
128+
<li>human/pez/icarus: <b>1,514</b></li>
129+
<li>human/pez/littleevilbrother: <b>1,512</b></li>
130+
<li>human/john_paul_r/vergere: <b>1,512</b></li>
131+
<li>human/johan_adriaans/berendbotje: <b>1,495</b></li>
132+
<li>human/mcd8604/hunter: <b>1,478</b></li>
133+
<li>human/pmontp19/propiavancat: <b>1,461</b></li>
134+
<li>human/mgalushka/superwalls: <b>1,444</b></li>
135+
<li>human/denssle/megaborsten: <b>1,444</b></li>
136+
<li>human/lucasgch/bt7274: <b>1,429</b></li>
137+
<li>human/pez/haikupoet: <b>1,427</b></li>
138+
<li>human/alexjamesmacpherson/wilde: <b>1,427</b></li>
139+
<li>human/pez/wallspoethaiku: <b>1,392</b></li>
140+
<li>human/pez/poet: <b>1,392</b></li>
141+
<li>human/logancsc/dodgebot2: <b>1,375</b></li>
142+
<li>human/miradoconsulting/roleksii: <b>1,358</b></li>
143+
<li>human/gjgomez/mb2: <b>1,358</b></li>
144+
<li>human/pez/smallpoet: <b>1,340</b></li>
145+
<li>human/pez/haikuwalls: <b>1,323</b></li>
146+
<li>human/sacdalance/robrrrat: <b>1,270</b></li>
147+
<li>human/txeverson/crawler: <b>1,252</b></li>
148+
<li>human/pez/leachpmc: <b>1,252</b></li>
149+
<li>human/pez/wallspoetas: <b>1,252</b></li>
150+
<li>human/robo_code/walls: <b>1,215</b></li>
151+
<li>human/mgalushka/maximbot: <b>1,215</b></li>
152+
<li>human/kcanida/pikachu: <b>1,178</b></li>
153+
<li>human/josephjeon/gntest: <b>1,178</b></li>
154+
<li>human/pez/wallspoet: <b>1,140</b></li>
155+
<li>human/alexbay218/shreker: <b>1,121</b></li>
156+
<li>human/vikdov/dominatorx: <b>1,121</b></li>
157+
<li>human/tannerrogalsky/tannerbot1: <b>1,022</b></li>
158+
<li>human/admiralrasmussen/wavesurfing: <b>1,002</b></li>
159+
<li>human/it_economics/ite_m9: <b>982</b></li>
160+
<li>human/joaomcarvalho/jeujdapeu: <b>962</b></li>
161+
<li>human/robo_code/trackfire: <b>952</b></li>
162+
<li>human/dankraemer/juggernaut: <b>941</b></li>
163+
<li>human/zcjerry229/markrobo: <b>900</b></li>
164+
<li>human/gabriel_lw/quadwall: <b>880</b></li>
165+
<li>human/iagomonteiro13579/npcsniper: <b>880</b></li>
166+
<li>human/robo_code/spinbot: <b>867</b></li>
167+
<li>human/looklazy/chilibot: <b>859</b></li>
168+
<li>human/avsthiago/sadbot: <b>859</b></li>
169+
<li>human/robo_code/velocirobot: <b>776</b></li>
170+
<li>human/luke_f_w/nagisphere: <b>776</b></li>
171+
<li>human/robo_code/tracker: <b>733</b></li>
172+
<li>human/andrekorol/exterminador: <b>712</b></li>
173+
<li>human/kylebennett/hugbot: <b>712</b></li>
174+
<li>human/rafaeljdesa/ultron: <b>712</b></li>
175+
<li>human/robo_code/ramfire: <b>712</b></li>
176+
<li>human/kylebennett/gruffalo: <b>704</b></li>
177+
<li>human/robo_code/myfirstrobot: <b>690</b></li>
178+
<li>human/it_economics/ite_florian2: <b>624</b></li>
179+
<li>human/robo_code/corners: <b>610</b></li>
180+
<li>human/team488/meow: <b>555</b></li>
181+
<li>human/it_economics/ite_cliffbot2: <b>555</b></li>
182+
<li>human/alpian/tarektank: <b>555</b></li>
183+
<li>human/andrekorol/myfirstkiller: <b>534</b></li>
184+
<li>human/alpian/ianstank: <b>483</b></li>
185+
<li>human/philipmjohnson/dacruzer: <b>483</b></li>
186+
<li>human/robo_code/fire: <b>458</b></li>
187+
<li>human/andrekorol/oppswantmedead: <b>432</b></li>
188+
<li>human/robo_code/regullarmonk: <b>432</b></li>
189+
<li>human/tibola/markiv: <b>378</b></li>
190+
<li>human/it_economics/ite_terminator: <b>378</b></li>
191+
<li>human/it_economics/ite_simple: <b>378</b></li>
192+
<li>human/it_economics/ite_ctbot: <b>291</b></li>
193+
<li>human/it_economics/ite_claptrap: <b>228</b></li>
194+
<li>human/robo_code/crazy: <b>194</b></li>
195+
<li>human/pez/droidpoet: <b>159</b></li>
196+
<li>human/barriosnahuel/tirolio: <b>121</b></li>
197+
<li>human/kinnla/antiwalls: <b>121</b></li>
198+
<li>human/linuxuser0/genetic: <b>40</b></li>
199+
<li>human/pez/gf1: <b>40</b></li>
200+
<li>human/trex22/deepthought: <b>40</b></li>
201+
<li>human/it_economics/ite_bomax: <b>-6</b></li>
202+
<li>human/robo_code/sittingduck: <b>-113</b></li>
203+
<li>human/wouterjoosse/infinitylock: <b>-257</b></li>
204+
<li>human/technischeinformatica/tearsofsteel: <b>-257</b></li>
205+
</ol>
206+
207+
</details>
208+
209+
**Run it yourself.** [Set up CodeClash](https://docs.codeclash.ai/quickstart/#installation) and send a model up the ladder with:
210+
211+
<pre class="prettyprint lang-bash">
212+
uv run codeclash ladder run configs/ablations/ladder/robocode.yaml
213+
</pre>
214+
23215
---
24216

25217
### References

0 commit comments

Comments
 (0)