Head on gun in melee

Jump to navigation Jump to search
Revision as of 11 November 2015 at 21:19.
The highlighted comment was edited in this revision. [diff]

Head on gun in melee

Folks, I have an issue which drives me crazy. How come that HawkOnFire with only head on gun have a high bullet bonus in melee? My EvBotNG is in top 20 in melee, yet when I run a simulation with HawkOnFire included, the bullet bonus it gets is just a touch higher than for Hawk's. Yes, EvBotNG survives way more often, so the survival bonus compensates.

When I try to use only the head on gun myself, my performance became even worse than the Hawk's one. I looked at the code and Hawk has only the head on gun. So HOW does it pull this miracle?

    Beaming (talk)04:53, 6 November 2015

    I'll have to think about it more, but off the top of my head, are you using the same bullet power? HoF uses power=3.0 a lot, which is more likely to give high bullet damage bonus. Also, if your bot's more survival oriented, it might keep more distance from opponents, which would cost you bullet damage in general.

    And big congrats getting to #14 in Melee! Some very tough competition that high in the rankings.

      Voidious (talk)06:20, 6 November 2015

      I think you are right, the average distance must be the parameter in question. How could I forget about it.

      Also, thanks for warm words with my humble progress. One thing in my mind is anti Diamond gun :) It is amazing how your bot survives with relatively short motions around a given conner in melee. I am thinking about a gun which instead of the most common GF would aim at the most visited location. I think it would score quite well against Dimond. But from the other hand, it looks like your bot is quite unique in this regard.

      Do you have any recollections if this was tried in the glory days of robocode?

        Beaming (talk)03:14, 7 November 2015

        I don't remember anything like that. There were schemes like that for movement, I think, with different areas being considered safe/unsafe.

        One thing I found helped a lot in Neuromancer was the bullet power formula, and taking distance of the target I was aiming at into account. Close targets get lots of bullet power, further targets get less bullet power. If lots of targets are bunched together, they also get lots of bullet power.

        Good luck. I've been tempted a few times over the last few weeks to pull Neuromancer out and implement some of the features that are missing. If I do that I'd also like to open-source the current version of Neuromancer, since it seems nobody else has seriously tried a surf-everybody strategy.

        It's very interesting watching the different movement strategies of different bots - Diamond sticking in the corners and picking off anybody who approaches, Shadow finding empty spots and aggressively clearing out close bots, Neuromancer skipping through the middle of the chaos and somehow dodging bullets.

          Skilgannon (talk)08:09, 11 November 2015

          The bullet energy formula is probably the most important ingredient, but every time I touch this even a little, my score drops down like a rock.

          I am actually surprised by how few bots aim at Diamond in melee. It dances in a corner with a relatively simple triangular path with short motions. I would think a pattern matching gun should follow it quite well. But yet Diamond tend to out survive quite a lot of bots. But my old pattern matching gun is so sloooow, I did not even put in EvBotNG. From other hand, Diamond seems to be quite unique with this corner hugging strategy, so having a special gun just for it would not bring a big score boost.

          Also, I think my old EvBot is dodging everyones bullets, it did not do surfing in the canonical form of predicting the bullet hit position, but it did take in account every wave. With new bot,I am hitting the skipped turns a lot, since I do exact path calculation and precise intersection now. I have a feeling that I do it wrong and it should not take so much CPU. But iterative procedures sucks, I should pull out my linear algebra skills and do non iterative hit position calculation.

          As for Neuromancer, this one tend to survive in impossible situations. I use to think that you knew some hacks and actually see the bullets :)

          Seeing Neuromancer in the open-source would be great. I do not see what stops you, I would not expect literate copies from true developers. But it would be loverly to see the tricks you use.

          But even more exiting, would be to see new wave of discussions which comes with new developments. The wiki seems to be very quite lately, with not much going on.

            Beaming (talk)16:56, 11 November 2015

            Strictly speaking, Diamond doesn't have any deliberate corner movement strategy, and he certainly doesn't have a hard-coded triangular pattern that he follows. It's just a well-tuned minimum risk movement with some randomness based on recent locations. So hopefully it looks more predictable than it is. :-) One thing he does is precisely predict a few ticks ahead to avoid hitting walls, so his wall smoothing is pretty graceful and that may help him stay in the corners (where it's safer) and still avoid recent locations. Looking at it now, his melee movement is actually a very small amount of code: MeleeMover.java.

            As for what's been tried before - my attitude is generally that everything has been tried before ;), but that doesn't mean it's not worth pursuing. Those attempts could have been suboptimal or outright broken and the landscape of competition has changed over time. If I were climbing the Melee ranks, I would certainly consider specialty guns for the top bots. And I have certainly considered it for Shadow and DrussGT in 1v1. :-)

            But no, I don't remember anyone trying that. oldwiki:AreaTargeting came to mind, but looks like something different. Maybe you could formulate something like a GF that's based on a corner / quadrant of the field, the way a GF assumes orbital movement and factors out orbit direction. Like polar coordinates from nearest corner, with 0/north being towards the center of the field.

              Voidious (talk)17:18, 11 November 2015

              I am shocked. Am I right to observe that there is no bullet/wave dodging in melee code? I.e., the bullet avoidance is all in the randomized motion.

              Does it mean that I over think the problem, and should stop wasting CPU on bullet tracks predictors? This is somewhat depressing, but I've seen HawkOnFire as surviver of a melee, so it should not be such a surprise.

                Beaming (talk)21:51, 11 November 2015

                Both Neuromancer and DemonicRage use some kind of bullet prediction - Neuromancer full waves, while I believe DemonicRage just predicts a few simple kinds of targeting. Diamond is the outlier among the top 3 for using a simple minimum risk movement that does not use waves.

                  Skilgannon (talk)21:58, 11 November 2015
                   
                   

                  The reason I didn't want Neuromancer to be open source was because I wanted there to me more than one implementation style of surfing for Melee. Shadow and SilverSurfer had two very different styles of surfing, but when rozu open-sourced Apollon, everybody took that style (true-surfing) and nobody touched goto style until I came along with DrussGT. Perhaps though, by open sourcing Apollon it kickstarted the wavesurfing movement for 1v1 which may have never happened otherwise. I'll release an open version of current Neuromancer in a few weeks, that will give me some motivation to get these features added =)

                  It is quite possible to get a fast Play It Forward - the gun in Neuromancer depends on it.

                  And I think you may be disappointed with how simple Neuromancer is =) I suspect those who read through it will go "Oh, obviously." and proceed to write their own equivalent from scratch, much like others have done with the BasicSurfer.

                    Skilgannon (talk)21:01, 11 November 2015
                    Edited by author.
                    Last edit: 22:19, 11 November 2015

                    Well, I am looking forward to get my "Aha" moment. I you kept us in suspense for long enough :) Who knows, may be someone will use it as a spring board to beat the king.

                    I was trying to avoid PIF, since I would have to redo a lot of code. But deep inside, I believe PIF is more physical than GF targeting. I tend to agree with Voidious that Displacement Vectors in melee make more sense. PIF seems to be a gun which would be in alignment with this idea.

                      Beaming (talk)22:06, 11 November 2015

                      I like PIF for melee because it means I don't have to make assumptions that bots are moving relative to me, or their nearest enemy. I find in melee multiple enemies and walls can all affect movement, so the assumptions for GF and displacement vectors don't necessarily hold true. Of course, they are much faster.

                        Skilgannon (talk)22:10, 11 November 2015