Ok, i’ve seen how MonkeyZone does waht you said.
But for what i’ve seen, and correct me if i’m in wrong, monkeyzone does not implement a concrete client side prediction like the way it is meant to be. MZ simply apply data when the server sends the update message. In fact the ManualCharacterControl apply instantly user input and at the same time it sends those ti the server that recalculate the movement and create the update message.
Sorry me if i’m wrong but IMHO it is not a client side prediction mechanism like Q3 has. And moreover this architecture (just as i said IMHO) cannot work in a WAN environment because all the transmissions are made through TCP and i’ve not found any kind of entity interpolation. MZ works very well in a LAN but I’m not sure that it can be played over the Internet.
If i’m wrong can you tell me the class where for example is done the client local player correction through the reapplication of the input on the server-past-correct-state?
Question:
1) Is there a way to run the entire physics simulation manually?
2) How can i implement something like this using bulletAppState?
Client:
Sample user input and calculate forces to apply to the character rigid body.
Store and apply those forces locally and send it to the server.
Server:
Compute the new game state with user forces and sends a updateMessage
Client:
When update message arrives get the local player update and search for a state – forces record with the same time stored in the update state from server.
Starting from that state, recalculate the new correct state applying all stored forces predicting in this way a more correct position.
Thanx a lot