Talk:MoxieBot

From Robowiki
Revision as of 18:04, 6 February 2011 by GrubbmGait (talk | contribs) (wow, this rocks!)
Jump to navigation Jump to search

Very neat - I like how you refer to the Bullet Shadow idea. The notion (in a vague form =)) has crossed my mind as something an elite wave surfer might want to try in a really tight spot (like in a corner + 2 bullets in the air), since not getting hit is so much more important than hitting the enemy when you're vastly outscoring them and trying to optimize <% total score>. Best of luck with MoxieBot! I might have to add some bullet shielding detection if you start beating Diamond. =) --Voidious 06:22, 4 February 2011 (UTC)

Don't worry about me...Worry about if DrussGT starts using it! :) Ncj 04:27, 5 February 2011 (UTC)

I also really like the sound of this. I'm actually wondering about incorporating this into DrussGT. I'd check whether there is anywhere I can get with a coverage of >95%, and if their bullet power is > 0.1, and if so take that option for this wave. I'm also wondering if you can increase your coverage by waiting to fire until a bit later, or whether the earlier you fire the better your coverage is sort of thing. By mixing this idea with imaginary waves I think the coverage might be able to be increased substantially. Anyways, nice work on this bot =) --Skilgannon 08:50, 4 February 2011 (UTC)

Thanks! There are definitely situations where you can get that kind of coverage if the enemy is far away and you get to move in a straight line at top speed. In the simple case where you move in a straight line to the point at which the wave will break, then I think that firing earlier will get you the largest shadow: The angle at which you need to fire will be the same no matter when you fire. This means the angle between your intersecting bullet and the enemy bullet is constant regardless of time, as will be the component of your bullet's movement perpendicular to the enemy bullet's movement. The angular width of the bullet shadow is a function of this perpendicular component and the distance from the wave origin of the bullet intersection. As the perpendicular component is constant, the only way to get a larger angular width is to intersect the wave earlier, which means firing as soon as possible. Of course, the point you intend to move to is under your control...Actually, this gave me some ideas for selecting a better location than I do now. Ncj 04:24, 5 February 2011 (UTC)

I've been thinking of colliding bullets also lately, but from a slightly other perspective. If bullets collide, you know where the enemies bullit was heading, so you could move there indeed. Not specifically because that is a safe spot, although a nice side-effect, but as a sort of 'smoke curtain' to influence the gunnery of your opponent. He would register this spot as a peak, while normally you wouldn't had moved there in the first place. I feel like having a card in my sleeve, while wearing a t-shirt. --GrubbmGait 00:56, 5 February 2011 (UTC)

Ok, I've seen Moxiebot in action now, and it is far more effective than I imagined. It is also very hard to counteract on it, not like BulletCatcher that is easily fooled. Congratulations on successfully implementing this idea! --GrubbmGait 17:04, 6 February 2011 (UTC)

Very nice. For a while I've been thinking about integrating Bullet Shadows into a surfing movement, but this is the first time I've seen a bot with some particularly nice use of them. Also, I like the term "Bullet Shadow", I never had a good term for it before. Some thoughts:

  • Perhaps it would make sense to only have it move to positions with large shadows, instead of occasionally going to small shadow locations?
  • Looking at results here, it seems like my bot Midboss does particularly well against this. I'm pretty sure it's because of Midboss' rather smart bulletpower selection. Perhaps MoxieBot should fall back to another strategy when the enemy is firing small bullets?
  • Very impressive looking in battle! :)

--Rednaxela 01:09, 5 February 2011 (UTC)

Thanks for the kind words and suggestions. I've spent some time today looking at the rumble results, so I have quite a bit to respond with:
  • First, Midboss really crushes MoxieBot! I agree that I need some kind of better movement, but it's hard for me to determine whether to try improve the bullet shadowing or the dodging. In order for MoxieBot to win (assuming the enemy is firing bullets of power > .5), the enemy needs to either miss or have their bullet intercepted > 88% of the time. In other words P(bullet aimed wrong) + P(bullet aimed right)*P(bullet intercepted | bullet aimed right) > 88%. Unfortunately, strategies that increase the bullet shadow generally make it easy to figure out where the bot will be, but random movement means that the bullet shadows are often poor. Right now, both dodging and bullet interception hover around 60% against many bots, which works out to be right around the % needed. A long term goal is to improve one of them substantially, and keep the other percent above 50%. Out of curiosity do you know what kind of dodge % a random movement algorithm with a flat profile should get?
  • I took a long look at Midboss to try to figure out what it's doing, as compared to some of the other top bots. My initial guess was the same as yours; that Midboss used a lot of low power bullets, which raise the threshold above the 88% miss needed for the higher powers. However, the effect only really becomes significant below a power of .5, and Midboss used a power around 1.5 most of the time. Additionally, other bots fire low power bullets too, often even more frequently than Midboss, but not all share in the success. The biggest difference in behavior seems to be that Midboss hangs around the middle of the battlefield, whereas other bots like to hug the walls. On average Midboss shoots from around 400 pixels, wheras the wall huggers shoot from around 550 pixels. I believe that this increases the accuracy of your bot a few percent, dropping the overall measured P(miss or intercepted) to 82%, well below the 88% MoxieBot needs, which ultimately means that MoxieBot goes down in flames. I hope this made some kind of sense!
--Ncj 08:58, 5 February 2011 (UTC)
Well, a distance of 400 is a reasonably popular distance for many bots. As far as why Midboss does better against it than ones that always shoot below firepower 0.5, I still suspect it's bulletpower selection plays a part. To fill you in on what it's doing, it simulates/estimates the exact scoring of the battle, given:
  • current energy of both robots
  • current hitrate of both robots (normalized for distance)
  • current firepower the enemy seems to be using
  • bullet damage thus far (factors into win/loss bonus)
  • for a wide variety of possible bulletpower values for itself to use
This means that against MoxieBot, it'll choose low bulletpower when it figures it needs to in order to survive a particular round. The time it was using higher bulletpower, was because it's algorithm expected it to be likely enough to survive the round, that doing more damage is worth the risk. Does it seem to you that might explain it?
--Rednaxela 17:44, 5 February 2011 (UTC)