This wiki is archived and useful information is being migrated to the main bzflag.org website

BZRobots/API BZRobots vs Robocode

From BZFlagWiki
Revision as of 18:24, 15 August 2009 by Bulldozer (Talk | contribs)

Jump to: navigation, search

Overview

This page is to describe the changes that have been made to the RoboCode-compliant part of the API to accommodate how BZFlag works.

Differences between Robocode and BZRobots

Game model

  • Robocode game model assumes you have only one life; in BZFlag, you get to respawn
    • onWin/onBattleEnded are applicable to a league match only
    • onDeath simply means you die, but you will spawn shortly after
    • There is a new onSpawn/SpawnEvent in the BZRobots API

Time-based-movement

  • Robocode 'turns' are in discrete ticks; BZFlag is real-time, which has the following implications:
    • Time is in decimal seconds; instead of turn 0,1,2, you get 1.5 seconds, 1.8 seconds, 2.34 seconds, etc.
    • Because of the above, getTime() returns a double instead of a long
    • Blocking functions such as execute have a small time delay, dependent on how long you executed
    • For now, there is no limitation on how long you may execute your "turn"

Fixed Radar and Gun

  • Robocode has movable radar and gun; BZFlag does not
    • setAdjustGunForRobotTurn and similar have no effect
    • turnGunLeft/turnRadarRight/etc. have no effect
    • getGunHeading/getRadarHeading will always match the robot's getHeading
    • BZFlag's radar effectively sweeps 360 degrees each 'tick/turn'

3rd dimension

  • Robocode is 2D, but BZFlag is 3D; this means that:
    • Methods named xxxHeight are renamed to xxxLength.
    • Methods named xxxHeight will return a Z-dimension
    • Objects having a getX() and getY() now have a getZ() as well
    • For simplicity, getVelocity() still refers only to X-Y velocity

Energy

  • Robocode bots have "energy"; BZFlag does not
    • The API now has onBulletFired(BulletFiredEvent e) so you can detect a fired shot
    • getEnergy always returns 100 for live bots, and 0 for dead bots
    • A bullet's energy will always be 17 (to account for the Robocode Damage Formula)
    • Changing power in void fire(double power) and similar will have no effect

See Also