TopDown Template is not Network ready, because of no NavigationSystem in client side

TopDown Template is not Network ready, because of no NavigationSystem in client side.

When client side call SimpleMoveToLocation, it will be return after getting nullptr NavigationSystem.
So it will do nothing when click floor in client side.

Also, I can use RPC to let SimpleMoveToLocation excuted in Server Side, but I think this will cause Player feel very lag.

Finally, I got it work.

I set option AllowClientSideNavigation to true. (In Project Settings, Navigation System Tab)
And then set the CharacterMovementComponent’s bUseAccelerationForPaths to true.

Then I finally got the character move just like it in third-person shooter game.

See the code below.

By the way, it is only work with Unreal Engine 4.12 and later.

You typically don’t run the AI pathfinding both server and client side, largely because the result can differ and they end up fighting each other.

It doesn’t matter anyway since only the Server can ‘move’ the pawn, which then replicates down

Thank you for your replying.

The topdown character is not AI, but using Navigation system to find path to clicked move location.
It is palyer controlled character just like third-person character.

That’s technically still the same thing - since it’s possible for the controller to calculate a completely different path through the navmesh.

So making character movements like to be in third-person shooter games can avoid these problems.

Actually this works same as WASD control to move 1st or 3rd person charcter. (I looked into the codes carefully, trust me. UPawnMovementComponent::RequestPathMove just adds Input movements to controller just the same as WASD was pressed.) It is only using SimpleMoveToLocation of NavigationSystem in Controlled Client, then UPawnMovementComponent::RequestPathMove adds MovementInputs just like WASD.

I understand what you said that only move the character in server then replicate to clients would be better. But only move on server then replicates movements to every client will cause Controlled Client to be lag when the PING is high.
Character using AddController Input(Typically 1st or 3rd Person Shooter Game Character) will both do character movements in Controlled Client and Server. The server will replicate movements to clients except Controlled Client(But actually it will do some complex sync with Controlled Client).
So the controlled client will feel very smoothly even the PING is high.

So I think I already achieved the goal of smoothly movements in controled clients and correctly sync with Server and other clients.

Hello Henry - Just wanted to say thank you very much for posting this info! Works great for me.

I’m not concerned about AI since there is no AI in my game. Just need click to move behavior. I was already using Nav on the client to draw the nav path.

This is a big help.