I’m currently working on a 2D space based game, persistent universe, trading, missions etc. You can see some information at http://www.newdawnsoftware.com/astroprime
The first version I produced maintained client state locally. The client would “tell” the server what its location, velocity and rotation were and the server would broadcast this to other players in the area. This worked fine but was worrying from a security point of view. When adding asteroids and collisions I discovered the server needed to caculated the collision results and hence needed to reset the clients position and velocity. So I then had this problem of knowing which side (client or server) had the appropriate and accurate information about the players position.
Since then I’ve started work on the MMO version, and decided to look at the networking again. I’ve just implemented a version where the client maintains only its controls. The client “tells” the server if its thrust, rotating or firing. The server runs all the players updating them as appropriate and broadcasts the results to the players (including the original client). This give me a wonderful central control of the world but at high latency its going to give the player a lack of control of the ship.
I was wondering if there is a more appropriate half-way house, or if I just have to choose between the two.
Any feedback much appreciated,
Kev