4.20 ClientAuthorativePosition bug

Just upgraded to 4.20.2, and when ClientAuthorativePosition is set to true, CharacterMovement get velocity always return zero on replicated actor. (Used to work fine in 4.19.2)

This is a serious bug, for all those who use this option. Can we get this fix asap?

Best.

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://epicsupport.force.com/unrealengine/s/

Thanks

Well, i spent 2-3 days confirming this bug with UE staff. (This turned out to be a source built version bug.) Been one month and no answer about when this will be fixed…

So i’m bumping this… :\

Up this thread as it’s been a long time and it’s a serious problem.
Anyone found a fix?

No, unfortunately.

Hello,
To all wondering about that problem, it seems a fix exists now (but requiring to build the engine from source, should be patched in UE 4.21 release) :
https://github.com/EpicGames/UnrealEngine/commit/1906fed55e0cddc5f7cf3551ce749bfc2efeae3c
Best,
TheGameIsFixed

Sign… so we have to wait for 4.21? Not too mention that it will take awhile for the new version to be stable.

So theoretically, we can just copy and paste the above code and rebuild the engine right?

I don’t think we have to wait for 4.21. If we add these corrects lines in the source code of the 4.20 engine and build it I’m pretty sure it will work ! I sadly can’t test it in the future days but I will definitly test it in the future weeks.

I can confirm that the solution for 4.20 engine is to build the 4.20 engine from source after modifying the file
Engine/Source/Runtime/Engine/Private/Components/CharacterMovementComponent.cpp
Adding the following lines at lines 8414 :

// Client may send a null movement base when walking on bases with no relative location (to save bandwidth).
// In this case don't check movement base in error conditions, use the server one (which avoids an error based on differing bases). Position will still be validated.
if (ClientMovementBase == nullptr && ClientMovementMode == MOVE_Walking)
{
  ClientMovementBase = CharacterOwner->GetBasedMovement().MovementBase;
  ClientBaseBoneName = CharacterOwner->GetBasedMovement().BoneName;
}

Tested on UE4 4.20.3 source from github and works perfectly as expected