<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daxxar</id>
	<title>BZFlagWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daxxar"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/Daxxar"/>
	<updated>2026-04-28T18:56:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code&amp;diff=2730</id>
		<title>Google Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code&amp;diff=2730"/>
		<updated>2007-07-12T16:20:46Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: Changed the DEVINFO link around, points to SVN now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag is participating in the 2007 [http://code.google.com/soc/ Google Summer of Code].  Under this program, Google allocates and funds students to write code for BZFlag during the northern hemisphere summer timeframe on specific projects.  Those projects are proposed by students and sometimes following the suggested &amp;quot;proposal areas&amp;quot; section shown below or are ideas entirely of the student&#039;s own design.  Student proposals are reviewed and evaluated by participating mentors.  Google allocates a certain number of slots out of a total of 800 amongst approximately 135 participating mentoring organizations which then determines how many students may be approved by a given group such as BZFlag.&lt;br /&gt;
&lt;br /&gt;
Adhering to specified [[Google Summer of Code Acceptance|development requirements]], selected students then work on their projects through the summer.  If the student successfully completes what they proposed, they are ultimately paid $4500 for their work.  In all, the program is a decent deal for the students, great publicity and marketing for Google, and a great opportunity for BZFlag development initiatives.&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There was no specific format to applications, but they were told that they should be detailed in their approach and background information about themselves.  They were supposed to state specifically what they intend to deliver and any implementation details they felt relevant such as what language they intend to use.  C/C++ proposals were preferred though others were considered.  Students that just submitted the summaries contained below did not do very well.  If you talked with us on IRC about your SoC proposal, you were supposed to include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission were encouraged as it gave us more time to review your proposal in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline wasn&#039;t a negative consideration as all submissions were be predominantly judged on their merit, but submitting and discussing early was an advantage for submissions that were similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students were asked to propose what they actually want to work on, how they intend to work on it, what they intend to DO, what they know about that task, some details about themselves, etc.  Their ability to perform the task is outright presumed, so they are supposed to propose a task that they are comfortable and knowledgeable with performing.&lt;br /&gt;
&lt;br /&gt;
= Program Evaluation =&lt;br /&gt;
&lt;br /&gt;
We received a total of 45 proposals for the 2007 program that were then reviewed, evaluated, and critiqued.  Of those applications, only &#039;&#039;&#039;four&#039;&#039;&#039; could be selected to work on BZFlag.  There were about 20 really good proposals overall, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough..&#039;&#039;  It was really hard to narrow down the submissions but in the end we did have only so many slots to work with and the line eventually had to be drawn.  Every application was read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submitted a proposal and hope to still see some of you become involved in our software development.&lt;br /&gt;
&lt;br /&gt;
In the end, submissions were selected according to the overall long-term impact that accepting the proposal could make for the game, perception of the submitter&#039;s abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to BZFlag.  Particular notice was made of students that were responsive to questions and readily interactive in the IRC channel.  Communication is a good thing.&lt;br /&gt;
&lt;br /&gt;
While there&#039;s never any guarantee that work on any code will be integrated, this is very much the desire and &#039;&#039;&#039;intention&#039;&#039;&#039; of our participation in the Summer of Code.  Students are expected to interact on the [http://my.bzflag.org/irc/ #bzflag IRC channel] on the Freenode network, abide by the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] rules, agree to the [[Google Summer of Code Acceptance|development requirements]], and focus on providing a clean maintainable implementation.&lt;br /&gt;
&lt;br /&gt;
The projects that were accepted are as follows:&lt;br /&gt;
&lt;br /&gt;
== Graphical BZFlag Map Editor ==&lt;br /&gt;
=== Jude Nelson (jude-) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag does not yet have a sufficient graphical world map editor.  That is to say that while there have been many over the years, they all fall into obsolescence or are less than ideal due to other constraints upon their use).  While some existing editors come very close, it is usually the case that they do not fully support advanced map features, require the users to have a programmer&#039;s understanding of the file format, are not well documented, are very platform-specific, or are outright obsolete.  This is problematic to the BZFlag community in that it hinders less technically-inclined users from developing worlds.  To support this need, the proposed work aims to implement such an editor that should allow users to quickly create worlds in a visual manner, provide a GUI to easily manipulate all features of BZW, provide intuitive and interactive visualizations of all map data, and allow for easy extendibility to ensure future BZW compatibility. Additionally, to encompass a larger user base, it will be developed using cross-platform toolkits, allowing it to be easily ported between operating systems and ideally support the same target operating systems as BZFlag itself.&lt;br /&gt;
&lt;br /&gt;
== Random Procedural World Generator ==&lt;br /&gt;
=== Kornel Kisielewicz (Epyon) ===&lt;br /&gt;
&lt;br /&gt;
Although BZFlag implements a poor man&#039;s random map generator as default, most players prefer to play on user made maps. The reason is simple -- the primitive scattering algorithm implemented in BZF&#039;s random map generation is, well, simple and limited.  Creating a nice looking and fun-to-play map by hand, however, is a non-trivial task too. In order to really enjoy playing BZFlag, you need to search for good levels in the community, and even those can get boring after a while because you learn their layout or their popularity diminishes.  Moreover, players who know the map well have an unfair advantage when playing against people who see the map for the first time.  Moreover still, if you want to set up your own server, the task of creating your own map by hand can be rather complicated and involved.&lt;br /&gt;
&lt;br /&gt;
== Community Messaging System ==&lt;br /&gt;
=== Chris Wible (L4m3r) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has efficient in-game chat among players on a server. However, it&#039;s currently difficult to reach a player from outside the game, or to communicate without actually joining a server.  By implementing a more sophisticated community messaging system, players will be able to contact one another across servers and outside of gameplay, all from within the game client.  This will allow players to get together in a common place to schedule matches as well as provide a general &#039;&#039;global chat&#039;&#039; mechanism for the game.&lt;br /&gt;
&lt;br /&gt;
== Programmable Computer Player Client ==&lt;br /&gt;
=== Jørgen Pedersen Tjernø (daxxar) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has a hard-coded computer player that players can join with or enable in the game client, but the behavior and capabilities of that bot player are rather limited, unchanging, and easily predicted.  This efforts creates an interface for making better BZFlag computer players by building upon the existing &#039;&#039;&#039;exceptional&#039;&#039;&#039; efforts of the [http://bzrc.cs.byu.edu/ BZRC] project (developed and contributed by Andrew McNabb and others at BYU).  This effort aims to provide a fully programmable/scriptable standard interface for controlling a tank through a framework that can be readily distributed and shared.  This interface supports basic artificial intelligence (AI) research and AI education as well.&lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below were the specific areas that we were predominantly interested in seeing worked on as part of the GSoC.  Please note that students were also welcome to apply with their own original ideas.  They should have run those ideas by one of the developers beforehand, as there are some ideas which will not be accepted regardless of the quality of the application and applicant, due to desire to preserve the scope and focus of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas marked with an &amp;quot;*&amp;quot; indicate entries where we received at least two or more submissions for that idea.&lt;br /&gt;
&lt;br /&gt;
== Dead Reckoning and other Networking Enhancements ==&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Graphics Engine Integration * ==&lt;br /&gt;
One of the long-standing desires for BZFlag is to improve the graphics capabilities in the game by integrating with an existing rendering engine.  This task would be to integrate BZFlag with a graphics engine like [http://ogre3d.org/ OGRE], [http://www.crystalspace3d.org/ Crystal Space], [http://www.openscenegraph.com/ OpenSceneGraph], or [http://irrlicht.sourceforge.net/ Irrlicht].&lt;br /&gt;
&lt;br /&gt;
== Headless Artificial Intelligence Agent * ==&lt;br /&gt;
This task involves creating a clean stand-alone version of the game client that is headless (i.e. requires no GUI to run), programmable, and scriptable.  Ideally, a programming interface that is compatible with an existing framework such as the [http://robocode.sourceforge.net/ Robocode] [http://www-128.ibm.com/developerworks/java/library/j-robocode/ API] should be made available for controlling AI tank players so that collaboration with other AI efforts can be leveraged.  A scripting interface (perhaps using [http://www.swig.org/ SWIG]) should be provided on top of that API to allow dynamic control of the AI agents from a scripting language like Python, Ruby, Lua, Tcl, or Perl.&lt;br /&gt;
&lt;br /&gt;
== Global authentication daemon ==&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
== Enhanced server listing ==&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that it fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
== World file layout and editing application * ==&lt;br /&gt;
This task should produce an application for the creation/modification/arrangement of [[BZW]] map files and objects in a visual manner. The application should be designed in a cross platform compatible manner (ether some existing cross platform framework, or a built in platform system). The application should be able to manage all the existing structures in a [[BZW]] world file.  Ideally, the application should also be able to import 3d meshes from other design applications.  It would not be required to be able to dynamically edit meshes in the application.&lt;br /&gt;
&lt;br /&gt;
== Two-player tanks * ==&lt;br /&gt;
Make modifications to the game such that it is optionally possible (e.g. via a server configuration) to allow multiplayer tanks where one player can only drive and the other can control the turret.  The implementation would have to be some simple/intuitive interface to join and depart tanks as well as implemented in a fashion that preserves the &amp;quot;spirit&amp;quot; of BZFlag&#039;s operational simplicity.&lt;br /&gt;
&lt;br /&gt;
== Enhanced cross-platform multiple display support ==&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support.  An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console).  BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration.  There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
== In-game profile management ==&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences.  This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game.  Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that).  The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
== Integrated BZFS web interface ==&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running.  Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner.  Please go into detail on how exactly you&#039;d go about doing this.&lt;br /&gt;
&lt;br /&gt;
== Network Testing and Simulation Environment ==&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.&lt;br /&gt;
&lt;br /&gt;
== Cross server communications system * ==&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;INSERT YOUR IDEA HERE&amp;gt; ==&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
[[Image:BZGSoC2007 small.gif]]&lt;br /&gt;
&lt;br /&gt;
Feel free to use the below flyer to help spread the word about our involvement with the Google Summer of Code.  We&#039;d love to hear about where all our flyer has been posted at through our [http://my.bzflag.org/irc/ IRC channel].  Flyers have been translated to other languages that we have mentors for, though please submit your application in English.  While many developers can converse (fluently) in other languages, we do ask that developer discussions be held in English where possible.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2007.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2007_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2007_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_es.png PNG])&lt;br /&gt;
&amp;lt;!-- * Italiano | Italian ([http://my.bzflag.org/gsoc/BZGSoC2007_it.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_it.png PNG])--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentors and Credits =&lt;br /&gt;
&lt;br /&gt;
Thanks to the following BZFlag developers for their participation as mentors:&lt;br /&gt;
&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
**  interested in AI and authentication list server services&lt;br /&gt;
* Jeffrey Myers (aka JeffM2501)&lt;br /&gt;
** interested in game editor&lt;br /&gt;
* Daniel Remenak (aka DTRemenak aka Erroneous)&lt;br /&gt;
* Mark Thomas (aka menotume)&lt;br /&gt;
* David Trowbridge (aka purple_cow)&lt;br /&gt;
* Alfredo Tupone (aka c3po)&lt;br /&gt;
** interested in Crystal Space integration&lt;br /&gt;
* David Wollner&lt;br /&gt;
* Andrew McNabb&lt;br /&gt;
* Tim Riker&lt;br /&gt;
* Donna Crawford&lt;br /&gt;
&lt;br /&gt;
Additionally, special thanks to others in #bzflag that have provided support and feedback including:&lt;br /&gt;
&lt;br /&gt;
* a_meteorite and DTRemenak&lt;br /&gt;
** for proofreading and copy editing the GSoC submission&lt;br /&gt;
* JeffM2501 and DTRemenak&lt;br /&gt;
** for proof editing the promotional flyer&lt;br /&gt;
* Saturos&lt;br /&gt;
** for translating the promotional flyer to German&lt;br /&gt;
* quantumdot and Manu&lt;br /&gt;
** for translating the promotional flyer to Spanish&lt;br /&gt;
* others...&lt;br /&gt;
&lt;br /&gt;
Thanks for your interest and we look forward to seeing students apply!&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2707</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2707"/>
		<updated>2007-07-10T15:19:09Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldSize&lt;br /&gt;
|Gives a &#039;BattleFieldSize&#039;-reply with the size of the map in &amp;quot;units&amp;quot;. (the map is size x size, and coordinates run from -size/2 to size/2)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining&lt;br /&gt;
|Gives a &#039;DistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat&lt;br /&gt;
|Gives a &#039;GunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading&lt;br /&gt;
|Gives a &#039;Heading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight&lt;br /&gt;
|Gives a &#039;Height&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetLength&lt;br /&gt;
|Gives a &#039;Length&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration&lt;br /&gt;
|Gives a &#039;TickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining&lt;br /&gt;
|Gives a &#039;TickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining&lt;br /&gt;
|Gives a &#039;TurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth&lt;br /&gt;
|Gives a &#039;Width&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetX&lt;br /&gt;
|Gives a &#039;X&#039;-reply with x-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetY&lt;br /&gt;
|Gives a &#039;Y&#039;-reply with y-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetZ&lt;br /&gt;
|Gives a &#039;Z&#039;-reply with z-coordinate of the tank. 0 is ground level.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend &amp;lt;version&amp;gt;&lt;br /&gt;
|Greets the backend. (specifying protocol-version &amp;lt;version&amp;gt;, under development: 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2694</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2694"/>
		<updated>2007-07-09T15:48:48Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldSize&lt;br /&gt;
|Gives a &#039;BattleFieldSize&#039;-reply with the size of the map in &amp;quot;units&amp;quot;. (the map is size x size, and coordinates run from -size/2 to size/2)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining&lt;br /&gt;
|Gives a &#039;DistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat&lt;br /&gt;
|Gives a &#039;GunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading&lt;br /&gt;
|Gives a &#039;Heading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight&lt;br /&gt;
|Gives a &#039;Height&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetLength&lt;br /&gt;
|Gives a &#039;Length&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration&lt;br /&gt;
|Gives a &#039;TickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining&lt;br /&gt;
|Gives a &#039;TickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining&lt;br /&gt;
|Gives a &#039;TurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth&lt;br /&gt;
|Gives a &#039;Width&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetX&lt;br /&gt;
|Gives a &#039;X&#039;-reply with x-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetY&lt;br /&gt;
|Gives a &#039;Y&#039;-reply with y-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetZ&lt;br /&gt;
|Gives a &#039;Z&#039;-reply with z-coordinate of the tank. 0 is ground level.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend &amp;lt;version&amp;gt;&lt;br /&gt;
|Greets the backend. (specifying protocol-version &amp;lt;version&amp;gt;, under development: 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2693</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2693"/>
		<updated>2007-07-09T15:25:19Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: Added GetZ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldSize&lt;br /&gt;
|Gives a &#039;BattleFieldSize&#039;-reply with the size of the map in &amp;quot;units&amp;quot;. (the map is size x size, and coordinates run from -size/2 to size/2)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining&lt;br /&gt;
|Gives a &#039;DistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat&lt;br /&gt;
|Gives a &#039;GunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading&lt;br /&gt;
|Gives a &#039;Heading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight&lt;br /&gt;
|Gives a &#039;Height&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration&lt;br /&gt;
|Gives a &#039;TickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining&lt;br /&gt;
|Gives a &#039;TickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining&lt;br /&gt;
|Gives a &#039;TurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth&lt;br /&gt;
|Gives a &#039;Width&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetX&lt;br /&gt;
|Gives a &#039;X&#039;-reply with x-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetY&lt;br /&gt;
|Gives a &#039;Y&#039;-reply with y-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetZ&lt;br /&gt;
|Gives a &#039;Z&#039;-reply with z-coordinate of the tank. 0 is ground level.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend &amp;lt;version&amp;gt;&lt;br /&gt;
|Greets the backend. (specifying protocol-version &amp;lt;version&amp;gt;, under development: 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/API_BZRobots_vs_Robocode&amp;diff=2692</id>
		<title>BZRobots/API BZRobots vs Robocode</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/API_BZRobots_vs_Robocode&amp;diff=2692"/>
		<updated>2007-07-09T15:23:12Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: New page: =Overview= This page is to describe the changes that have been made to the RoboCode-compliant part of the API to accomodate how BZFlag worsk.  = API Changes = == Behaviour changes == * &amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page is to describe the changes that have been made to the RoboCode-compliant part of the API to accomodate how BZFlag worsk.&lt;br /&gt;
&lt;br /&gt;
= API Changes =&lt;br /&gt;
== Behaviour changes ==&lt;br /&gt;
* &#039;&#039;&#039;execute()&#039;&#039;&#039; - No longer &amp;quot;blocks&amp;quot; until the action is completed - it returns immediately unless you&#039;re currently completing an action. This also goes for other functions, see their relevant protocol messages in [[BZRobots/Protocol]] (&amp;quot;Steady-state required?&amp;quot;). This is because BZFlag is realtime (and RoboCode isn&#039;t).&lt;br /&gt;
&lt;br /&gt;
== Name changes ==&lt;br /&gt;
* &#039;&#039;&#039;getHeight()&#039;&#039;&#039; - Renamed to &#039;&#039;&#039;getLength()&#039;&#039;&#039;. This is because &amp;quot;height&amp;quot; in three dimensions refers to an different axis than what getHeight in two dimensions (and RoboCode) refers to.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[BZRobots/About]]&lt;br /&gt;
* [[BZRobots/Protocol]]&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2691</id>
		<title>BZRobots/History</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2691"/>
		<updated>2007-07-09T15:17:56Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
The project is being developed by Jørgen Pedersen Tjernø (AKA daxxar) as described on the [[Google_Summer_of_Code#Programmable_Computer_Player_Client|GSoC Wiki Page]]. Development updates are posted to the dev blog at http://gsoc.daxxar.com. The code will be kept in the [[BZFlag_SVN| BZFlag subversion system]] at http://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/src/bzrobots.&lt;br /&gt;
&lt;br /&gt;
=Architecture=&lt;br /&gt;
The architecture will be designed in such a way that a client component (similar to the current bzrobots) takes commands via a defined protocol from an AI component. The client component will be called the &#039;backend&#039;. The &#039;frontend&#039; will be what executes the AI logic, and takes care of communication with the &#039;backend&#039;.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/Protocol]] - Description of the new protocol&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/RoboCode_Changes]] - List of relevant changes from the RoboCode API (due to various parts of bzflags)&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2689</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2689"/>
		<updated>2007-07-09T14:32:22Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldSize&lt;br /&gt;
|Gives a &#039;BattleFieldSize&#039;-reply with the size of the map in &amp;quot;units&amp;quot;. (the map is size x size, and coordinates run from -size/2 to size/2)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining&lt;br /&gt;
|Gives a &#039;DistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat&lt;br /&gt;
|Gives a &#039;GunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading&lt;br /&gt;
|Gives a &#039;Heading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight&lt;br /&gt;
|Gives a &#039;Height&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration&lt;br /&gt;
|Gives a &#039;TickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining&lt;br /&gt;
|Gives a &#039;TickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining&lt;br /&gt;
|Gives a &#039;TurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth&lt;br /&gt;
|Gives a &#039;Width&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetX&lt;br /&gt;
|Gives a &#039;X&#039;-reply with x-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetY&lt;br /&gt;
|Gives a &#039;Y&#039;-reply with y-coordinate of the tank. (0, 0) is &amp;quot;lower left&amp;quot; corner.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend &amp;lt;version&amp;gt;&lt;br /&gt;
|Greets the backend. (specifying protocol-version &amp;lt;version&amp;gt;, under development: 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2688</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2688"/>
		<updated>2007-07-09T13:59:47Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: Fixed some reply names, removed &amp;lt;bot&amp;gt;-references, GetBattleFieldWidth/Height -&amp;gt; GetBattleFieldSize&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldSize&lt;br /&gt;
|Gives a &#039;BattleFieldSize&#039;-reply with the size of the map in &amp;quot;units&amp;quot;. (the map is size x size, and coordinates run from -size/2 to size/2)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining&lt;br /&gt;
|Gives a &#039;DistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat&lt;br /&gt;
|Gives a &#039;GunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading&lt;br /&gt;
|Gives a &#039;Heading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight&lt;br /&gt;
|Gives a &#039;Height&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration&lt;br /&gt;
|Gives a &#039;TickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining&lt;br /&gt;
|Gives a &#039;TickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining&lt;br /&gt;
|Gives a &#039;TurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth&lt;br /&gt;
|Gives a &#039;Width&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetX&lt;br /&gt;
|Gives a &#039;X&#039;-reply with x-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetY&lt;br /&gt;
|Gives a &#039;Y&#039;-reply with y-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend &amp;lt;version&amp;gt;&lt;br /&gt;
|Greets the backend. (specifying protocol-version &amp;lt;version&amp;gt;, under development: 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2662</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2662"/>
		<updated>2007-07-06T08:34:30Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google_Summer_of_Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetBattleFieldHeight&#039;-reply with the height of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;|GetBattleFieldWidth&#039;-reply with the width of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetDistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetHeading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetHeight&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds &amp;lt;bot&amp;gt;&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime &amp;lt;bot&amp;gt;&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetWidth&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetX &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetX&#039;-reply with x-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetY &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetY&#039;-reply with y-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend 0001&lt;br /&gt;
|Greets the backend. (specifying protocol-version 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2661</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2661"/>
		<updated>2007-07-06T08:26:02Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|Execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see SetFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetBases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetBattleFieldHeight&#039;-reply with the height of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetBattleFieldWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;|GetBattleFieldWidth&#039;-reply with the width of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetConstants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetFlags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetDistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetHeading &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetHeading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetHeight&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetMyTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetNumRounds &amp;lt;bot&amp;gt;&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetObstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetOtherTanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetRoundNum &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetShots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetSpeed &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the current velocity, as per default - or as per last SetSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTeams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetTime &amp;lt;bot&amp;gt;&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|GetWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetWidth&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetX &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetX&#039;-reply with x-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|GetY &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;GetY&#039;-reply with y-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|IdentifyFrontend 0001&lt;br /&gt;
|Greets the backend. (specifying protocol-version 0001)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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 &#039;execute&#039;. (If you call SetAhead, SetTurn etc before this, they will be overwritten unless SetResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called SetStop and not SetResume, this will fail unless you&#039;ve Set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call SetAhead, SetTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|SetSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|SetTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2607</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2607"/>
		<updated>2007-06-28T17:13:43Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|agent 1&lt;br /&gt;
|Greets the backend.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|bases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|constants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see setFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getBattleFieldHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getBattleFieldHeight&#039;-reply with the height of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getBattleFieldWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;|getBattleFieldWidth&#039;-reply with the width of the map in &amp;quot;units&amp;quot;.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getDistanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getHeading &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getHeading&#039;-reply with heading of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getHeight &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getHeight&#039;-reply with height of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getNumRounds &amp;lt;bot&amp;gt;&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getRoundNum &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getSpeed &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the current velocity, as per default - or as per last setSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTime &amp;lt;bot&amp;gt;&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getWidth &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getWidth&#039;-reply with width of the tank.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getX &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getX&#039;-reply with x-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getY &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getY&#039;-reply with y-coordinate of the tank.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|mytanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|obstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|othertanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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 &#039;execute&#039;. (If you call setAhead, setTurn etc before this, they will be overwritten unless setResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called setStop and not setResume, this will fail unless you&#039;ve set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call setAhead, setTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|shots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|teams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2606</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2606"/>
		<updated>2007-06-28T11:23:08Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|agent 1&lt;br /&gt;
|Greets the backend.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|bases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|constants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see setFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getNumRounds &amp;lt;bot&amp;gt;&lt;br /&gt;
|To be defined (or removed?)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getRoundNum &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the number of times the bot has died (or?).&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getSpeed &amp;lt;bot&amp;gt;&lt;br /&gt;
|Returns the current velocity, as per default - or as per last setSpeed.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTime &amp;lt;bot&amp;gt;&lt;br /&gt;
|RoboCode: &amp;quot;Returns the game time of the current round, where the time is equal to the current turn in the round.&amp;quot; - Will most likely return number of times you&#039;ve &#039;execute&#039;-d. Alternatively; return elapsed seconds / tickDuration (but tickDuration can change), or elapsed seconds.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|mytanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|obstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|othertanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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 &#039;execute&#039;. (If you call setAhead, setTurn etc before this, they will be overwritten unless setResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called setStop and not setResume, this will fail unless you&#039;ve set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call setAhead, setTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|shots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|teams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2601</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2601"/>
		<updated>2007-06-27T17:35:06Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|agent 1&lt;br /&gt;
|Greets the backend.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|bases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|constants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see setFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|mytanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|obstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|othertanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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 &#039;execute&#039;. (If you call setAhead, setTurn etc before this, they will be overwritten unless setResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called setStop and not setResume, this will fail unless you&#039;ve set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call setAhead, setTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|shots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|teams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2600</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2600"/>
		<updated>2007-06-27T17:34:05Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
!Implemented?&lt;br /&gt;
|-&lt;br /&gt;
|agent 1&lt;br /&gt;
|Greets the backend.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|bases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|constants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see setFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|mytanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|obstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|othertanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setResume &amp;lt;bot&amp;gt;&lt;br /&gt;
|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. (If you call setAhead, setTurn etc before this, they will be overwritten unless setResume fails)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setStop &amp;lt;bot&amp;gt; &amp;lt;overwrite&amp;gt;&lt;br /&gt;
|Stores and clears the bots current actions (distance and turn). If you&#039;ve previously called setStop and not setResume, this will fail unless you&#039;ve set overwrite to true. Does not store &amp;amp; clear until you call &#039;execute&#039;. (You can call setAhead, setTurn etc after this, and they will become the &#039;new&#039; values, instead of 0.)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #ff3333&amp;quot;|No&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|shots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|-&lt;br /&gt;
|teams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
!style=&amp;quot;background-color: #55ff55&amp;quot;|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2598</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2598"/>
		<updated>2007-06-27T16:14:37Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* Protocol Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page describes the BZRobots Enhanced Protocol that is part of the Programmable Computer Player Client project for the [[Google Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=Protocol Description=&lt;br /&gt;
The protocol is linebased, and works on a request-reply basis. Below is a table of all available requests.&lt;br /&gt;
The backend has something called a &#039;&#039;steady-state&#039;&#039; - 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 &#039;&#039;active-state&#039;&#039; the backend will &#039;&#039;&#039;not reply&#039;&#039;&#039; until the backend has entered &#039;&#039;steady-state&#039;&#039; (and any commands sent after the first command are queued for handling until the &#039;&#039;blocking&#039;&#039; command has been handled). These commands are marked with &amp;quot;&#039;&#039;&#039;Yes&#039;&#039;&#039;&amp;quot; in the &amp;quot;Steady-state required?&amp;quot;-column.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Frontend To Backend Messages&#039;&#039;&#039;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Steady-state required?&lt;br /&gt;
|-&lt;br /&gt;
|agent 1&lt;br /&gt;
|Greets the backend.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|bases&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|constants&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|execute &amp;lt;bot&amp;gt;&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and perhaps fires a shot (see setFire).&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|getGunHeat &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getGunHeat&#039;-reply with how many seconds are left of the gun cooldown.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|getTickDuration &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickDuration&#039;-reply with how many seconds makes up one tick.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|getTickRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTickRemaining&#039;-reply with how many seconds are left of this tick.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining &amp;lt;bot&amp;gt;&lt;br /&gt;
|Gives a &#039;getTurnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|mytanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|obstacles&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|othertanks&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;bot&amp;gt; &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;-s) that moves &#039;distance&#039; units.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setFire &amp;lt;bot&amp;gt;&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions speed, value between 0 and 1.0. (for future &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setTickDuration &amp;lt;bot&amp;gt; &amp;lt;seconds&amp;gt;&lt;br /&gt;
|Sets the duration of a tick, in seconds.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;bot&amp;gt; &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;-s) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate &amp;lt;bot&amp;gt; &amp;lt;factor&amp;gt;&lt;br /&gt;
|Sets next actions turnrate, value between 0 and 1.0. (for next &#039;execute&#039;-s)&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|shots&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|teams&lt;br /&gt;
|&amp;lt;explain&amp;gt;&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[BZRobots/About]] - Project Overview&lt;br /&gt;
&lt;br /&gt;
[[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Ideas&amp;diff=2597</id>
		<title>BZRobots/Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Ideas&amp;diff=2597"/>
		<updated>2007-06-27T15:58:38Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This page is to describe the community ideas for the BZRobots API that is to be provided as part of the Programmable Computer Player Client project for the Google Summer Of Code &lt;br /&gt;
&lt;br /&gt;
= Feature ideas =&lt;br /&gt;
==Scripting==&lt;br /&gt;
* Integrate python as a scripting language on top of C++&lt;br /&gt;
* Be able to load C++ or python modules transparently.&lt;br /&gt;
&lt;br /&gt;
==API functions==&lt;br /&gt;
* Provide global, team, admin, and report chat APIs so bots can communicate just like players, perhaps with some parsing helper functions.&lt;br /&gt;
* Provide an API for visual targets based on the same rules a player would see.&lt;br /&gt;
* Have methods to compute travel paths to desired locations, with updates for moving targets.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Google_Summer_of_Code|Google Summer of Code]]&lt;br /&gt;
* [[BZRobots/About]]&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2583</id>
		<title>BZRobots/History</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2583"/>
		<updated>2007-06-26T16:46:36Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a page about the &#039;new&#039; BZRobots as a part of [http://code.google.com/soc GSoC].&lt;br /&gt;
&lt;br /&gt;
I&#039;m daxxar, and you can read about the project at [[Google_Summer_of_Code#Programmable_Computer_Player_Client|GSoC Wiki Page]]. Development updates are posted to my blog [http://gsoc.daxxar.com]. My code will be on the SVN [http://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/src/bzrobots here]. :-)&lt;br /&gt;
&lt;br /&gt;
Interesting pages on this wiki on my project are currently:&lt;br /&gt;
* [[BZRobots/Protocol]] - Description of the new protocol&lt;br /&gt;
* [[BZRobots/Ideas]] - Feature suggestions / thoughts&lt;br /&gt;
&lt;br /&gt;
The architecture will be that one component (similar to the current bzrobots) takes commands via a defined protocol (see the protocol page). This is called the &#039;backend&#039;. The &#039;frontend&#039; is what executes the script or loads the module or whatever, and which takes care of communication with the &#039;backend&#039;.&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Ideas&amp;diff=2582</id>
		<title>BZRobots/Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Ideas&amp;diff=2582"/>
		<updated>2007-06-26T16:45:33Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: New page: = Feature ideas =  Here &amp;#039;&amp;#039;&amp;#039;everyone&amp;#039;&amp;#039;&amp;#039; can post their feature suggestions for the new BZRobots :-)  * Python support (Thanks JeffM &amp;amp; DTRemenak) * Communication via chat (team chat), e.g. t...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Feature ideas =&lt;br /&gt;
&lt;br /&gt;
Here &#039;&#039;&#039;everyone&#039;&#039;&#039; can post their feature suggestions for the new BZRobots :-)&lt;br /&gt;
&lt;br /&gt;
* Python support (Thanks JeffM &amp;amp; DTRemenak)&lt;br /&gt;
* Communication via chat (team chat), e.g. to &amp;quot;give orders&amp;quot; (Thanks Macrosoft)&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2575</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2575"/>
		<updated>2007-06-23T16:11:19Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* BZRobots Enhanced Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BZRobots Enhanced Protocol ==&lt;br /&gt;
&lt;br /&gt;
This is a draft of the protocol that&#039;s being planned for the new bzrobots as a part of GSoC. The protocol is inspired by the API it will convey the messages of, which in turn is inspired by [http://robocode.sourceforge.net RoboCode]. ;-)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Backend -&amp;gt; frontend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|SOME_COMMAND_HERE &amp;lt;float&amp;gt;&lt;br /&gt;
|THIS RUNS SOME COMMAND WITH FLOAT ARGUMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Frontend -&amp;gt; backend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;) that moves &#039;distance&#039; units.&lt;br /&gt;
|-&lt;br /&gt;
|setBack &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement backwards, same as setAhead -distance&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRight &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;) that turns &#039;degrees&#039; degrees to the right, same as setTurnLeft -degrees.&lt;br /&gt;
|-&lt;br /&gt;
|setFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRate&lt;br /&gt;
|Sets next actions turnrate. (for next &#039;execute&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|setSpeed&lt;br /&gt;
|Sets next actions speed. (for next &#039;execute&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining&lt;br /&gt;
|Gives a &#039;turnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|-&lt;br /&gt;
|execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and replies with a &#039;tick over&#039; when the tick has passed.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2557</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2557"/>
		<updated>2007-06-18T19:38:09Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: /* BZRobots Enhanced Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BZRobots Enhanced Protocol ==&lt;br /&gt;
&lt;br /&gt;
This is a draft of the protocol that&#039;s being planned for the new bzrobots as a part of GSoC. The protocol is inspired by the API it will convey the messages of, which in turn is inspired by [http://robocode.sourceforge.net RoboCode]. ;-)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Backend -&amp;gt; frontend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|SOME_COMMAND_HERE &amp;lt;float&amp;gt;&lt;br /&gt;
|THIS RUNS SOME COMMAND WITH FLOAT ARGUMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Frontend -&amp;gt; backend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|setAhead &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement (for next &#039;execute&#039;) that moves &#039;distance&#039; units.&lt;br /&gt;
|-&lt;br /&gt;
|setBack &amp;lt;distance&amp;gt;&lt;br /&gt;
|Sets planned movement backwards, same as setAhead -distance&lt;br /&gt;
|-&lt;br /&gt;
|setTurnLeft &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;) that turns &#039;degrees&#039; degrees to the left.&lt;br /&gt;
|-&lt;br /&gt;
|setTurnRight &amp;lt;degrees&amp;gt;&lt;br /&gt;
|Sets planned turn (for next &#039;execute&#039;) that turns &#039;degrees&#039; degrees to the right, same as setTurnLeft -degrees.&lt;br /&gt;
|-&lt;br /&gt;
|setFire&lt;br /&gt;
|Sets a planned shot (for next &#039;execute&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|getDistanceRemaining&lt;br /&gt;
|Gives a &#039;distanceRemaining&#039;-reply with how much is left of the currently planned movement.&lt;br /&gt;
|-&lt;br /&gt;
|getTurnRemaining&lt;br /&gt;
|Gives a &#039;turnRemaining&#039;-reply with how much is left of the currently planned turn.&lt;br /&gt;
|-&lt;br /&gt;
|execute&lt;br /&gt;
|Runs a tick of the &#039;planned actions&#039;, and replies with a &#039;tick over&#039; when the tick has passed.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2556</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2556"/>
		<updated>2007-06-18T19:23:04Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BZRobots Enhanced Protocol ==&lt;br /&gt;
&lt;br /&gt;
This is a draft of the protocol that&#039;s being planned for the new bzrobots as a part of GSoC.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Backend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|SOME_COMMAND_HERE &amp;lt;float&amp;gt;&lt;br /&gt;
|THIS RUNS SOME COMMAND WITH FLOAT ARGUMENT&lt;br /&gt;
|SOME_COMMAND_HERE 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Frontend messages&lt;br /&gt;
!Message syntax&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|SOME_COMMAND_HERE &amp;lt;float&amp;gt;&lt;br /&gt;
|THIS RUNS SOME COMMAND WITH FLOAT ARGUMENT&lt;br /&gt;
|SOME_COMMAND_HERE 15&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2555</id>
		<title>BZRobots/History</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2555"/>
		<updated>2007-06-18T19:16:19Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: Quick architecture info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a page about the &#039;new&#039; BZRobots as a part of [http://code.google.com/soc GSoC].&lt;br /&gt;
&lt;br /&gt;
I&#039;m daxxar, and you can read about the project at [[Google_Summer_of_Code#Programmable_Computer_Player_Client|GSoC Wiki Page]]. Development updates are posted to my blog [http://gsoc.daxxar.com]. My code will be on the SVN [http://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/src/bzrobots here]. :-)&lt;br /&gt;
&lt;br /&gt;
Interesting pages on this wiki on my project are currently:&lt;br /&gt;
* [[BZRobots/Protocol]] - Description of the new protocol&lt;br /&gt;
&lt;br /&gt;
The architecture will be that one component (similar to the current bzrobots) takes commands via a defined protocol (see the protocol page). This is called the &#039;backend&#039;. The &#039;frontend&#039; is what executes the script or loads the module or whatever, and which takes care of communication with the &#039;backend&#039;.&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots&amp;diff=2553</id>
		<title>BZRobots</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots&amp;diff=2553"/>
		<updated>2007-06-18T19:07:20Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: Redirecting to BZRobots/About&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BZRobots/About]]&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2552</id>
		<title>BZRobots/History</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/History&amp;diff=2552"/>
		<updated>2007-06-18T19:03:33Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: New page: This is a page about the &amp;#039;new&amp;#039; BZRobots as a part of [http://code.google.com/soc GSoC].  I&amp;#039;m daxxar, and you can read about the project at [[Google_Summer_of_Code#Programmable_Computer_Pla...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a page about the &#039;new&#039; BZRobots as a part of [http://code.google.com/soc GSoC].&lt;br /&gt;
&lt;br /&gt;
I&#039;m daxxar, and you can read about the project at [[Google_Summer_of_Code#Programmable_Computer_Player_Client|GSoC Wiki Page]]. Development updates are posted to my blog [http://gsoc.daxxar.com]. My code will be on the SVN [https://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/src/bzrobots here]. :-)&lt;br /&gt;
&lt;br /&gt;
Interesting pages on this wiki on my project are currently:&lt;br /&gt;
* [[BZRobots/Protocol]] - Description of the new protocol&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2551</id>
		<title>BZRobots/Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots/Protocol&amp;diff=2551"/>
		<updated>2007-06-18T18:50:15Z</updated>

		<summary type="html">&lt;p&gt;Daxxar: New page:  == BZRobots Enhanced Protocol ==  This is a draft of the protocol that&amp;#039;s being planned for the new bzrobots as a part of GSoC.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== BZRobots Enhanced Protocol ==&lt;br /&gt;
&lt;br /&gt;
This is a draft of the protocol that&#039;s being planned for the new bzrobots as a part of GSoC.&lt;/div&gt;</summary>
		<author><name>Daxxar</name></author>
	</entry>
</feed>