Here are some things I do not understand. I have an A7 multiplayer tank game that works as expected, but it gets out-of-sync. It is using ODE physics. In this game players get pushed and moved around using physics. I am attempting to use the client-side type movement of tutorial 25_2.
From what I can understand of the game engine, tutorial 25_2 is doing an 'exact simulation' type of networking. In this simulation the server receives all the keystrokes and uses that to create an exact simulation of what I am doing on my clients. This probably works ok for c_move type games but I can understand that physics might calculate differently on both ends. It also does not take into account that one player could change the location of another player through pushing, etc. So this is my assumption of how things work and what is wrong.
If that is the case then I obviously do not understand how to send updates or corrections to the server simulation of where my tank really is. In my current version I can see a 'ghost' of my other client tank(s) that is in the correct position. This ghost blinks on for a few frames but doesn't correct anything.
What I am really trying to figure out is what the "server" is doing and how to react to it. The manual says:
Sending and receiving level updates is automatically handled by the engine; there's no script required for this. This way, every 3D game you create is already a network game once the engine is running in server or client mode. A dead reckoning algorithm ensures smooth movements of the entities
But what is it referring to when it says 'level updates'? Every entity? Does dplay_localfunction = 2; cause this to change?
If the server is sending updates how can I watch for them and make use of them? Does this only apply when running actions on the server only?
These are the types of questions I do not currently understand about the engine multi-player implementation.