Difference between revisions of "Minimum Risk Movement"

From Robowiki
Jump to navigation Jump to search
(Marked For Cleanup)
m (minor cleanup, follow the third person rule)
Line 1: Line 1:
 
{{cleanup}}
 
{{cleanup}}
A very effective type of [[Melee]] movement that is not completely unlike [[AntiGravityMovement]] in implementation. The idea is to pick a series of points that you could go to next, and rate each one with a 'risk factor', then move to the lowest-risk location.
+
A very effective type of [[Melee]] movement that is not completely unlike [[Anti-Gravity Movement]] in implementation. The idea is to pick a series of points that you could go to next, and rate each one with a 'risk factor', then move to the lowest-risk location.
 +
 
 
==== Bots that use it ====
 
==== Bots that use it ====
Some of the robots that use this basic system in melee, whether or not the authors call it that (correct me if I'm wrong, add some if you know of more):
+
Some of the robots that use this basic system in [[melee]], whether or not the authors call it that:
 
* [[FloodHT]]
 
* [[FloodHT]]
 
* [[HawkOnFire]]
 
* [[HawkOnFire]]
Line 9: Line 10:
 
* [[Shadow]]
 
* [[Shadow]]
 
* DuelistMiniMelee
 
* DuelistMiniMelee
* Maybe [[Troodon]].  I haven't looked at the code, but when I first implemented it, my movement reminded me of [[Troodon]].
+
* [[Troodon]]
 
* [[Vapour]]
 
* [[Vapour]]
 
* [[Griezel]]
 
* [[Griezel]]
Line 15: Line 16:
 
==== Calculating the Risk Factor for a point/movement ====
 
==== Calculating the Risk Factor for a point/movement ====
  
For [[FloodHT]], the system for this is somewhat like finding the magnitude of a force in an [[AntiGravityMovement]] system.  For each enemy, I use a base risk of a certain point is energy/distance<sup>2</sup>.  Other things I take into account for each enemy:
+
For [[FloodHT]], the system for this is somewhat like finding the magnitude of a force in an [[Anti-Gravity Movement]] system.  For each enemy, it use a base risk of a certain point is energy/distance<sup>2</sup>.  Other things it take into account for each enemy:
 
* would I be the closest enemy to them at that point?
 
* would I be the closest enemy to them at that point?
 
* have they shot me recently?
 
* have they shot me recently?
 
* would the path from my current location to the proposed point intersect them?
 
* would the path from my current location to the proposed point intersect them?
Other things I could add in the future:
+
Other things it could has in the future:
 
* what is my lateral angle to them?  (higher risk to go toward/away than to move perpendicular to them, the dev version of [[FloodHT]] already does this at least some of the time)
 
* what is my lateral angle to them?  (higher risk to go toward/away than to move perpendicular to them, the dev version of [[FloodHT]] already does this at least some of the time)
Other things I take into account aside from my enemies:
+
Other things it take into account aside from its enemies:
 
* repel my current location (don't want to stay in the same place for too long)
 
* repel my current location (don't want to stay in the same place for too long)
 
* The center
 
* The center
Line 28: Line 29:
 
==== Picking points to try ====
 
==== Picking points to try ====
  
It's important to pick a good range of practical places to go to for this to work well.  Applying a force to the walls is unnecessary if you always just pick points within the battlefield.  I believe that HawkOnFire picks several points around him in regular angular offsets at random distances.  The next version of [[FloodHT]] will do this at least some of the time.  [[Tron]] obviously picks 4 points, at pretty much uniform distance, up, down, left and right.  He also avoids head-on aim like the plague.  [[FloodHT]] 0.8 uses a divide-and-conquer sort of system.  He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point.  If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectanges and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore).  The dev version does this at the beginning of the battle to get situated and then starts picking points around him at a distance.
+
It's important to pick a good range of practical places to go to for this to work well.  Applying a force to the walls is unnecessary if you always just pick points within the battlefield.  I believe that [[HawkOnFire]] picks several points around him in regular angular offsets at random distances.  The next version of [[FloodHT]] will do this at least some of the time.  [[Tron]] obviously picks 4 points, at pretty much uniform distance, up, down, left and right.  He also avoids [[Head-On Targeting|head-on]] aim like the plague.  [[FloodHT]] 0.8 uses a divide-and-conquer sort of system.  He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point.  If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectanges and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore).  The dev version does this at the beginning of the battle to get situated and then starts picking points around him at a distance.
  
 
[[Category:Melee]]
 
[[Category:Melee]]
 
[[Category:Movement]]
 
[[Category:Movement]]

Revision as of 12:59, 5 May 2009

This article may require cleanup to meet RoboWiki's quality standards.
Please improve this article if you can.

A very effective type of Melee movement that is not completely unlike Anti-Gravity Movement in implementation. The idea is to pick a series of points that you could go to next, and rate each one with a 'risk factor', then move to the lowest-risk location.

Bots that use it

Some of the robots that use this basic system in melee, whether or not the authors call it that:

Calculating the Risk Factor for a point/movement

For FloodHT, the system for this is somewhat like finding the magnitude of a force in an Anti-Gravity Movement system. For each enemy, it use a base risk of a certain point is energy/distance2. Other things it take into account for each enemy:

  • would I be the closest enemy to them at that point?
  • have they shot me recently?
  • would the path from my current location to the proposed point intersect them?

Other things it could has in the future:

  • what is my lateral angle to them? (higher risk to go toward/away than to move perpendicular to them, the dev version of FloodHT already does this at least some of the time)

Other things it take into account aside from its enemies:

  • repel my current location (don't want to stay in the same place for too long)
  • The center
  • The distance I would have to travel (going a long way in a large battle can be perilous!)

Picking points to try

It's important to pick a good range of practical places to go to for this to work well. Applying a force to the walls is unnecessary if you always just pick points within the battlefield. I believe that HawkOnFire picks several points around him in regular angular offsets at random distances. The next version of FloodHT will do this at least some of the time. Tron obviously picks 4 points, at pretty much uniform distance, up, down, left and right. He also avoids head-on aim like the plague. FloodHT 0.8 uses a divide-and-conquer sort of system. He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point. If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectanges and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore). The dev version does this at the beginning of the battle to get situated and then starts picking points around him at a distance.