Robo Home | Changes | Preferences | AllPages



Tim Foden (tcf)



What's special about it?

Nothing much.

Great, I want to try it. Where can I download it?


How competitive is it?

Roborumble rating: Drifter 20 -- 1965 after 2047 matches.

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 GuessFactor predicted bullets.

Version 20 changed this to remove the Shrapnel, and to directly "surf" the GuessFactor 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 DynamicClustering GuessFactor 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..3relative heading (8 segs) distance (4 segs)
4 lateral velociy (5 segs) distance (4 segs)
5 abs lateral velocity (3 segs)distance (6 segs)
6..8abs 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

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?

Out of thin air.

Can I use your code?

Nope. 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 WhiteWhales?

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?


Comments, questions, feedback:

Hey, I suggest you segment your gun slightly differently. First things to try are LateralVelocity (3 - 5 segments) and distance ( 5-7 segments,). Next useful is probably acceleration (accelerating, constant velocity, decelerating - make sure to use absolute values of velocity! =) ), then something like time-since-deceleration or time-since-lateral-direction-change. But don't take this as gospel, you might find your own combination that works really well =) -- Skilgannon

Thanks for the comment. I'll certainly be looking into making my gun better at some point. As you've noticed... at the moment it's pretty basic! :) I literally just made it the simplest thing that could learn to hit SpinBot. Since then, I've just been working on the movement. I've got it doing pretty well on the (original -- read easy) WaveSurfingChallenge BTW :) I'll post some results at some point in the future. But your suggestion will be noted well, and in fact, I can probably use it in the movement, to get my GF based avoidance working. -- Tim Foden

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited June 5, 2008 21:56 EST by Tim Foden (diff)