Physics Cycle
With each Physics Cycle, the position and heat levels of every object on the playing field is recalculated. Moreover, collisions between objects are checked and damage is applied when needed.
In order to accomplih this, first the current acceleration vectors of each object are applied to their speed vectors to calculate their new speed. The acceleration vectors are generated mainly by the propulsion systems in the case of robots. Most other objects do not have acceleration vectors. Once the current speed vector is known, it is applied to the current position of the object to calculate its new position on the field, taking into account terrain which might prevent it from moving in that direction.
Then heat is generated for every object that has a heat generation rate. Mainly it is just robots that generate and keep track of internal heat. The heat generation rate is calculated for every hardware component on a robot during the Hardware Cycle. Heat dissipation is also calculated to reduce internal heat, and applied to each hardware component proportionally to its current heat level relative to the total heat on the robot.
Finally, collisions are checked and, if two object have collided, damage is calculated for both of them. Then damage taken is applied to the objects, destroying those that have been obliterated and damaging the hardware components of those that have taken damage but survived.
Physics Cycles are sometimes called P-Cycles.
A brief recap of the Physics Cycle sequence as applied to each entity on the playing field:
- Speed vector is updated according to acceleration vectors.
- Object is moved according to its speed vector.
- Heat is calculated.
- Collisions are checked.
- Damage is applied.
Updating Speed
During the speed updating step of the physics cycle, every independent object of the playing field has its speed vector adjusted according to its current acceleration vector, as calculated by its propulsion system during its Hardware Cycle.
Object Movement
During the object movement step of the physics cycle, every independent object of the playing field is moved according to its speed vector. This applies to every individual robot, as well as to missiles and other moveable objects.
Heat Calculation
During the heat calculation step of the physics cycle, a new heat level is calculated for every hardware component of every virtual robot on the field. Heat is adjusted according to the heat generation rate of each hardware component as calculated during its Hardware Cycle. Other entities, like missiles, do not calculate their internal heat.
Each of the robots has several hardware components, and each of them generates a certain amount of heat at a rate calculated during its Hardware Cycle, and dependant on the type of activity the hardware component is undertaking. For each of these hardware components, a new heat level is calculated by adding up the generated heat rate to its current heat level. Heat sinkers dissipate heat for all hardware components on the same robot, so the total heat dissipated by all heat sinkers of a robot is calculated by adding up the heat dissipated by every individual sinker.
Once the new heat levels of the hardware components and the total dissipated heat of the robot are known, heat is reduced for every hardware component by substracting part of the heat dissipation from its current heat level. Every hardware component on the robot receives a fraction of the total heat dissipation which is proportional to its heat level relative to the sum of all hardware component's heat levels. For example, imagine that a robot has three hardware components, each at a temperature of 10ºC, 15ºC and 20ºC after the generated heat rate has been applied. The total heat dissipation for all heat sinks that Physics Cycle was 25ºC, and this would be distributed amongst the three hardware components. The hardware component at 10ºC has a temperature that is 22% of the total temperature of all hardware components, so it dissipates 22% of the total dissipated heat (25ºC), which is 5.56ºC, reducing its heat level from 10ºC to 4.44ºC. The one at 15ºC has 33% of all heat on the robot, so its heat level is reduced from 15ºC to 6.67ºC. The last hardware component, being the hottest one, has 44% of all heat on the robot, so its heat is reduced by 11.11ºC, from 20ºC to 8.89ºC. The final heat of all hardware components on the robot is now 4.44ºC, 6.67ºC and 8.89ºC.
Finally, once the new heat levels of all the hardware components is known, the heat level of the chassis is calculated. In order to do so, the total heat level of all hardware components on the robot is added up and divided by two. In our previous example, the chassis would have a temperature of 10ºC (4.44 + 6.67 + 8.89, divided by two).
A brief recap of the heat calculation sequence as applied to each virtual robot:
- Each hardware component increases its heat according to its heat generation rate (calculated during the Hardware Cycle).
- Total heat dissipation is calculated adding up heat dissipation rates from all heat sinkers on the bot.
- Dissipated heat is distributed, with each hardware component reducing its heat proportionally to the total combined heat of all hardware components.
- Chassis heat is equal to the sum of all hardware heat levels divided by two.
Collision Checking
During the collision checking step of the physics cycle, every moveable object is checked to see if it has hit any other object on the playing field. If missiles or other weapon rounds hit any object, damage is calculated for the object being hit.
Applying Damage
During the damage step of the physics cycle, every object on the playing field which has received damage calculates the effect of this damage, applying it to the appropriate hardware components if it was a robot.