Difference between revisions of "Robocode/Game Physics"
< Robocode
Jump to navigation
Jump to search
(→Robot Movement Physics: Minor correction to units of acceleration (to length/time/time)) |
m (→See Also) |
||
Line 85: | Line 85: | ||
# Each robot is processing its event queue | # Each robot is processing its event queue | ||
− | == See | + | == See also == |
+ | |||
+ | === Robot API === | ||
+ | * [http://robocode.sourceforge.net/docs/robocode/ Robot API] | ||
+ | |||
+ | === Tutorials === | ||
+ | * [[Robocode/System Requirements|System Requirements for Robocode]] | ||
+ | * [[Robocode/Download|How to download and install Robocode]] | ||
+ | * [[Robocode/Robot Anatomy|The anatomy of a robot]] | ||
* [[Robocode/Getting Started|Getting started with Robocode]] | * [[Robocode/Getting Started|Getting started with Robocode]] | ||
+ | * [[Robocode/My First Robot|My First Robot Tutorial]] | ||
+ | * [[Robocode/Scoring|Scoring in Robocode]] | ||
+ | * [[Robocode/Robot Console|Using the robot console]] | ||
+ | * [[Robocode/Downloading_Robots|Downloading other robots]] | ||
+ | * [[Robocode/Learning from Robots|Learning from other robots]] | ||
+ | * [[Robocode/Package Robot|Package your robot]] | ||
* [[Robocode/FAQ|Frequently Asked Questions (FAQ)]] | * [[Robocode/FAQ|Frequently Asked Questions (FAQ)]] | ||
− | * [[ | + | * [[Robocode/Articles|Articles about Robocode]] |
+ | * [[Robocode/Console Usage|Starting Robocode from the command line]] | ||
+ | * [[Robocode/Graphical_Debugging|Graphical debugging]] | ||
+ | * [[Robocode/Using an IDE|Using Eclipse as IDE]] | ||
+ | * [[Robocode/Eclipse/Create_a_Project|Creating a project for your robots]] | ||
+ | * [[Robocode/Eclipse/Create_a_Robot|Creating a robot in Eclipse]] | ||
+ | * [[Robocode/Running from Eclipse|Running your robot from Eclipse]] | ||
+ | * [[Robocode/Eclipse/Debugging Robot|Debugging your robot with Eclipse]] | ||
+ | |||
+ | === News and Releases === | ||
+ | * [http://sourceforge.net/export/rss2_project.php?group_id=37202 RSS Feeds for the Robocode project] | ||
+ | * [http://sourceforge.net/project/showfiles.php?group_id=37202&package_id=29609 Robocode file releases] | ||
+ | |||
+ | === Home pages === | ||
+ | * [http://robocode.sourceforge.net/ Classic homepage] | ||
+ | * [http://sourceforge.net/projects/robocode Robocode project at SourceForge] | ||
+ | * [http://robocoderepository.com/ Robocode Repository] | ||
+ | * [[wikipedia:Robocode|Wikipediaentry for Robocode]] | ||
[[Category:Robocode Documentation]] | [[Category:Robocode Documentation]] | ||
+ | [[Category:Tutorials]] |
Revision as of 22:11, 10 October 2008
This page describes the game physics of Robocode
Robocode Game Physics
Contents
Coordinates and Direction Conventions
Coordinates System: | Robocode is using the Cartesian Coordinate System, which means that that the (0, 0) coordinate is located in the bottom left of the battle field. |
---|---|
Clockwise Direction: | Robocode is using a clockwise direction convention where 0 / 360 deg is towards "North", 90 deg towards "East", 180 deg towards "South", and 270 deg towards "West". |
Figure 1:
http://www.ibm.com/developerworks/java/library/j-robocode2/fig2.gif
Time and distance measurements in Robocode
Time (t): | Robocode time is measured in "ticks". Each robot gets one turn per tick. 1 tick = 1 turn. |
---|---|
Distance Measurement: | Robocode's units are basically measured in pixels, with two exceptions. First, all distances are measured with double precision, so you can actually move a fraction of a pixel. Second, Robocode automatically scales down battles to fit on the screen. In this case, the unit of distance is actually smaller than a pixel. |
Robot Movement Physics
Acceleration (a): | Robots accelerate at the rate of 1 pixel/turn/turn. Robots decelerate at the rate of 2 pixels/turn/turn. Robocode determines acceleration for you, based on the distance you are trying to move. |
---|---|
Velocity Equation(v): | v = at. Velocity can never exceed 8 pixels/turn. Note that technically, velocity is a vector, but in Robocode we simply assume the direction of the vector to be the robot's heading. |
Distance Equation (d): | d = vt. That is, distance = velocity * time |
Robot, Gun, and Radar rotation
Max rate of rotation of robot: | (10 - 0.75 * abs(velocity)) deg / turn. The faster you're moving, the slower you turn. |
---|---|
Max rate of rotation of gun: | 20 deg / turn. This is added to the current rate of rotation of the robot. |
Max rate of rotation of radar: | 45 deg / turn. This is added to the current rate of rotation of the gun. |
Bullets
Damage: | 4 * firepower. If firepower > 1, it does an additional damage = 2 * (power - 1). |
---|---|
Velocity: | 20 - 3 * firepower. |
GunHeat generated: | 1 + firepower / 5. You cannot fire if gunHeat > 0. All guns are hot at the start of each round. |
Power returned on hit: | 3 * firepower. |
Collisions
With Another Robot: | Each robot takes 0.6 damage. If a robot is moving away from the collision, it will not be stopped. |
---|---|
With a Wall: | AdvancedRobots take abs(velocity) * 0.5 - 1; (Never < 0). |
Robocode Processing Loop
The order that Robocode runs is as follows:
- Battle view is (re)painted
- All robots execute their code until they take action (and then paused)
- Time is updated (time = time + 1)
- All bullets move and check for collisions
- All robots move (heading, acceleration, velocity, distance, in that order)
- All robots perform scans (and collect team messages)
- All robots are resumed to take new action
- Each robot is processing its event queue
See also
Robot API
Tutorials
- System Requirements for Robocode
- How to download and install Robocode
- The anatomy of a robot
- Getting started with Robocode
- My First Robot Tutorial
- Scoring in Robocode
- Using the robot console
- Downloading other robots
- Learning from other robots
- Package your robot
- Frequently Asked Questions (FAQ)
- Articles about Robocode
- Starting Robocode from the command line
- Graphical debugging
- Using Eclipse as IDE
- Creating a project for your robots
- Creating a robot in Eclipse
- Running your robot from Eclipse
- Debugging your robot with Eclipse