BZRobots/API

From BZFlagWiki
Revision as of 06:40, 4 August 2009 by Bulldozer (Talk | contribs)

Jump to: navigation, search

Overview

This page describes the API for the BZRobots Programmable Computer Player Client.

Steady State The backend has something called a steady-state - this is basically when the backend is idle, and the tank likewise. Some commands will only work in this steady-state (because they will only make sense when the bot is not doing anything), and if one of these commands are sent when the bot is in active-state the backend will not reply until the backend has entered steady-state (and any commands sent after the first command are queued for handling until the blocking command has been handled). These commands are marked with "Yes" in the "Steady-state required?"-column.

Available Methods

Method Description Steady-state required?
Execute Runs a tick of the 'planned actions', and perhaps fires a shot (see SetFire). Yes
GetBattleFieldSize Gives a 'BattleFieldSize'-reply with the size of the map in "units". (the map is size x size, and coordinates run from -size/2 to size/2) No
GetDistanceRemaining Gives a 'DistanceRemaining'-reply with how much is left of the currently planned movement. Yes
GetGunHeat Gives a 'GunHeat'-reply with how many seconds are left of the gun cooldown. Yes
GetHeading Gives a 'Heading'-reply with heading of the tank. Yes
GetHeight Gives a 'Height'-reply with height of the tank. No
GetLength Gives a 'Length'-reply with height of the tank. No
GetTickDuration Gives a 'TickDuration'-reply with how many seconds makes up one tick. No
GetTickRemaining Gives a 'TickRemaining'-reply with how many seconds are left of this tick. No
GetTurnRemaining Gives a 'TurnRemaining'-reply with how much is left of the currently planned turn. Yes
GetWidth Gives a 'Width'-reply with width of the tank. No
GetX Gives a 'X'-reply with x-coordinate of the tank. (0, 0) is "lower left" corner. Yes
GetY Gives a 'Y'-reply with y-coordinate of the tank. (0, 0) is "lower left" corner. Yes
GetZ Gives a 'Z'-reply with z-coordinate of the tank. 0 is ground level. Yes
IdentifyFrontend <version> Greets the backend. (specifying protocol-version <version>, under development: 0001) No
SetAhead <distance> Sets planned movement (for next 'execute'-s) that moves 'distance' units. No
SetFire Sets a planned shot (for next 'execute') No
SetResume Overwrites and restores the bots current actions (distance and turn) from a previous call to SetStop. This will fail if there are no previous SetStop-calls. Will not restore until you 'execute'. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails) Yes
SetStop <overwrite> Stores and clears the bots current actions (distance and turn). If you've previously called SetStop and not SetResume, this will fail unless you've Set overwrite to true. Does not store & clear until you call 'execute'. (You can call SetAhead, SetTurn etc after this, and they will become the 'new' values, instead of 0.) Yes
SetSpeed <factor> Sets next actions speed, value between 0 and 1.0. (for future 'execute'-s) No
SetTickDuration <seconds> Sets the duration of a tick, in seconds. No
SetTurnLeft <degrees> Sets planned turn (for next 'execute'-s) that turns 'degrees' degrees to the left. No
SetTurnRate <factor> Sets next actions turnrate, value between 0 and 1.0. (for next 'execute'-s) No

Upcoming Methods

Message syntax Description Steady-state required?
GetConstants <explain> No
GetFlags <explain> No
GetMyTanks <explain> No
GetNumRounds To be defined (or removed?) No
GetObstacles <explain> No
GetOtherTanks <explain> No
GetRoundNum Returns the number of times the bot has died (or?). No
GetShots <explain> No
GetSpeed Returns the current velocity, as per default - or as per last SetSpeed. No
GetTeams <explain> No
GetTime RoboCode: "Returns the game time of the current round, where the time is equal to the current turn in the round." - Will most likely return number of times you've 'execute'-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds. Yes
GetBases <explain> No

See Also

BZRobots/Ideas - Ideas for a possible future release