Thread history
Time | User | Activity | Comment |
---|---|---|---|
No results |
> 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.
Sorry, but I'd call this wave surfing. It's a broad category of movement, tho, and that doesn't change how similar or different what you're doing is from everyone else. Curious to read more when you write it up.
That sounds similar to what I did in Neuromancer, although there I predict until all waves have passed. I generate movement options by calculating paths to reach all the points in a circle around the current location. It is definitely Minimum Risk, but the inclusion of wave-based dangers makes me call it a variation of goto wave surfing.
If it takes in account every single bullet in the air, then it is a form of [enemy] virtual bullets. Which does the same thing as waves, except in a more complicated way. It was the most used data structure, until someone had the insight of representing shots as circumferences growing in radius over time.
I use waves now, but also store a collection of headings inside the wave to cache k-NN search results. Combine a circumference and a heading and you have an exact x,y coordinate to use in danger estimation. Combine all circumferences with all headings and you have all x,y coordinates of enemy virtual bullets flying in the battlefield.