[Home]SandboxFlattener

Robo Home | Changes | Preferences | AllPages

My efforts at creating a movement system designed to give GuessFactorTargeting or other statistically-based aiming systems a flat or arbitrary curve. As a side effect, this may also make any form of AngularTargeting fairly ineffective. Basically, a movement to challenge SandboxDT's challenge - "Dodge This" (which is what I believe the DT stands for). So far (working on the movement itself now), I have a mid-sized MicroBot (just under 600 bytes) that may be able to be tweaked later into a NanoBot that doesn't hit walls, wins about 30-35 battles against SandboxDT out of 100, while keeping him down to less than 5000 bullet damage and committing more than 4000 damage to him using basic HeadOnTargeting. Just for comparison, that's comparable hitting and significantly better dodging than MogBot can do against DT, and DT gets about 8000 bullet damage against SpareParts. Still tweaking, I'll let you guys know, of course, if I master it. -- Kawigi

Highly interesting. Can you share some of the basic ideas behind the actual flattening? Since I have made some efforts in this as well and failed (more or less) I would be very interested to know more about it. How does it fare against Gouldingi's angular gun by the way? -- PEZ

After a little more tweaking, actually, I plan to try it against Gouldingi as well. The basis of it so far (as I have it now) is basically a random lateral movement that reacts to bullets being fired. Every time I detect that the opponent has fired, I pick a new Velocity (from -8 to 8) and move laterally to my opponent at that speed until I detect the next bullet being fired. Fundamentally, this should distribute the curve pretty well, in practical application, however, this also assumes that only one bullet is in the air at once. I've tried a variation where I finish the movement (keep doing my movement until the perceived bullet has past), but without that, it still keeps the important part of the curve fairly flat. The randomness of the movement is nice, as is the general intuitiveness to move laterally to my opponent. In that, it may be a good robot to test against non-bullet-dodging robots with good pattern-matchers (or with bullet-dodging ones using random factored aiming). I do know that it beats MogBot more consistently than SillyBot did (which thrived on fooling MogBot's pattern analyzation on change in velocity). -- Kawigi

I have been working on finding a good algorithm for curve-flattening for awhile now, and always the problem is the assumption that only one bullet is in the air. I think I may have found a solution though, using a graph-theory algorithm to find minimum trajectory. I'm going to start coding this solution tonight. I'll let you know if I have any success against SandboxDT with it! -- nano

I'm actually not doing so bad. One thing I've done that seems to make the flat area wider (and thus a little better) and still has me reacting to every bullet is to pick a number from -20 to 20, set my max velocity to the absolute value of it, and move in the direction of the sign. If I set the max velocity to something more than 8, it just goes to 8, and the result is I pick max velocity 'most' more than half the time, but still pick the middle stuff, too. This also helps counter the cases where I turn around due to the wall. I've also considered just slowing down his learning curve by changing my distance from him often (I believe he keeps his numbers based on distance as well). Anyways, still tweaking numbers, and not completely without success. If I get really close, I'll post some code, or put it on the RobocodeRepository or something. -- Kawigi

Cool! This feels like the firsts step to really challenge DT. We sure have enough guns in the community compraed to movement systems. =) -- PEZ

Lol, I suppose that's why I've been up to experimenting with bots that fool guns lately... -- Kawigi

Here's my progress thus far, with a little luck, maybe, I got this (keep in mind this is still a brutally simple robot using HeadOnTargeting that would probably be Micro if I took out the print statements). I'm a little proud of myself, although some robots actually beat SandboxDT sometimes:

These are with various tweakings of a few parameters. Also, it modestly beats both Mako and Gouldingi at the moment, just tested that. How does your gun do against DT? If it works to about a 16% hit rate from about 300-400 away, we may be able to stick it with my movement and watch DT fall.

-- Kawigi

I'm drooling here. Don't know what hit rate Marshmallow has on that range really, it's an avoider. But we can try. Send me the flatterner bot and I'll plug that movement in. pez@pezius.com. Or I could send you a Marshmallow jar with source if you think you'll have the time the following 36 hours or so, because I won't have much time. -- PEZ

I suppose I could try it on a modified version of SpareParts's gun, too, it just seems like it makes the little experiment a fairly large robot all of a sudden :-p If I have a reasonably high hit rate at a longer distance, the movement I have will actually maybe move further away. It figures out an optimal distance while it fights, and I imagine it gets that close because that's where it can basically dodge still and it can also hit well enough. If you wanted to send me some of your gun code to plug in, I may be able to find some time to stick that in, too, tomorrow afternoon. By the way, I always find myself amused when the day on the wiki changes at 4:00 here, but I know that's midnight in Sweden. Speaking of which, why aren't you in bed? (lol) -- Kawigi

Maybe the best/easiest thing to do would be for you to replace the current Lolita move in the Princess. Lolita guns are the same as in Lacrimas and that's about as good as a gun get. Princess is very modular and well designed. I'm not sure I have the latest Princess sources, but iiley has. Still if you send me the source of the Flattener I will plug it in in every bot I have this far. Marshmallow's VirtualGuns with SandboxFlattener move just might bring DT to a defeat. Say that last sentence three times. =) If the Flatterner learns the best distance, great! Marshmallow movement saves various parameters of it's current movement system between rounds, and we would do the same with Flattener movement. That way we can send up a bot trained on DT to the Rumble, while DT will have to learn it from scratch. See why I am drooling? =) -- PEZ

The reason I was burning midnight oil here was because I was working with a major experiment with Orca. It seems that maybe it doesn't hold though =( But it can still be because I have some bug in the code. I kling on to that hope. ScruchiPu's NN gun is plain awesome which fuels my hopes. -- PEZ

Lol, every bot you have, eh? I'll start getting sick of seeing this movement I think ;-) Actually, learning the best distance is kind of an interesting problem. Here's a basic exposition on how I do it:


<explanation>

I figured out that for my own statistical analysis, I was keeping such consistant tabs on both my energy and my opponents that I could effectively print out how much energy was lost and gained by both robots at any distance at intervals of 50. I pick a general range I want to test inside of (in my case, 200 to 550), and I look for a range of distances of 3 intervals (an interval of 150) centered somewhere inside of my test range that seems to be the most beneficial. This is a very one-on-one sort of approach here, because "beneficial" means basically that his lost energy + my gained energy - my lost energy - his gained energy > 0, or at least it's as high as possible. What I do to make sure I center in a good place is I add double that coefficient to the coefficient for the interval closer and the coefficient further away to find the "benefit" of the current distance interval. Then I just sort of try and stay in that most beneficial range. Unfortunately, it may take a round or two to find that distance, which isn't good against such a competitive robot, and it may be unluckily hit a few extra times when it's at the best range and thereby be prevented from finding the best range.

One interesting thing about this system (I've tried hard-coding the distance numbers, keeping half-way between him and the wall, followed the wall, etc) is that it's adaptive (and therefore might do better against bots it wasn't tested for), and that the amount of hits the robot can make from a certain range has a bearing on the movement - the defense isn't the only thing. Good movement should be a beast to hit AND make it easier to hit the enemy if possible. It seems like a SandboxFlattener with a good gun that works well in the long range may push the robot back comfortably where it may not get hit as much by most robots.

It turns out with SandboxDT, there's another reason to stay semi-close, though. It goes back to the assumption mentioned above that there is only one bullet in the air at a time. Well, if I'm relatively close (say DT fires a power 3 bullet every 30 ticks, He can only have one relevant bullet in the air if I'm closer than about 300), I can get closer to that, but each bullet is also more dangerous- DT can be more easily fooled, but he has leeway to be off a little bit.

</explanation>


It might be fun to see iiley's gun or Albert's gun on this thing, possibly even his new neural gun (we could break ground in two different ways with the same robot... has ScruchiPu tried using a neural net for movement at all yet?) -- Kawigi

While ScruchiPu's gun is amzingly effective it still can't do all that much about DT's movement yet. I think you shouldn't try to do two things at once. It's seldom a good idea. Better take tested guns like Marshmallows' or Lacrimas'. The good thing with Marshmallow is that it has 9 guns, each of which is quite effective against some bots and in the VG array it gets powerful. And they don't hog resources so that the tests of the bot is not all that tedious. Have you checked your Yahoo e-mail BTW? -- PEZ

This one appears to be just dumb luck, and unfortunately it got cut off:

Luck or not, HeadOnTargeting and 40+% hitrate is good. No version of no bot of mine has ever got better than 33% (well, out of luck and major change of movement It has sometimes got over 50%, but not consistently). Remember DT's saved guess-map though. To see how your bot does you should wipe its guess map and give it 200-300 rounds and then measure your bot over 1000 rounds or 10 100 rounds or however you do it. Of course it's interesting to know what the first 50 rounds or so are as well, since that what will happen in the first encounters on EternalRumble. Paul Evans wrote me an excellent checklist for testing on the RobocodeRepository forums (the Yo-Yo thread). -- PEZ

Could you ask Albert to battle his NN bot against your bot and make one of those pretty graphs he showed us. Then we could see if it was actually flat. Statistics are all well and nice, but an actual flat graph would be brilliant. -- Tango

I realised after i posted that, that it wouldn't be the same, as i want a bearing vs frequency graph, not bearing vs time, like his are. Can anyone get a nice graph made? -- Tango

Sure: /Graphs. -- PEZ

But I would like to see Albert style graphs as well. Because as good as the current SandboxFlatterner? movement is it must contain some rather predictable aspects because Orca's NeuralTargeting, which is most often good-for-nothing, rather quickly gets 14+% against MakoHT. Maybe ScruchiPu is even better at exploiting the predictability? -- PEZ

You can find the graphs in the following URL: http://www.geocities.com/albert_pv/images.html It seems that some times ScruchiPu is able to predict the enemy position quite efectively, but other times it gets confused. I think it is because right now the network is unable to predict accurately the enemy velocity when it uses intermediate velocities... In any case ScruchiPu beats MakoHT, even if after 90+ rounds it was still learning. -- Albert

ScruchiPu (to your credit) is more than a fancy gun - all your bots also have a pretty good movement (and I imagine many of them have similar movement). Pit ScruchiPu with someone its own size (well, I was going to propose FloodMini, which is actually smaller than MakoHT), a robot that also saves data and maybe with a more generally practical gun, and you'll see something a lot closer to ScruchiPu over the long-haul. While against some robots, FloodMini's movement is slightly inferior to MakoHT, it's equivalent in essentials, and it should give you a run for your money I suspect. -- Kawigi


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 18, 2006 22:05 EST by GrubbmGait (diff)
Search: