Taking your own movement into account when targeting?
The highlighted comment was created in this revision.
While in melee PIF is more popular, in 1v1 most people (I guess) is using something similar to GuessFactor, where lateral movement is assumed. And whether you are scaling based on theoretical MEA or orbital MEA or precise MEA, we always assume that enemy movement is only relevant to our initial position and scales as if it moves in a circle — which is not true for real battles.
Sometimes an opponent that always moves perpendicular to you moves in straight lines, not circles, when you keep moving perpendicular to him as well. And for anything that controls attack angle, they won't move in perfect circle either. We've been already adding lat, adv, distance etc. to help our gun distinguish these situations, but what is currently lacking mostly, is about our own movement (although I see DrussGT is adding mirror offset). The lack of attributes about our own movement cannot be compensated by more data, and it can neither be made up by using more prediction power, e.g. PIF.
If we can eliminate the effect of wall (e.g. the use of precise MEA) & our own movement to enemy movement, the accuracy of our guns could ascend to an even higher level, where only the weakness (the flaw of being flat) of enemy is learned. I see this as the holy grail of guns, where each choice affects greatly how good your learning algorithm could perform and with this holy grail, any learning algorithm should reach its theoretical limit.
What I came up with is, instead of scaling bearing offset arithmetically on GuessFactors and some form of MEA, we run some simulation taking walls and our own movement into account, then treat GuessFactor as the ratio of time of the simulation it will reach, e.g. 1.0 as running constantly, and 0.5 as it stops after half of the simulation time. Then 0.0 would be it hits the brakes immediately.
With this approach, GuessFactors could be treated closer as "run time after bullet fire", rather than just some "guess". We've been already using precise MEAs to better simulate this behavior, but imo we could go even further.
And even further — we expand GuessFactors to a series of velocity each tick before hit. And run the simulation to decide attack angle while using the series of velocity from log. This will be something between PIF and GuessFactor, but with better accuracy and learning speed.
In those situations of predicting my own movement I always wonder about two cases:
1. true surfing, not sure about my own movement 2. new data coming, decisions changing, but the bullet will be already fired, I cannot regret (this should not be that impactful, though)
I like this approach, the PIF thing would be like the simulation of lateral velocity 1v1 string matchers use, but on top of a more complex curve instead of a circle.
1. You are partly sure about your own true surfing movement, as you already know most of the information that determines the intersection point.
2. New information definitely can't affect past decisions, but you can always do your best with existing information.
At least before our bullet hit, our movement is mostly determined by the bullets already in air, which is a good news.
If the optimal point is somewhere between my current point and moving full speed clockwise, for example, I really don't know the intersection point if I allow hitting the brakes. I know the direction, though, which is sufficiently relevant to do some reasonable approximation, which is OK for this use case IMO.
You can always play your own movement forward right? Although that's too expensive. Anyway, some fast approximation is ok, e.g. Your movement is moving mostly in that direction, and it should be safe to always use that direction instead as approximation, as what you said, you know the overall direction ;)
It doesn't assume orbital movement nor enemy circling you. The only thing Guess Factor Guns assume is generally symmetric movement. By the way, PIF with Lateral and Advancing Velocity works very well.
The question is: how big is the subset of bots which it can be used against?
In 1on1 we have
- Simple bots moves in what ever pattern they have independent of you and your position. - Wave surfers do not care about your position when you far away. - HawkOnFire type make the decision once per many clicks and does it based on one point.
So it might work against - Mirroring bots - Rammers - Very sophisticated bots on top of the rumble.
The first two categories usually have relatively small APS already, so there is not much to shave off, the later (i.e. top bots) has to tiny fraction of the population.
Also, surfers which use averaged in time enemy velocity, are sort of already calculated where you are going to be. Since they see where you were and where you are heading.
The problem with melee is that most of bots are moving with respect to their nearest neighbors and not your bot.
I am not sure that a bot can afford to recalculate its path in melee every click, so it is likely that the movement decision is taken on a current to fire time situation and than it is not updated for a while.