The Photon Forum
is Closed Permanently.

After many dedicated years of service, we have made the decision to retire our Forum and switch to read-only: we´ve saved the best to last! Your search result can be found below. Plus, we offer support via these channels:

Try Our

Please check if you can find an answer in our extensive documentation on PUN.

Join Us
on Discord

Meet and talk to our staff and the entire Photon-Community via Discord.

Stack Overflow

Find more information on Stack Overflow (for Circle members only).

Write Us
an E-Mail

Feel free to send your question directly to our developers.

How do I achieve perfect movement sync using photon?

2018-03-09 04:56:01

Hi all :)

My game is a fast pacing dodge ball game, which perfect sync of player movement is very critical.
The game is top down (movement is 2 dimension) and each player character could have different move speed.
Player character are moving using CharacterController class and Move() function.

My goal is to make the movement perfectly sync like other mobile MOBA game, which
if you put two devices next to each other, you will see two characters move in perfect sync movement.
I know hiding lag is the key but no matter how hard I try, I still can't make two character perfectly sync like most mobile MOBA game.

I have been working on lots of different solutions:

  1. Use PhotonTransformView with different Fix/Lerp speed or SetSynchronizedVale.
  2. Write my own interpolation and exploration sync (they eventually look the same as Photon's PhotonTransformView ...)
  3. Take only input from client and send RPC to replicate character movement on each client. This looks great at the beginning but results position out of sync after few twitch movement. Then it just gets worse and worse after all.
  4. Looking for Photon's TrueSync but it is not purchasable any more and I don't think Quantum will be released any time soon...

I have two other ideas but I don't know how to achieve them:

  • Use (3) to update movement on each client but use (1) or (2) to correct their movement afterward. But how do I do this?
  • Send all the input to the server(Master Client) and have server do movement simulation. Then, send the position back to each client for them to do the interpolation sync. Will this work? How do I simulate this with CharacterController and its Move() function?

I have been working on this for 2 weeks... and I am out of ideas... :'''''(
Please help me with this. Let me know how to make this fast pace MOBA movement sync work.
Or is there any other Networking tool can do this job?

Thank you very much for reading through this long questions and excuse for my bad English.


[Deleted User]
2018-03-13 09:32:58

Hi @MuMuDaDa,

we have a new documentation page about Lag Compensation. You can find it over here. I would recommend you reading and working through this page, applying the suggested solutions and see if those are working for your project. Please let me know, if you have further questions about this.

Back to top