After an overflight I have to say: "Great pleasure to read!! Great work!!"

Some comments:

p. 21: another command to add: -sn (as you noted in App 1)

My last personal experience was, that 'client side movement' improves the lag to zero for the player and decreases the amount of data sending to a phantastic, stupid minimum: After generating the player on all maschines by the server, the player moves his entity on client side. The player position will only be updated every 3 seconds (in my case) to the server and to all other clients from the server. If the position is not accurate, it will be corrected while the next 3 seconds on the server and all the other clients. The player send only changes of key status to the server and all the other clients. It's some more complicated than 'server side movement', but if you check it, it's a much more sophisticated player entity handling. Did you have experience with that and will you explain it in your tutorial? If you don't know what I mean and you're interested, I can send you an example with some explanations. I think this is not easy, but real important stuff, specially for internet games (bigger lag) to get a "smooth" stearing.


Don't take the cake to the party.