Hello! I need help with making multiplayer game with PUN2. Brief about the game - it's a 2D mobile game - the genre is "battle royal" - there would be 4 players in a room (maybe more) - a number of "mobs" (neutral hostile) that will respawn if killed What I have basic flow: - connect to master - connect to lobby - create a room if there is no rooms available - join an existing room gameplay: - spawn an "actor" for each player - the master client will spawn mobs - user inputs (move, use ability) will call respective RPC functions (target is AllViaServer) - the actor will auto attack enemies in range this scan will be processsed on photon view owner's (user's machine for player actor and master client for mobs) if a target is found, call RPC function with target's photon view ID as parameter. on all the clients: find the respective photon view and command the actor to attack the target- random element in game: the server (master client) will generate a list of random numbers and send to all clients the client will save these numbers in a list, newest numbers will be appended to the end of the list when client want to use random number, they just get the first number in the list.- all actors have IPunObservable to sync location and rotation. - some elements such as: projectile, visual effect, sounds,.. are manipulated locally. player A move actor in range of player B's actor these actors start firing at each other projectiles are created locally and move at respective direction collisions of the projectiles are checked locally as well damage are also calculated locally (with some "random element" in it) The problems that I have actors movement looks... choppy and jittery depends on lag time stuffs are out of sync, especially the random stuff in above case when player A's actor and player B's actor firing at each other, sometimes the "random" is out of sync and the player A's actor die on player B's game screen but not on player A's game screen. I know that the amount of data being synced is inadequate, reasons: - I'm afraid the amount of data would be too much for a mobile game - I'm not sure which data I should sync. I'm confused about some stuffs - the world should be simulate by the server and the server will send "snapshot" to client what does "snapshot" mean? - is it data of all the actors (location, rotation, state, animation,...) ? - do I have to store these data in every frame? or every "server tick" ? - must I "cache" several snapshots in case the client need to render the game "in the past" ? - Entity interpolation and lag compensation the client should process interpolation between snapshots received from the server, do I need only 2 snapshot? "past" and "present" ones? - to have the "snapshot" of everything: so I need to instantiate even the stuffs that're processed locally before, like: projectile, visual effect,... ? I will appreciate any helps. Thank you for reading.