We are currently having only "turn based" multiplayer games in our party game lobby system. Now we considered to add realtime multiplayer games as well, for example golf in 3D. Our current technologies include:
- Server: C# Server, Custom Web Socket Server logic
- Client: Browser with web sockets, Three.js for 3D rendering
By having a game like golf, it would also involve physics based gameplay. And we want to keep the server as authority if possible. We know that for a smooth experience we need Client prediction, reconciliation and interpolation. This is where it gets tricky for us right now.
We also considered to sacrifice the server authority for that kind of game and make one of the clients the authority; therefore the server would just act as a proxy for them. Would that be a valid way to go? This would also save server resources but clients that are authorities could cheat.
How can we implement these physics features in this mismatched client-server environment?