Battlecode Specs and Software

The latest release is version 1.6.2 (10 months ago).



Minor bug fixes.

  • Server:
    • Fixed a bug where some IDs did not lie in the specified range.
      • Bullets are now assigned IDs greater than 32000. Robot and Tree IDs remain in the range [1, 32000].
    • Fixed a bug where units adjacent to trees as they were chopped down would sometimes throw exceptions.


Minor fix.

  • Client:
    • Fix versioning issue in client.


Post-sprint tournament updates.

  • Game and Specs:
    • Added maps from seeding tournament to client and engine.
    • Reduced soldier stride radius from 0.95 to 0.8.
    • Increased bytecode limits by 50% in all units.
    • Scouts are now killed immediately by falling debris if they occupy the same space as a robot spawned from a tree as it is chopped down.
  • Server:
    • Object.toString() (and classes which do not override the default implementation) should now behave deterministically.
    • Instantiating arrays with length zero components is no longer free.
    • You can no longer instantiate Directions with Float.NaN, Float.POSITIVE_INFINITY, or Float.NEGATIVE_INFINITY components.
  • Client:
    • Bullets and victory points are now displayed as bars in the client.


Revert to Battlecode 2003.

  • Just kidding.
  • Game and Specs:
    • Bullets can now do damage immediately if they hit something in the location they are spawned
    • Reduced soldier stride radius from 1 to .95
  • Server:
    • Removed occasional erroneous null from senseRobotAtLocation/senseTreeAtLocation
  • Client:
    • Added splash screen
    • Filter sensor radii and indicator dots/lines based on the selected robot
    • Fixed shortcuts being triggered while typing input into form fields


Post-sprint tournament updates.

  • Game and Specs:
    • Added maps from sprint tournament to client and engine.
    • Victory point cost now increases as the game progresses. Cost is 7.5 + (round)*12.5 / 3000.
    • Tank attack power increased from 4 to 5.
    • Tank bullet speed increased from 3 to 4.
    • Tank body attack increased from 2 to 4.
    • Number of available broadcast channels increased from 1k to 10k.
    • Water, Shake, and Chop now use INTERACTION_DIST_FROM_EDGE (1) instead of stride radius to determine whether the target tree is in range.
    • Added rc.getOpponentVictoryPoints method.
    • Reduced every unit's stride radius by 50%.
    • Reduced Scout HP from 20 to 10.
    • Reduced Scout damage from 1 to .5.
    • Increased Scout sensor radius from 10 to 14.
    • Added rc.getVictoryPointCost()
  • Server:
    • Changed execution order for bodies. Bullets now update immediately before the robot that fired them.
    • Added Kotlin support.
    • Fixed a NullPointerException in TreeInfo.hashCode().
  • Client:
    • Added ability to filter maps.
    • Added bullet tree count to HUD.


Improve bugs and fix improvements.

  • Game and Specs:
    • Gardener HP in bcd17 corrected to 40 to match actual game (HP has always been 40).
    • Clarify that the bottom left corner is the origin and that its coordinates are offset by up to 500, to match change from 1.1.7.
  • Server:
    • Reduce cost of various trigonometric functions by an order of magnitude (so calling Math.sin now costs 1-2 bytecode)
    • Fix the SLF4J error on server startup
    • Specify that robot sensing methods return robots in sorted order
  • Client:
    • View your matches at many speeds using the new speed slider
    • Add other robot types to the map editor
    • Moved error logs out of the way in the 'Queue' tab


Bug fixes and improvements.

  • Game and Specs:
    • Tank HP increased from 100 to 200.
    • Sensor radii redefined to be based from the robot's center point, not their outside perimeter.
    • Robots/Trees/Bullets from senseNearbyRobots/Trees/Bullets() are now returned in order of increasing distance from the specified center point.
    • (Fixed later: Gardener HP in bcd17 corrected to 40 to match actual game (HP has always been 40).)
  • Server:
    • canWater() now returns false for neutral trees.
    • Gardeners and Archons no longer heal for the first 20 turns they exist.
    • All senseNearbyBullets now takes into account the bullet sight radius, rather than the normal sight radius.
  • Client:
    • Display error output when clicking "Run Match".
    • Sprites for trees containing bullets and robots.
    • Press "N" and "M" to see sight radius and bullet sight radius.


Bug fixes and improvements

  • Game and Specs:
    • Specs: neutral tree min radius is 0.5, which is consistent with GameConstants.
    • Robots correctly execute their turns in the order they were spawned. Spawned robots do not execute code until the round after they are spawned.
    • Scouts in trees take damage before the tree if the bullet hits both at the same time.
    • Added "MagicWood" and "LineOfFire" maps.
  • Server and IDE:
    • Direction's North and South and rotation methods are consistent with the map origin moving to the bottom left.
    • Fix enums and custom classes.
    • Fix canInteractWithLocation(), canInteractWithCircle(), canSenseAllOfCircle(), canSensePartOfCircle(), GameConstants.LUMBERJACK_STRIKE_RADIUS.
    • Indicator lines and indicator dots improved / fixed.
    • You can now shake big trees from inside of them.
    • Fixed a bug where Javadocs would not appear in Eclipse.
    • Fixed NullPointerException when a robot and a bullet shared the same location.
  • Client:
    • Map origin is now at the bottom-left corner instead of the top-left corner.
    • Console bugfixes, and allow newline characters.
    • Show map location coordinates when hovering over the map.
    • Map editor improvements.
    • Fixed a bug where starting a match from the client would sometimes not cause it to play.


Bug fixes and improvements

  • Server:
    • Reaching 1000 victory points actually ends the game now.
    • New method getCooldownTurns() added to RobotController.
    • Scouts can now sense trees they are on top of without NullPointerExceptions.
    • canChop() now checks if Lumberjacks haven't attacked yet.
    • Changed how Directions work.
    • senseRobotAtLocation()/senseTreeAtLocation() now return null for empty locations.
    • Clarified, corrected, and otherwise improved javadocs.
  • Client:
    • Logs (i.e. System.out.println's) displayed in 'Console' tab.
    • Ability to step forward/backward by one step.
    • Click a robot to display bytecode use.
    • Map editor now has clear and validate.
    • Faster map and player loading.
    • Game area has better resizing.
    • Client freezing issue fixed.
    • Fixes on buggy game queue.
    • Unit counting fixed.