I don't know if PatternTargeting is the correct name. |
One quite simple strategy is to:
# Record your enemy's movements
# When estimating a future location you:
## Try to find a match in this recorded history matching the recent movements.
## Play the recorded "movie" from this match for BulletTravelTime time
I got most of the inspiration for Marshmallows PatternTargeting from here: http://www.realj.com/robots/MogBot.html#aiming
Some people calls it Pattern matching also.
The starting point for pattern matching is the assumption that a bot will repeat its movements, so if you are able to find some movement in the past that is similar to the current bot's movement, you will be able to predict its future position by reproducing past movements.
Pattern matching and virtual bullets have proved the best targeting strategies so far (top 10 bots in eternal rumble use one or the other).
It has some advantages in front of virtual bullets:
(a) It takes less code to program a pattern matcher than a virtual bullets targeting system, so it makes it the best targeting solution for microbots.
(b) It is really powerful (more than virtual bullets) against bots that have repetitive behaviour, even if it is complex.
Of course, it has some disadvantages also:
(a) It needs lots of information about enemy movements, so it is more suitable for 1vs1 than for meele.
(b) Virtual bullets work better against bots with "almost random" behaviour.
Some bots of mine using pattern matching:
- Aspid and MicroAspid use a pattern matcher that uses linear velocity and angular velocity as data series.
- Mamba (you can only download it as a team: MambaTeam) is using an hybrid pattern matcher/virtual bullets system (need some tuning...) and uses VB or PM depending on which system has a higher success rate (ie. it is using VB to see if PM is working). The need for continuos data series is overcomed by a clever use of radars and information exchange (remember, they are a team).