Drifter

From Robowiki
Revision as of 23:37, 14 June 2009 by Synapse (talk | contribs) (→‎How does it fire?: applied table formatting)
Jump to navigation Jump to search

/Results

Drifter
Author(s) User:timfoden
Extends AdvancedRobot
Targeting Dynamic Clustering, using Guess Factors
Movement Wave Surfing/Go To with Visit Count Stats
Current Version 29
Download

What's special about it?

Nothing much.

How competitive is it?

Its pretty competitive. Version 26c got into The 2000 Club on the old ratings system. On the current rating system version 29 has a 1892 rating (DrussGT 1.3.3 - 125 elo)

Current roborumble rating: Drifter 29 -- #30, 1892 elo (2061 Glicko-2).

For ratings for older versions, and for results in various challenges, see the /Results page.

How does it move?

Before version 20, Drifter was a GoTo type of bot, with Shrapnel Surfing against HOT, Linear, Circular and Guess Factor predicted bullets.

Version 20 changed this to remove the Shrapnel, and to directly "surf" the Guess Factor data. It makes up guess factor data for the HOT, Linear and Circular predicted bullets, and basically does a simple form of CrowdTargetting to merge it's buffers into one.

The arena area is divided up with a 25 pixel grid. The grid points are initialised by setting some of the points to 1. These points are: the points closest to the centre of each opponent, and the points halfway between each opponent. A flood fill algorithm is then used to set all adjacent points to 2. This is then repeated with 3, and so on, until the whole grid is filled. Thus this gives an idea of where on the grid is close to and where is far from all dangerous places to be (higher numbers are better.)

After the fill algorithm has completed, points near opponents are set to -999999, so as to avoid hitting them.

It then does a search for the path with the highest value.

It searches only 37 points from an (-8..8, -8..8) square. The point are (successive diamond shapes where manhattan distance = {0, 4, 8, 12}, and only even points (-8, -6, -4, -2, 0, etc.)

Fot each point to be searched, Drifter models how the robot would move to get to this point, and adds up the grid scores for each tick. The score for each tick also includes a negative bonus for points intersecting parts of a wave.

How does it fire?

A Dynamic Clustering Guess Factor gun (with 31 sectors). The available angle ahead and behind is calculated using a simple lateral acceleration model to predict reality a little better than using the simple asin(8 / bulletSpeed).

Version Segmentation
1..3 relative heading (8 segs) distance (4 segs)
4 lateral velociy (5 segs) distance (4 segs)
5 abs lateral velocity (3 segs) distance (6 segs)
6..8 abs lateral velocity (3 segs) distance (6 segs) lateral acceleration (3 segs)
11..13 abs lateral velocity (3 segs) distance (5 segs) lateral acceleration (3 segs)
14..17 abs lateral velocity (3 segs) distance (5 segs) lateral acceleration (3 segs) distance ahead

Firepower: dist <= 100 -> 3 dist > 100 -> 2.5 max firepower = getEnergy() / 20

How does it dodge bullets?

See How does it Move above.

How does the melee strategy differ from one-on-one strategy?

No difference at this time.

How does it select a target to attack/avoid in melee?

Fires at closest opponent bot.

What does it save between rounds and matches?

GuessFactor values are saved between rounds.

Nothing is saved between matches.

Where did you get the name?

No reason. Just made it up.

Can I use your code?

Nope. It's not available right now, as it's too embarrassing to put on public display! :)

What's next for your robot?

Improvements to anything that can be improved. :)

Does it have any White Whales?

Loads... For example (Drifter 13):

Krabb.sliNk.Garm 0.9rb -22.7 abc.Tron 2.02 -25.5 areb.Union 1.06 -20.3 chase.na.Seraphim 0.052c -34.2 !! cx.micro.Smoke_0.96 -25.5 intruder.PrairieWolf 2.61 -29.7 !! voidious.mini.Komarious 1.78b -20.7 mladjo.Grrrrr 0.9 -19.2

What other robot(s) is it based on?

None. However, I've extensively read the wiki, so lots of other people's public ideas have been used (but no code at all).