Sauerbraten SDL2 Client

Sauerbraten SDL2 Client client for windows and linux. It also has some additional features and HUD customisations, that have been missing for years (all of them are disabled by default and separate configuration files are used). All configuration options are now integrated into the built-in main menu. You can get latest stable binary builds for windows and linux through the download button. Installation is simple, just put files in the game installation directory. No game data modifications are required.

It is an open source project and code is hosted on GitHub.

Features

Screenshots

Customisable HUD modification 1
Customisable HUD modification 2
Customisable HUD modification 3
Players search across all servers
Players search editor
Server preview
Detailed player statistics board
Scoreboard with additional statistics
HUD settings menu
Demobrowser
New main menu
Build-in gamepad support

Better networking

By default Sauerbraten client sends around 30 player position packets per second. Server retranslates these packets to other clients with the same rate of 30 packets per second. Time between two received position packets from a server is also know as pj. Such low rates were used back in 90s for modem connection rates and are obsolete nowadays, only causing huge artificial network lags.

So position handing is working this way. The first step is when a client sends position packet with a delay of sender packet rate (33ms), then it takes a sender network delay before a packet reaches the server. Then server packet rate delay that varies from 0ms to 33ms occurs. And then the final receiver network delay takes place.

This results in artificial delays form 33ms up to 66ms. The first problem is that such values are significant compared to networks delays which are about half of a ping value. The second problem is that the delay varies about twice it's minimum value. Client side interpolation and (Sauerbraten uses client side hit detection) will have significant position errors because a time interval between two received position packets can be two times wider than the original one. Furthermore colliding frequencies of server's and client's packet rates are causing delays on a receiver side. When sender's network delay slightly increases, the time interval between two packets will be more than a server packet rate. So that packet may miss a server time slice. This could often happen even on a very good connection. It also could be seen on a lagometer, client pj will jump up to 66ms, twice the server packet delay time.

The sender packet rate of 125 packets per second with even the default server rate could improve position precision. Several client packets are send to a server per time slice, so additional delay will vary from 33ms to 41ms without any slice misses. And for a server with a lower packets delays of 10ms that value will be even much lower from 10ms to 18ms and position interpolation will be made with 100 packet per second (instead of 30).

In conclusion, client 8ms position packet delay and 10-20ms server one will give much better results. It will increase server traffic around 3 times, but that should not be a problem today. Also these changes are fully compatible with the Sauerbraten default client and server.

Servers with support of lower position delay: Remod

1. ^ Lagometer graph is showing non-smoothed pj values, the full height is equal to 100ms
2. ^ To disable server previews use showserverpreviews 0 option
3. ^ Due to current network protocol limitations statistics are gathered only after connecting to a server
4. ^ See Better networking section for a detailed explanation
5. ^ Demo downloading may be not allowed by server settings or modifications
6. ^ To use the default menu set usenewmainmenu 0 and restart the game