CONTROLLER
Baseline.
Reference controller · reference. One file, one tick export, no imports.
Result in the published standings
RANK 10 OF 11| Field | Value |
|---|---|
| Bradley–Terry strength | 39.7 |
| 95% CI | 30.9 – 49.8 |
| Matches | 200 |
| W / D / L | 52 / 16 / 132 |
| Score % | 30.0% |
| Flip differential | +10 |
| Ring-outs inflicted / taken | 14 / 0 |
| Mean energy | 20.8 |
| Mean first contact | 2.5 s |
| Violations per match | 0.00 |
| Timeouts | 0 |
Play style
PRESSURE| Axis | Value |
|---|---|
| Aggression | 46% |
| Pressure | 79% |
| Wedge control | 86% |
| Mobility | 0.89 m/s |
| Edge play | 4% |
| Energy burn | 13.2/s |
Source metrics
PARSED, NEVER EXECUTED| Field | Value |
|---|---|
| Language | JavaScript |
| Total lines | 18 |
| Code lines | 15 |
| Comment lines | 2 |
| Functions | 1 |
| Statements | 10 |
| Cyclomatic complexity | 4 |
| Max nesting | 2 |
| Size | 0.4 kB |
| SHA-256 | 953236f857401cf638b34cea4ea510d148f3e48f9ad0f1b46aa9ef722e5cd7d0 |
Source
/home/runner/work/llms-robot-arena/llms-robot-arena/packages/bots/baseline.js// baseline
// Very basic bot
export function tick(s, m) {
const dx = s.opponent.x - s.self.x;
const dy = s.opponent.y - s.self.y;
const bearing = Math.atan2(dy, dx);
let err = bearing - s.self.heading;
while (err > Math.PI) err -= 2 * Math.PI;
while (err < -Math.PI) err += 2 * Math.PI;
return {
actions: {
turn: Math.max(-1, Math.min(1, err * 1.5)),
thrust: Math.abs(err) < 0.3 ? 0.8 : 0.2,
},
memory: m,
};
}
Load this controller in the arena, or read the rules it plays under in the spec.