Robo Home | Shadow | Changes | Preferences | AllPages

Difference (from prior major revision) (author diff)

Changed: 41c41
 I've got the result, it doesn't not skips any turns more than usual, but I don't know if I run for 10 rounds because it can run at 1 TPS and throws OutOfMemoryError? at time 30 :-) ~~~~
 I've got the result, it doesn't not skips any turns more than usual, but I don't know if I run for 10 rounds because it can run at 1 TPS and throws OutOfMemoryError? at time 30 :-) --Nat

How did I get a big boost in melee gun performance without changing the fundamental way the gun works?

If you have a working DynamicClustering melee gun, here's the recipe:

• Speed it up. A KDTree (Simonton's is what I used) and a fast play-it-forward method are good bets.
• Compute the 10 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... :)

Just watching this gun work in a SampleBotMeleeChallenge is a treat. If you ever watched some melee battles, you will realise this gun implements several ideas you already had when watching them:

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 Aleph when SittingDuck is there just a little bit further asking to be killed?

Wasting energy is bad for survival: If it doesn't hit Aleph, will it still hit someone behind him and give you your energy back, or will it got to waste against a wall?

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

-- ABC

Amazing how you can see the problems, but the answer just doesn't click. I bet if you did some heavy BinSmoothing it would help even more for hitting those clumps. -- Skilgannon

Brilliant! My not-so-super-secret melee DynamicClustering minibot is currently being modified to use a play-it-forward algorithm, so I'll see if I can fit this in without making the ultimate SlowBot. =) -- AaronR

Just a question, how can you do a PlayIt? Forward with missed scan? Or you just interpolated? And does this work for GF, too? --Nat

Yes, you can interpolate. If you use a 'fast' play it forward method that uses uses absolute locations you can just linearly interpolate because any error will be completely corrected the next time a real scan is read. I wouldn't suggest using GF for melee, although it definitely works... Kev's bot for example. -- Skilgannon

I'm trying some DC-GF in melee. I know it definitely works because of Conriantumr?, which do interpolate, too. About the "And does this work for GF, too", I don't mean interpolate, I mean to project each GF and do same thing as ABS mentioned. Another thing, if I put 100 Shadows into one 1000x1000 battle, will it skip a ton of turns? --Nat

Yes, this method would work with GFs instead, the trouble is it won't hit bots like Walls Spinbot etc as well as PIF. You just need to turn it into an absolute angle, stick them all in an array or some other equivalent, and weight them by distance. -- Skilgannon

And about 100 Shadows.... well only one robot runs at once but Shadow may get crazy if trying to process all those enemies at once, but you know... how about you just try it? :D -- Rednaxela

I've got the result, it doesn't not skips any turns more than usual, but I don't know if I run for 10 rounds because it can run at 1 TPS and throws OutOfMemoryError? at time 30 :-) --Nat

Robo Home | Shadow | Changes | Preferences | AllPages