I am making an multiplayer platfomer game with 4.x. I am not very familar to networking or syncing, here is my idea now:

My character's moving(collision, move_and_slide, etc) is only running on their owner (each "player" control its own character inst), then use MultiplayerSynchronizer to sync character's position. If there are any enemy or other objects can move, the server will create them, client use MultiplayerSpawner to auto create them, their position is synced by server (use Synchronizer as well as characters).
That seems good with static floor, but when I add a moving platform, here is a gap between server's platform and character:


(In the image, server DOES NOT have an character, that is client's character; The "Box" will move up and down.)

I guess it is caused by syncing order: platform in server moves first, then receive new position from client, but in client, the platform still at last position, so client will calculate collision with outdated position, then cause this.

My question is:

  1. Is that make character's moving only on client a good idea? I think this will reduce server's cost, but I am not sure.
  2. With moving platform like this, are there any better idea to do syncing?