This wiki was in read-only mode for many years, but can now be edited again. A lot of information will need to be updated.
BZRobots/API BZRobots vs Robocode: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
 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 == * '''...  | 
				|||
| (5 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
=Overview=  | =Overview=  | ||
This page is to describe the changes that have been made to the RoboCode-compliant part of the API to   | This page is to describe the changes that have been made to the RoboCode-compliant part of the API to accommodate how BZFlag works.  | ||
=   | = Differences between Robocode and BZRobots =  | ||
==   | == Game model ==  | ||
* ''  | * Robocode game model assumes you have only one life; in BZFlag, you get to respawn  | ||
** onWin/onBattleEnded are applicable to a league match only  | |||
** onDeath simply means you die, but you will spawn shortly after  | |||
** There is a new onSpawn/SpawnEvent in the BZRobots API  | |||
== Time-based-movement ==  | |||
* Robocode 'turns' are in discrete ticks; BZFlag is real-time, which has the following implications:  | |||
** Time is in decimal seconds; instead of turn 0,1,2, you get 1.5 seconds, 1.8 seconds, 2.34 seconds, etc.  | |||
** Because of the above, getTime() returns a double instead of a long  | |||
** Blocking functions such as execute have a small time delay, dependent on how long you executed  | |||
** For now, there is no limitation on how long you may execute your "turn"  | |||
== Fixed Radar and Gun ==  | |||
* Robocode has movable radar and gun; BZFlag does not  | |||
** setAdjustGunForRobotTurn and similar have no effect  | |||
** turnGunLeft/turnRadarRight/etc. have no effect  | |||
** getGunHeading/getRadarHeading will always match the robot's getHeading  | |||
** BZFlag's radar effectively sweeps 360 degrees each 'tick/turn'  | |||
== 3rd dimension ==  | |||
* Robocode is 2D, but BZFlag is 3D; this means that:  | |||
** Methods named xxxHeight are renamed to xxxLength.  | |||
** Methods named xxxHeight will return a Z-dimension  | |||
** Objects having a getX() and getY() now have a getZ() as well  | |||
** For simplicity, getVelocity() still refers only to X-Y velocity  | |||
== Energy ==  | |||
* Robocode bots have "energy"; BZFlag does not  | |||
** The API now has onBulletFired(BulletFiredEvent e) so you can detect a fired shot  | |||
** A bullet's energy will always be 3, regardless  | |||
** A robot's getEnergy always returns 16 (Per the [http://robowiki.net/wiki/Robocode/FAQ Robocode Damage Formula] with a bullet power of 3, since a single shot kills)  | |||
** Changing ''power'' in void fire(double power) and similar will have no effect  | |||
== Bullets ==  | |||
* In Robocode, bullet speed is a function of energy, but in BZFlag bullet velocity is fixed  | |||
=See Also=  | =See Also=  | ||
* [[BZRobots/  | * [[BZRobots/API]]  | ||
Latest revision as of 21:20, 17 August 2009
Overview
This page is to describe the changes that have been made to the RoboCode-compliant part of the API to accommodate how BZFlag works.
Differences between Robocode and BZRobots
Game model
- Robocode game model assumes you have only one life; in BZFlag, you get to respawn
- onWin/onBattleEnded are applicable to a league match only
 - onDeath simply means you die, but you will spawn shortly after
 - There is a new onSpawn/SpawnEvent in the BZRobots API
 
 
Time-based-movement
- Robocode 'turns' are in discrete ticks; BZFlag is real-time, which has the following implications:
- Time is in decimal seconds; instead of turn 0,1,2, you get 1.5 seconds, 1.8 seconds, 2.34 seconds, etc.
 - Because of the above, getTime() returns a double instead of a long
 - Blocking functions such as execute have a small time delay, dependent on how long you executed
 - For now, there is no limitation on how long you may execute your "turn"
 
 
Fixed Radar and Gun
- Robocode has movable radar and gun; BZFlag does not
- setAdjustGunForRobotTurn and similar have no effect
 - turnGunLeft/turnRadarRight/etc. have no effect
 - getGunHeading/getRadarHeading will always match the robot's getHeading
 - BZFlag's radar effectively sweeps 360 degrees each 'tick/turn'
 
 
3rd dimension
- Robocode is 2D, but BZFlag is 3D; this means that:
- Methods named xxxHeight are renamed to xxxLength.
 - Methods named xxxHeight will return a Z-dimension
 - Objects having a getX() and getY() now have a getZ() as well
 - For simplicity, getVelocity() still refers only to X-Y velocity
 
 
Energy
- Robocode bots have "energy"; BZFlag does not
- The API now has onBulletFired(BulletFiredEvent e) so you can detect a fired shot
 - A bullet's energy will always be 3, regardless
 - A robot's getEnergy always returns 16 (Per the Robocode Damage Formula with a bullet power of 3, since a single shot kills)
 - Changing power in void fire(double power) and similar will have no effect
 
 
Bullets
- In Robocode, bullet speed is a function of energy, but in BZFlag bullet velocity is fixed