Hello,
I’m quite sure we found the real cause for this issue, which is in fact the unexpected behavior of the various velocity variables which are still being calculated, even if the airplane is frozen, and confuses vPilot, which uses those velocities to predict the airplane movements, since the networks is updated at a much lower frequency than the visual frame rate.
This thanks to @1582549, who took the time to continue my tests and recognize the problem exactly.
While the real root of the problem is this strange behavior of the velocity’s variables, that don’t seem to honor the “freeze” variables, so it should be “ideally” fixed by Asobo (if they did, neither GSX or vPilot would need any changes), I highly doubt they’ll consider worthwhile working on it so, it’s going back to us.
So yes, this can be fixed from both sides:
-
From GSX, by constantly rewriting the pitch velocity to be 0 at every frame for as long the plane is kept frozen
-
From vPilot, if there was a way for it to know the airplane has been frozen by GSX, so it could momentarily ignore the pitch velocity (just consider it to be 0) in the prediction calculation.
I already posted a slightly modified GSX Pushback code that everybody on our forum can try, which adds this change. The link is below, in that post on our forum.
It’s not final, because the pitch velocity is only set while the airplane is moving (it’s like this to make it very quick to change), a better way would be continuing rewriting the variable for the whole procedure instead. But it would be useful to know if it fixes the issue for you. Of course, you must try a Towbarless tug, because with a Towbar, I guess the problem wouldn’t happen, since the plane is not pitched up.
However, the GSX approach will put extra strain on the user local system, because the pitch velocity must be constantly rewritten at every visual frame, so I would rather not be doing it, unless strictly necessary, because we are already facing issues caused by too much traffic on Simconnect (by the combination of all Simconnect clients used) right now, so we’d rather not add something that will increase it further.
Another approach might be a way of signaling GSX is pushing, so vPilot could know that, and just consider the pitch velocity to be 0 during that time, no reason to extrapolate with a value that’s surely won’t change, because the airplane is frozen.
I made a proposal how this might work:
But it’s based on very sparse and quick research about how the Vatsim protocol works, so I have no idea if this makes any sense.
But if it does, it might open to new possibilities.
Other than “just” fixing this pitch issue, I guess we might send more data about GSX over the network: for example, we might send the name of the Pushback tug used and, if you have GSX installed, you might see other pilots being pushed by the actual Pushback tug used by them, instead of just going backwards.