Robocode Tutorial
posted in design on • by Wouter Van Schandevijl
robo-code/robocode
:
Build the best - destroy the rest!
Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java or .NET. The robot battles are running in real-time and on-screen.
Game Physics

- Default grid for 1v1: 800x600
- Time is measured in ticks = turns.
- 1 distance unit = 1 pixel unless the game scaled down the battlefield to fit on the screen.
- Acceleration (a): Robots accelerate at 1px/turn and decelerate at 2px/turn.
- Velocity (v): Max: 8px/turn. The robot movies in the direction of the
GunHeading. - Distance (d): distance = velocity * time.
The Robot
A Robot consists of:
Body
Energy:- Start with 100.
- Drops when firing, getting hit, running into robots or walls and being inactive
- At 0, it is game over!
Ahead(double distance)&Back: Distance in pixels.- Collision with another robot: 0.6 energy damage
- Collision with a wall
abs(velocity) * 0.5 - 1 (never < 0)(AdvancedRobot only)
Velocity: Measured in pixels/turn. Max: 8px/turn. Accelerate: 1px/turn. Decelerate: 2px/turn.TurnLeft(double degrees)&TurnRight- Maximum rate of rotation is
(10 - 0.75 * abs(velocity)) deg/turn. - The faster you’re moving, the slower you turn.
Heading: Direction the tank is facing. Returns 0 to 360 (exclusive). 0 is North. 90 is East etc.
- Maximum rate of rotation is
Width&Height: Dimensions of the Robot. (36x36)
Gun
Pew! Pew! Pew!!
- Mounted on the Body.
GunHeat:- Can only
Firewhen this is zero. - Each turn the Gun cools with
GunCoolingRate. Default: 0.1 / turn. - At game start
GunHeatis 3.
- Can only
Fire&FireBullet(double power): Bullet:- With
powerbetween 0.1 and 3. - Costs
poweramount ofenergy. If power > energy, you become disabled. - Damage:
(4 * power). If power > 1, an additional2 * (power - 1)damage. - If hit, you regain
(3 * power)worth ofenergy. GunHeatincreases with1 + (power / 5).- Generates
onBullHit,onBulletHitBulletandonBulletMissedevents. - Bullets move with a velocity of
20 - (3 * power)
- With
turnGunLeftandturnGunRight.- The maximum rate of rotation is: 20 deg/turn.
GunHeading: Direction the gun is facing. Returns 0 to 360 (exclusive). 0 is North. 90 is East etc.IsAdjustGunForRobotTurn: True = Guns turns separately of Body.
Radar
Scans for other robots.
- Mounted on the Gun.
turnRadarLeft(double degrees)andturnRadarRight.- The maximum rate of rotation is: 45 deg/turn
- Generates
onScannedRobotevents when another robot is detected. RadarHeading: Direction the radar is facing.IsAdjustRadarForGunTurn: True = Radar turns separately of Gun.IsAdjustRadarForRobotTurn: True = Radar turns separately of Body.
Battling other robots
The best way to debug your robot is, of course battling others!
- Sample Bots: Packaged with Robocode. Practice against these first :)
- Super Sample Bots: The next step.
- How to download other Robots
- Some Super Robots
- Open Source Robots
Learning Resources
Learning to
Other resources
Youtube
Stuff that came into being during the making of this post
Other interesting reads