Difference between revisions of "Shadow/Melee Gun"

From Robowiki
Jump to navigation Jump to search
m (add navbar)
m (wording)
Line 15: Line 15:
  
 
== How it work? ==
 
== How it work? ==
Wonder to know how? Here is the here's the recipe:  
+
Want to know how? Here is the recipe:  
  
* Speed it up. A [[kd-Tree|k-d tree]] ([[Simonton]]'s is what Shadow used) and a fast [[play-it forward]] method are good bets.
+
* Speed it up. A [[kd-Tree|k-d tree]] ([[Simonton]]'s is what Shadow used) and a fast [[play-it forward]] algorithm are good bets.
* Compute the ''k'' best firing solutions for each of the enemies on the field, yes, ''all'' of them.
+
* Compute the ''k''-best firing solutions for each of the enemies on the field. Yes, ''all'' of them.
 
* Collect them all in a big array of angle/tolerance. Also keep the hitting distance for each one.
 
* Collect them all in a big array of angle/tolerance. Also keep the hitting distance for each one.
 
* Select the angle with the biggest probability of hitting, weighting them by the inverse distance.
 
* Select the angle with the biggest probability of hitting, weighting them by the inverse distance.

Revision as of 14:51, 11 September 2009

Shadow Sub-pages:
ShadowVersion History - Archived Talk 20040725 - Archived Talk 20090724 - Melee Gun

Shadow's melee gun is one of the best melee guns around today, no doubt. But what's the secret behind it?

If you have ever watched Shadow closely, you should noticed that it implements two things that you have on your to-do list of your melee gun:

  • Swarm Targeting: Why does my bot always choose that lonely target when it could be targeting that tight pack in the other corner?
  • Prey on the weak: Why waste my energy trying to hit Diamond when SittingDuck is there just a little bit further asking to be killed?

How it work?

Want to know how? Here is the recipe:

  • Speed it up. A k-d tree (Simonton's is what Shadow used) and a fast play-it forward algorithm are good bets.
  • Compute the k-best firing solutions for each of the enemies on the field. Yes, all of them.
  • Collect them all in a big array of angle/tolerance. Also keep the hitting distance for each one.
  • Select the angle with the biggest probability of hitting, weighting them by the inverse distance.
  • Fire at the best one, it will hit someone somewhere... :)

Not hard, eh? Simple (20 minutes work), effective (10% hitrate increase), cool to watch. This is why I love this game! :)

Note

This article talking about Shadow's gun, which is DC-PIF, but this can be applied to GuessFactor or Displacement Vector too.