Minimum Risk Movement
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.
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):
- Maybe Troodon. I haven't looked at the code, but when I first implemented it, my movement reminded me of Troodon.
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/distance2. Other things I 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 I could add 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 I take into account aside from my 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.