Stable ping is very important. 0% packet loss even more so.
If you run your Simutrans client with "-debug 3" you can watch the timing in the messages printed in the console.
NWC_CHECK: time difference to server 0
It can bounce around a bit, but should mostly track 0. When -'ve, if a command comes in from a player, you're at risk of a desync.
A desync because of this will show up as :
network_world_command_t::execute wanted to execute(%d) in the past
Another type of desync is due to program bugs:
karte_t:::do_network_world_command", "disconnecting due to checklist mismatch"Note: there are some bugs in 120.1.1 that will cause this. Some are fixed with 120.1.2, which if you're running a private server on self compiled is safe to use. Just the attempted official release went wrong...
Finally you may see:
network_receive_data", "connection [%d] already closed"which is generally due to server issues, or network connectivity being lost.
If your self compiled versions don't/can't support the console display, you can add "-log" to the command, but then you have to search simu.log file rather than seeing the messages realtime.
120.1.2 also contains some tweaks to the network client timing that were developed/tested with a very badly overloaded Simutrans Experimental server game last year. That was running on a poor VPS as well - generally not good due to bursty nature of Simutrans CPU usage... Simutrans is very intolerant of the server lagging at all. Again 120.1.2 has improvements for that, and will spit out a log message: (older versions do not contain this message)
karte_t::interactive", "server lagging by %lli"If you see that in your server logs, it's not cutting it CPU wise.
To answer your original question, the values for those parameters depend on the framerate you've set the server to run at.
The earliest servers were choked back to 10fps, but I find that makes the UI too sluggish. I've been testing a server running 20 for a while now and it seems ok with:
server_frames_ahead = 4 (default)
server_frames_per_step = 4 (default)
server_frames_between_checks = 200 (aiming for 10 secs based on 20 fps)
additional_client_frames_behind = x - this must be set by each client based on the quality of their connection. I usually run 4 ok. Unless it's a transatlantic server, then those links tend to be very congested / jittery. even then 8, or 10 and I see desycs.