Battlecode Specs and Software

The latest release is version 1.0.0 (9 months ago).

Zombie Armageddon Tournament

View the specs for the Zombie Armageddon game mode.



  • Final release for Battlecode 2016. Release all maps from tournaments.


  • Add more resources to Zombie Armageddon sample map boxy_armageddon.xml.


  • In the case where there are multiple player-controlled robots tied for being the closest target, zombies now correctly pick a random target. This matches the description of zombie behavior in the specs. Previously, zombies broke ties by picking the first robot in its senseNearbyRobots() list.
  • Clarify in documentation that methods like senseNearbyRobots() will return the list of robots in a consistent order (equivalent to execution order of robots).
  • The release jar files no longer contain examplefuncsplayer and the fake referenceplayer. Referenceplayer will be available to challenge today.



Post-seeding changes and maps, plus important debug methods update:

  • Balance change: Turret attack range reduced from 48 to 40.
  • Gameplay change: If a turret kills a robot, the robot only leaves 1/3 the amount of rubble it normally would.
  • Fix client bug: a zombie's health bar will show percentage health remaining relative to its outbreak maximum health, not its base maximum health.
  • The directions in which zombie dens spawn their zombies will now adhere to the map symmetry, making the game more fair for both teams.
  • IMPORTANT: any method whose name starts with debug_ will no longer be executed. If you put bc.engine.debug-methods=true in your bc.conf file, then these methods will execute but cost no bytecode. During tournaments and scrimmages, the setting will always be false (debug methods will never run). See "Debug Methods" section for more details.


  • (Important) Previously, zombie dens were occasionally not spawning the correct number of zombies. Overall, the number of zombies spawned was less than what the map specified. This bug has been fixed, and the maps have been tweaked to keep the zombie spawns roughtly equivalent before and after the change.
  • TTM/Turret transformations should be displayed properly on the client.
  • Fix typos in maps barred, farm, and streets.
  • The origin of the map will always have coordinates in the range [0, 500].


Post-sprint changes and releases

  • Sprint tournament maps
    • Some of the maps in the sprint tournament had excessively powerful zombie spawns. The zombie spawns on the maps boxy.xml, factory.xml, collision.xml, farm.xml, streets.xml, barred.xml, and goodies.xml have been significantly reduced from the versions used in the sprint tournament. In particular, big zombie numbers have been slashed. Some zombie spawns on other maps have also been tweaked.
      • The sprint tournament was a low-stakes chance for us to experiment with zombie spawns. It’s very difficult to quantify these things and thus very difficult to give definite constraints, but all future maps will have what we believe are ‘reasonable’ zombie spawns. No spawn schedule will be ‘harder’ than the hardest released sprint map (for example, the released version of factory.xml). In addition, the great majority of future spawn schedules will be identical or almost identical to a schedule in an already-released map.
      • In the future, released maps will also be subject to the following conditions (these do not necessarily hold for all of the sprint tournament maps):
        • No square will start with more than 1,000,000 rubble.
        • Each zombie den will be at least 30% closer (in terms of radiusSquared) to one team’s closest archon than to the other team’s closest archon.
        • There will be no more than 4 neutral archons on the map.
        • Maps will be no larger than 80x80.
      • Please keep in mind that some maps are designed not to be ‘survivable’ to turn 3000.
  • Gameplay changes
    • Robots will now be able to sense the initial locations of all your archons or opponent archons (the locations that the opponent archons started the game in): use getInitialArchonLocations()
  • Balance changes
    • Turret attack severely decreased from 14 to 13
    • Turret part cost severely increased from 125 to 130
    • Soldier turn cost increased from 10 to 12
    • Viper range increased from 13 to 20
    • Viper cost decreased from 150 to 120
    • Bigzombie move delay increased from 3 to 4
    • Bigzombie cooldown delay increased from 1 to 2
    • Guards now block 4 damage from any attack that would deal more than 10 damage to them
    • Guard hp decreased from 150 to 145
    • Scout part cost decreased from 40 to 25
    • Scout turn cost increased from 15 to 20
    • Scout hp decreased from 100 to 80
  • Engine / Client changes
    • TTM part cost now listed as 130 to match Turret part costs. This affects the GUI display of unit cost and can also potentially affect the part tiebreaker.
    • Archons now automatically pick up parts on their initial locations.
    • Client improvements. Client now displays the total part values of the red and blue armies (the second and fourth bar). This value is computed by summing the part cost of each team's robots.


Don't accumulate available bytecode over multiple turns.


  • Client update.
  • Add method sensePartLocations() to sense nearby locations with parts.
  • Fix bugs:
    • Properly count bytecodes in static initializers.
    • rc.resign() and rc.disintegrate() now work.
    • Properly throw exception when trying to clear rubble off map.
    • Enable bc.testing system properties.
    • Bytecode correctly overflows between turns.
    • Turret transformation delay is now a game constant.


  • Match files were getting too large (think 60MB) due to the high round limit and large numbers of robots on the map. As such, we increased the part costs of all player-controlled robots to keep robot numbers down. In addition, the health of most player-controlled robots were increased.
    • Changed the formula for passive part generation. Now, both players receive a flat 2 parts per turn, minus 0.01 parts per robot owned (this does not go negative). Zombie dens reward 200 parts now instead of 300.
    • From now on, maps will have between one to four archons per map (previously stated to be three to six). All current maps are still legal.
    • Each robot can send at most 5 basic signals and 20 message signals per round, and a robot’s signal queue will not exceed 1000 signals.
    • Added methods getRobotCount, getBasicSignalCount, and getMessageSignalCount.
  • Turret attack reduced from 18 to 14.
  • Ranged zombie health increased from 40 to 60.
  • Fix bugs:
    • Java 8 lambdas and method references now work correctly.
    • Disabled classes are now properly disabled.
    • Correct malformed match files occasionally being written when more than one match was run in sequence.
    • You can use Random() properly now.



  • Fix specs to be consistent with game (stats of various units, ranged zombie infection does not deal damage)
  • Fix bug: you can now use ZombieSpawnSchedule without any problems. However, the API has changed. Backwards Incompatible
  • Fix bug: canSense, senseNearbyRobots, and senseRobot should properly not sense allied robots out of sight range
  • A few client fixes. The R hotkey should work now.
  • Zombie dens correctly spawn with 2000 HP.
  • Archons can no longer build zombies!?!
  • Added new methods for sensing your own infection status and senseHostileRobots.
  • Turrets and TTM now get 10000 bytecode per turn, and turrets correctly cannot attack units 5 square units away.
  • Improve documentation and clarify specs in a few places.


The release, for real this time.


Actual release.


Initial release.