I’m developing a multiplayer physics based battle arena. In this, all projectiles can be manipulated at anytime. So, even a fireball with a linear projection can be forced in a new direction via a gravity flux or reflecting shield.
Because of this, I have made each projectile replicated across all clients using PhotonNetwork.Instantiate().
This has a few downfalls;
a. All collisions have to happen on one client, which results in delayed pushes.
b. Delayed collisions against a reflecting shield tend to create funky problems where the projectile collides slightly inside of the shield.
c. Synchronizing every projectile in the game could lead to lag with a large number of players.
So, I have this idea of making each projectile created through an RPC and not actually be one ‘synced’ projectile. This would make it easier to control cheating (on some levels) and projectiles would collide with things immediately (since it’d mostly work for each client, rather than one one client’s side).
The idea sounds nice, but it also seems like it’d be VERY difficult to keep all of the projectiles synchronized between all clients.
So, the question is, does anyone have an idea of how to go about this method and keep everything in sync? Or does anyone have any suggestions to make the replication work a little smoother?
Thanks a lot!