DangerPrediction
The highlighted comment was created in this revision.
From the sounds of it his "DangerPrediction" is very similar to MinimumRiskMovement, except he evaluates the danger along every point in a route. Which is very similar to WaveSurfing except without waves. He would have to have some other method for calculating the risk however.
Also, not sure how those images prove that the robot is open source. The source being in the Jar and a FLOSS License is usually sufficient.
Please stop posting images, they are of no help. Also Robocode cannot `decompile` anything.
Open Source does not refer to the availability of the source code, but the rights given by the author on how that code can be used. In short, it doesn't matter if the source is included in the JAR or not. Since Wolfman has not designated a license (that I can find), this source is copyrighted (closed source) by default.
Yup its closed source, I didn't realise that Robocode packed source with the robot by default - how do people stop this?
I'm not too bothered with people looking at the code, I did say I would write some more details on how I did the movement once I had it working better against more complicated guns, but I don't want people just copying my hard work directly line for line!
Once I've written it up people can re-implement it if they choose but Chase has it pretty much working correctly. I do use gun-waves to keep track of enemy bullet positions, not guess-factors. I'm not sure if it will ever be as effective as true wave surfing but it should work in melee without any alteration as long as I generate waves and bullet positions for all bots not just one target!
There should be a checkbox for including the source when you go to package the robot. Gun-waves usually refer to the waves your gun creates for targeting purposes. I think the other is usually just referred to as enemy waves.
But it is possible to use waves without guess factors, but it makes the process more complicated.
I also use waves to keep track of enemy bullet positions, but I use guess factors to guess bullet's headings. The wave works as a collection of incoming virtual bullets. They all share the same center, fire time and bullet power, but each virtual bullet has a different heading.
Yup thats pretty much how I am using waves. Each wave has a payload that currently is virtual gun data, but I can add Guess Factors in the future. What Agent Smith doesn't do is surf the waves in a traditional sense for movement. It uses predicted x,y positions of enemy bullets over the next 50 ticks to work out a safe path over the those 50 ticks.
It will eventually use guess factors to work out where the most likely enemy bullet positions are but that is something I will work on next. At the moment it simply predicts head on, linear and circular bullet positions simultaneously without knowing which one is being used.
I tried something like that once, I found it wanted to drive away from the enemy along the path of the bullets far to often, rather then the much safer perpendicular movement. But that was well before I managed to get beyond about rank 50.
I don't think mine has that problem as long as it can track predicted bullet positions accurately. I.e versus linear, head on and circular targeting its pretty damn effective. I've yet to implement guess factor targeting. Once that is in I can add it into the movement to try to predict bullet positions of more advanced targeting methods.
It'll be interesting to see if that helps things or not! :)
If you make it dodge GF Targeting, it will be a Sandbox Flattener, and then it is only a small step to surfer. A good SBF should get you to into the top 100.
Once you get a SBF, it is only bullet hit detection away from being a surfer.
> it is only bullet hit detection away from being a surfer
What do you mean by this please? I was going to be using bullet hit detection for Guess Factors in movement, so I'm not sure how doing this makes it a wave surfer?
Cheers!
Wave surfers use onBulletHit and onBulletHitBullet events to learn how the opponent is targeting at you. It is a lot more versatile and adaptable than simply assuming the opponent is using head-on, linear or circular targeting.
Ahh right, sounds like there is a bit of miss-naming here. I would say that what you described was nothing to do with wave surfing, and is in fact a technique for predicting enemy bullet positions more accurately - which is what I intend to do next.
Wavesurfing I would say is taking that predicted bullet information and building up a "wave of danger" which you then use to move. This part is different in Agent Smith because it does not use one dimensional (along a line, guess factors) "waves of danger", instead it considers 3 dimensional data, predicted bullet x,y at time t and using that to choose its movement path.
Considering you know the fire-time and bullet power, surely you can then eliminate all points not on the wave as possibly holding the bullet at that point in time. So it seems like wavesurfing to me.
Yes, I use waves to work out predicted bullet positions at time t. What I don't do is use that information to build up a 1 dimensional array of danger values and then surf those danger values left or right.
Instead I use the absolute bullet positions relative to my bots predicted position to work out a path in the future that maintains the minimum possible danger. It is more of a minimum risk movement that wave surfing.
I don't restrict the predicted positions to left or right, I try numerous possible paths within the movement sphere of my bot. Each of those paths I predict up to 50 ticks ahead into the future. This is the key point - because I predict precisely the paths for 50 ticks the path may move into what a wave-surfer would traditionally call a danger zone but my bot is not in danger because it knows that the path it is traveling on will take it out of the way by the time the bullet hits.
Because it does not use a 1d array of danger values it takes into account every single bullet in the air at the same time, which means it can be extended for melee very easily.
Once a path has been chosen it will follow that path (with no need for recalculation) until a new enemy bullet has been fired, at which point it recalculates again.
Yes I believe it shares some similar ideas to wave surfing but I think it is different enough to be called a different technique.