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

BZRobots/Protocol

From BZFlagWiki
Revision as of 17:35, 27 June 2007 by Daxxar (Talk | contribs) (Protocol Description)

Jump to: navigation, search

Overview

This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the Google Summer Of Code.

Protocol Description

The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests. 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.

Frontend To Backend Messages

Message syntax Description Steady-state required? Implemented?
agent 1 Greets the backend. No Yes
bases <explain> No Yes
constants <explain> No Yes
execute <bot> Runs a tick of the 'planned actions', and perhaps fires a shot (see setFire). Yes Yes
flags <explain> No Yes
getDistanceRemaining <bot> Gives a 'distanceRemaining'-reply with how much is left of the currently planned movement. Yes Yes
getGunHeat <bot> Gives a 'getGunHeat'-reply with how many seconds are left of the gun cooldown. Yes Yes
getTickDuration <bot> Gives a 'getTickDuration'-reply with how many seconds makes up one tick. No Yes
getTickRemaining <bot> Gives a 'getTickRemaining'-reply with how many seconds are left of this tick. No Yes
getTurnRemaining <bot> Gives a 'getTurnRemaining'-reply with how much is left of the currently planned turn. Yes Yes
mytanks <explain> No Yes
obstacles <explain> No Yes
othertanks <explain> No Yes
setAhead <bot> <distance> Sets planned movement (for next 'execute'-s) that moves 'distance' units. No Yes
setFire <bot> Sets a planned shot (for next 'execute') No Yes
setResume <bot> 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) No No
setStop <bot> <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.) No No
setSpeed <bot> <factor> Sets next actions speed, value between 0 and 1.0. (for future 'execute'-s) No Yes
setTickDuration <bot> <seconds> Sets the duration of a tick, in seconds. No Yes
setTurnLeft <bot> <degrees> Sets planned turn (for next 'execute'-s) that turns 'degrees' degrees to the left. No Yes
setTurnRate <bot> <factor> Sets next actions turnrate, value between 0 and 1.0. (for next 'execute'-s) No Yes
shots <explain> No Yes
teams <explain> No Yes

See Also

BZRobots/About - Project Overview

BZRobots/Ideas - Feature suggestions / thoughts