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.
From a blank chassis to a winning machine
Every battle comes together the same way, and every loss tells you what to fix next.
-
1Build
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.
-
2Program
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.
-
3Fight
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.
-
4Improve
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.

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
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
- 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
Subscription
- The league, events, sparring and the league's trial
- Challenging friends and creating private leagues
- The debugger, "what went wrong" and version history
- A garage of 30 vehicles, and replays kept for a year
- Paint for your vehicles, and amber and white screen themes
- The browser version at play.battlecodearena.com
UK prices, including VAT. Prices elsewhere are set by the App Store or Google Play in your currency. New subscribers who are eligible get a 7-day free trial. The subscription renews automatically unless cancelled at least 24 hours before the end of the period, and can be managed or cancelled in your App Store or Google Play account. See the terms of use.
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.