[Home]DiveProtection

Robo Home | Changes | Preferences | AllPages

Difference (from prior major revision) (no other diffs)

Changed: 39c39,40
*** Yes I know i'm not Voidious, but pixel perfect would be quite a bit less accurate then what most do. BotWidth?, really depends on the angle the enemy is at, and the distance. Your take it your using the bot width to generally reduce the number of bins you use the closer a bot is to you (like some bots do, such as CassiusClay IIRC). Generally speaking BotWidth? if its an angle is normally done as atan(40/distance). However if you wanna get an exact width, its something like 40 / max(abs(sin(AbsoluteRobotHeading?)),abs(cos(AbsoluteRobotHeading?))), then just divide that by the distance and atan it to get the angle. I wouldn't trust my memory, but thats just how I do it if I wanna be picky. --Chase-san
*** Yes I know i'm not Voidious, but pixel perfect would be quite a bit less accurate then what most do. BotWidth?, really depends on the angle the enemy is at, and the distance. Your take it your using the bot width to generally reduce the number of bins you use the closer a bot is to you (like some bots do, such as CassiusClay IIRC). Generally speaking BotWidth? if its an angle is normally done as atan(40/distance). However if you wanna get an exact width, its something like 40 / max(abs(sin(AbsoluteRobotHeading?)),abs(cos(AbsoluteRobotHeading?))), then just divide that by the distance and atan it to get the angle. I wouldn't trust my memory, but thats just how I do it if I wanna be picky. --Chase-san
*** Like Chase said, there are some trig based ways to get more exact BotWidth? calculations, but I think the great majority of people just use 36 or 40. A couple pixels probably don't matter much (if at all), but not using BotWidth? at all does matter, I think. In my gun, I just use 36 as BotWidth? when waiting for my gun to be aimed before shooting and don't use BotWidth? in any of the stats. I used to use one of the trig-based, more exact methods in my surfing, but re-reading Dooki's source code now (since the full rewrite), I'm just using 36 there, too. PEZ always told me it probably didn't matter to get that exact - he's often right about such things =) -- Voidious

When WallSmoothing it can be important to make sure you don't dive into simple fire at close ranges. This is dive-protection. I have it in all my WallSmoothing bots some of which are Aristocles, Tityus, Pugilist and CassiusClay. Though CC is the only one trying to do this with some finess. -- PEZ

Rumour has it that some of the WaveSurfer's don't need dive-protection. Pulsar and Jim comes to mind. Gives us some details dudes! -- PEZ

What I do in CassiusClay is to always evaluate surfing_danger for three options (forward/stop/reverse). I also give the options for forward and reverse a dive_danger which, when it kicks in, is always much higher than the surfing_danger values. This has the effect that when forward or reverse are dagerous from a diving point of view then the bot is left with the two other movement options. To avoid getting stuck in a corner with an enemy close I also have a case for when both forward and reverse diving_danger is flagged for. Then the bot chooses the option wit the lowest diving danger. (That, is, it doesn't even consider the stop option.) Sounds complicated? Then it's just me not succeeding in explaining it. It really is quite simple... Ask me and I'll try to explain it again. -- PEZ


Chat

Well, I've improved my surfing. But I still have a nasty problem with diving into the bot. Cost me 5 rounds against bot A. Ick. -- Alcatraz

Do you have any mechanism to avoid very short distances? If no, i recomend trying one... In SS i had no choice but implementing a if (dist < 150) then Run-Like-Hell-Away-From-Enemy. WaveSurfing becomes pretty useless in very short distances, actually i think that 200 distance is the least that you should try to stay... -- Axe

There is code to tell it not to turn forward into a bot, but it still tries to surf and that can screw it up. Guess I should tell it just to ignore the wave surfing until at a safe distance. -- Alcatraz

Thats what i do... -- Axe

Anyone following along the windles of my above explanation should understand that that's not what I do. Also. If i understand how SilverSurfer does it, that's not what it does either. But clearly Axe should know this better than I do. =) -- PEZ

Cyanide is supposed to do it your way, PEZ, but apparently doesn't. Though thinking about that, I realize that I only increase the dive danger if it is very near the walls, because that's when it's usually a problem. But it sometimes dives into the stationary bot when it is not right on the wall, but is instead coming out of a corner. -- Alcatraz

I think we might speak about two different things here. One is dive-protection and the other is close-battle-evasion. I think maybe Axe is suggesting that when you're very close then skip surfing and just run! I still don't do that. As long as there are waves to surf, CC will surf. On the matter of dive-protection; If the WallSmoothing will bring CC closer than 260 then CC will only allow very little smoothing before raising that danger-flag. And the diving_danger is set to amount_of_smoothing_asked_for * high_number. That way, if cornered, CC wikk still try to slip out using the widest escape door. -- PEZ

I've mentioned this to others, and possibly elsewhere on the wiki, but it can't hurt to mention it here. My form of dive protection in both Dookious and Komarious is very, very simple. My WaveSurfing algorithm in both is based on the one that PEZ uses in CassiusClay, evaluating forward and reverse (and in Dookious, stop) positions and taking the lowest danger one. Well, in that prediction, I make note of the distance I will be from the wave source when that wave hits, given my WallSmoothing. I then multiply the danger for that movement option by (currentDistance / predictedDistance) ^ somePower. In Dookious, I vary that power based on various things; in Komarious, it's 4. I kind of like it, it seems elegant and well rounded, it's also part of my general distancing, and I have certainly found it to be (or forcefully tweaked it to be? =)) quite effective. -- Voidious

What I do in Druss is check what the maximum danger bin my BotWidth? covers at that distance is. Thus, if the predicted position is too close, it will (hopefully) cover a more dangerous bin (among the many it covers), and avoid that position. I also set the 'default offset' to vary depending on distance. It's quite funny to watch it doing almost straight towards-away (against a wall) surfing against DoctorBob, with DoctorBob still getting a 0 hitrate. Against HawkOnFire it just does big orbits, until it gets pinned, and then it backs up. -- Skilgannon


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited August 19, 2007 19:30 EST by Voidious (diff)
Search: