1. General Information.
2. How to display Players Ping & Observer Status?
3. What is Unique Ping Reduction System and How to Activate it?
4. Examples of Unique Ping Reduction effectivity.
To display the Players Ping & Observer Status in Multiplayer game, you can use the CTRL + ALT + F hotkey, which previously only displayed FPS. This will enable the Basic Status with player names, their ping, predicted game lag and currently used "Scale Factor" that will be described below.
You can show more advanced details, such as player's port, delta, jitter, game ticks & time. To switch between the Basic and Advanced mode, keep the " i " key pressed on your keyboard for around 2 seconds, when the Basic Status is already displayed.
All of the information come from the Host player, and are shared with other players using the EE2.eu server. It was the only possible method. Players (except the host player) only send requests to EE2.eu when they have the Ping Status currently displayed.
* Delta is the time (in milliseconds) between the two last packets received by the Host.
* Jitter shows how much the player's ping changes over time (a difference between the lowest and the highest ping, in the period of 10 seconds)
* Lag is a predicted command lag (delay in milliseconds) that all players in game (including host) feel. It's mostly depended on the player with the highest ping.
* SF (Scale Factor) is the value that the game uses to multiply the current highest ping. By default, this value has always been 1.5 which could drastically increase pings, especially in high-ping games.
* Time, Ticks represent the current performance of the game. While the Time value is depended on selected game speed, the Ticks should always be around 29.0 to 31.0. They are calculated by UP1.6 in a different thread, comparing the real clock's elpased time, with the time/ticks elpased in the game.
The status also shows the last ping update time, detects if it's you or the other players causing game lag, or determine if it's you or the host who lost the Internet connection. Ping calculations and status text generation are handled in a separate thread (on a different CPU core) to ensure no performance impact on the game process.
The Unique Ping Reduction is a feature invented by Dr.MonaLisa that dynamically modifies the SF (Scale Factor) value, realistically reducing the game command lag while minimizing the risk of stuttering (e.g. units moving slower, when the game ticks are below 29.0). In most cases it reduces the game command lag by 40-50%, but in very high ping games, the reduction might be as big as 66%!
To enable this feature, the host player should simply keep the " r " key pressed on their keyboard for around 2 seconds, when the Players Ping Status is being displayed. At the bottom of the status, you should see an information that the Ping Reduction is ENABLED. You can later disable it using the same key. The activation status will be remembered for your computer. This feature is disabled by default because we couldn't test all envoirtaiments, however Dr.MonaLisa highly recommends to enable it.
How does it work? The procedure of this feature is very complicated. Unofficial Patch 1.6 sends telemetric data with pings, pings history and other details required for the Players Ping & Observer Status feature to work. In response back, the host player receives the current Unique Ping Reduction formula and values adjusted especially for your game. This is a live service that is improved over time by Dr.MonaLisa by (endless) tests and observed patterns. For example, the EE2.eu's PHP script might send totally different configuration variables for a game with max. ping 600 ms, and a game with max. ping 50 ms. This might also detect instability by observing the "Ticks" patterns and adjust values based on it. All this information is processed "live" every ~1 second and configuration might change hundreds of times during a single game. The Unique Ping Reduction's Scale Factor is calculated in the game process itself (Unofficial Patch's C++ Game_Helper.dll). There was no other possibility to find an universal solution, that's why this feature is called "Unique", because no other old (and even new) peer-to-peer multiplayer games have something similar. In the future, we might use the AI to determine the best configuration (although it most likely wouldn't be better). Once it happens, no installation of new updates will be required, because everything is already in the game, added with over 10 000 lines of code. This feature uses the crash-safe method: EE2 (Game_Helper.dll) -> SharedMemory -> Host's UP1.6 Launcher -> EE2.eu KeepAlive Script & Database -> Client's UP1.6 Launcher -> SharedMemory -> EE2 (Game_Helper.dll).