Proper API on CharacterMovementComponent to do server-side movement on an Autonomous Proxy?

Hi all,

I am using a Character w/ CMC to do client-side predicted movement w/ an Autonomous Proxy actor controlled by the player. However, in one case I want to skip using client input and execute the movement logic on the server only. The case is click-to-move pathfinding. I was trying to generate paths on the client and following them with predictable movement inputs, but in that implementation the client is basically authoritative on when to stop the pathfinding. This got problematic for abilities which have a range, because the server may not agree when to stop and this caused a number of edge cases. I would prefer to just take the latency hit and let the server do the pathfinding movement.

However, I am having problems when calling movement APIs on the CMC on the server only. The PathFollowingComponent ultimately calls the CMC’s RequestPathMove() in its FollowPathSegment() method. However, this doesn’t work well at all when run on the server and lacking client inputs. The movement on my owning client looks like a series of server-corrections instead of normal, smooth, animated movement. Which unfortunately looks terrible.

Ideally, I would like to keep using the CMC and prediction for some cases, but use the PathFollowingComponent and server-side movement for this one case. So I would prefer not to change to a Pawn instead of Character for example.

Is this even possible? Are there alternative methods on the MovementComponent to consider instead of RequestPathMove() which might skip the client prediction loop on the CMC and just do direct server movement which will be smoothed out on the client like a Simulated Proxy would?