Battle Code Arena

Your code is the driver

Battle Code Arena is a game of combat vehicles you program yourself. Fit the radar, the launcher and the shield. Write the code that decides every turn, every scan and every shot. Then send it into the arena and watch what it does. You don't steer. Your program does.

For iPhone, iPad and Android. Subscribers can also play in a browser at play.battlecodearena.com.

A battle in the arena, seen from above: two vehicles sweep the arena with radar, trade missiles across the obstacles, and one is destroyed.
A real battle, TEMPEST against VIGIL, fought by the game's own engine. Neither vehicle has a driver.
25pieces of equipment
9chassis
3classes to climb
31opponents to practise on
10×a second your program decides

From a blank chassis to a winning machine

Every battle comes together the same way, and every loss tells you what to fix next.

  1. The garage: a vehicle's build points and mass, and its slots for chassis, radar, launcher, shield, drive, missile warning, countermeasure and close combat.
    1

    Build

    Choose a tracked, half-track or wheeled chassis and fill its slots: radar, launcher, shield, drive and more. Every part costs build points and weighs something, and every one has a drawback.

  2. The program editor with line numbers and coloured code.
    2

    Program

    Write the program in BCAS, a small language that reads like Python. It runs ten times a second and decides where to drive, where to look and when to fire. Every error shows as you type.

  3. The arena mid-battle: a radar cone sweeps between obstacles while a missile flies.
    3

    Fight

    Up to two minutes in an arena of cover, supply crates, charging points and repair depots. Run out of missiles, energy or health and your program has to deal with it.

  4. The battle report: the result, what went wrong, and both vehicles' totals.
    4

    Improve

    The report shows the result, the totals and what went wrong, in plain words: "Ran out of missiles at 41 s, and never reloaded." Change a line and fight again.

Step through every decision

A battle is played out by your program, one update at a time, so you can watch it think.

contact = radar.contact()

if contact and state.time - contact.seen_at <= 0.2:
    radar.scan(contact.bearing)
    missiles.aim(contact.bearing)

    # Close in to one side of the contact, not straight at it.
    course = contact.bearing + 35
    throttle = 0.9

    # Near enough: go round it instead.
    if contact.range < 90:
        course = contact.bearing + 90

    # Fire only once the turret has come round to the contact.
    on_target = abs(angle_diff(contact.bearing, missiles.turret())) <= 3

    if on_target and missiles.ready():
        missiles.fire()
        debug.log("Shot requested")

From the starter program every new player begins with.

A debugger in your pocket

Pause any practice battle and open the debugger at that moment. Step forwards or backwards by update or by line, and see every value your program set, what each call gave back and the orders it gave.

Stop when a line runs, when a condition comes true (contact.range < 90) or when it fires. The arena follows every step.

The debugger: the arena paused above the program, with the line being run marked and the step buttons.

Three classes, each one an upgrade

Every vehicle starts in Bronze. Finish high enough in a season and it goes up, with more to spend, more to fit and more room for its program to think.

Bronze

Build points
100
Mass allowance
72
Operations an update
2,000
Memory fields
64

One turret, basic sensors and defences. Plenty to win with if the program is good.

Silver

Build points
140
Mass allowance
90
Operations an update
4,000
Memory fields
128

Tracking radar, guided and twin launchers, decoys, an autocannon, a ram plate and a flamethrower.

Gold

Build points
180
Mass allowance
110
Operations an update
8,000
Memory fields
256

A third generation of every piece: a phased-array radar, a heavy launcher, the Aegis shield and a rotary cannon.

Then put it up against everyone else's

Your vehicle fights on our servers while you're away. Come back to results, replays and a place in the table.

The league

Publish a vehicle and it plays a match every four hours against one near it in the table: ten battles, three points for a win and one for a draw. Seasons last four weeks; at the end, the top tenth of each class go up and the bottom tenth come down.

Events

Short competitions with a twist to the rules: no shields, half energy, scarce supply, or Silver equipment for everyone. Enter before the start, then follow the table.

Private leagues

Make a league for up to twenty friends, choose its class, its twist and how often it plays, and send the invite code. Everyone plays everyone, every round.

Challenges and sparring

Send a friend a challenge code, and they answer it with any vehicle of theirs. Or spar against any entry in your class, with nothing at stake but what you learn.

The same battle, everywhere

Battle Code Arena runs one engine on every device and on its servers. The same vehicles, programs and seed always give the same battle, on every machine, down to the last missile.

So a battle fought on our servers replays exactly on your phone, and a fix you make on an iPad behaves the same on Android. Every battle has a fingerprint to prove it.

  • iPhone
  • iPad
  • Android phones and tablets
  • Browser
  • Our servers
137561cd114a1d3d

A battle's fingerprint: STARTER against INFERNO on seed 7. Fight it on any device and you'll get the same one.

Free to build, program and fight

Everything you need to learn the game is free. The subscription is for competing, and for the tools that help you win.

Free

£0
  • A garage of three vehicles
  • The editor, the language reference and example programs
  • Practice battles against 31 opponents, with replays and reports
  • Sharing a battle as a link
  • Answering a friend's challenge, and joining their private league

Help when you need it

New to programming? Start with the tutorials, which build a vehicle's program a step at a time. Stuck on your account or subscription? The support page answers the common questions, and a person answers the rest.