- summary: Latency probe. Its automatic sender only fires when the player has touched an input device, so it is not a heartbeat.
- area: Game.Connection
- confidence: 0.99
Latency probe. Its automatic sender only fires when the player has touched an input device, so it is not a heartbeat.
- Kind request
- Area Game.Connection
- Named by beta, gamemapping
Measures round-trip time to the game server: send it, wait for PongEvent, keep the
delta.
TWO SENDERS, AND ONLY ONE OF THEM IS A TIMER.
THE AUTOMATIC PROBE sends quiet = true. A timer re-arms itself every INTERVAL ms, but a tick only sends if the player touched an input device since the previous tick:
every INTERVAL ms:
if input_seen_since_last_tick:
input_seen_since_last_tick = false
send PingRequest(quiet = true)
re-arm
INTERVAL is 5 seconds when the client's fast-ping option is on and 10 minutes when it is off. There is no third value, no jitter and no back-off.
THE CHAT CONSOLE COMMAND 'ping' sends quiet = false, once, immediately, with no gate at all. Its sibling 'aping' prints the stored average and sends nothing.
THREE PROPERTIES OF THE INPUT GATE DECIDE WHAT YOUR TRAFFIC LOOKS LIKE. It is a LATCH, not a counter - ten thousand input events between two ticks produce one ping, not ten thousand. It is CONSUMED by the tick, so two consecutive pings need input in two separate intervals. And it is read BEFORE the send, so the first tick after an idle stretch is silent.
WHAT COUNTS AS INPUT IS NARROWER THAN IT LOOKS. The latch is set only while a keyboard key or a mouse button is held, or a movement axis is off centre. Moving the mouse without pressing anything does not set it, and neither does giving the window focus back. Gameplay does not set it either: a character walking a route under script control produces no input at all.
A CLEAN PERIODIC PING STREAM IS A STRONGER ANOMALY THAN SILENCE. A real client cannot produce one - with the input devices untouched it sends almost never. A capture of an active session shows pings roughly ten seconds apart while the player was moving: irregular, not clockwork. If your script never touches an input device, the faithful behaviour is to send this rarely, or not at all. The gate is a traffic-shape rule, not a legality rule - the server answers a ping sent at any moment.
ONE PING AT A TIME. The client keeps a single outstanding send timestamp: stamped on send, cleared by the reply. A reply that arrives with no outstanding send is discarded and produces no sample, so pipelining pings gets you fewer measurements, not more.
WHAT HAPPENS IF NOTHING COMES BACK. One second after each send the client raises its lag indicator, and lowers it again when the reply lands. Nothing is retransmitted and nothing is torn down - the exchange simply stays unanswered.
THE SAMPLES ARE NOT DECORATIVE. Each round trip is appended to a rolling buffer of the
last 50, and the average of that buffer is the number a real client reports when the
server polls with BasicLatencyStatsEvent. A script that never pings has no honest
value to put in BasicLatencyStatsRequest.
When you may send it
- Requires
authenticatedobserved - Raised by: two independent senders. A timer that re-arms itself every 5s (fast ping on) or 10min (off) and sends ONLY if raw input arrived since the previous tick, clearing that latch as it fires; and the chat console command 'ping', which sends once, immediately, with no gate inferred
Related messages
- You will then receive
PongEventobserved — the reply that closes the measurement; answered ~30ms later, 2 of 2 observations in one session
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 2 | quiet | bool | Whether the measurement stays silent. The server echoes it back unchanged in the reply. The automatic probe sends true; the chat console command sends false. The difference is not server-side - the flag comes back in PongEvent.quiet, and a client that receives false PRINTS the measured round-trip into the chat window. Send false only if you mean to imitate a player who typed the command. | required |
Recovered with score 115, confidence 0.99, margin 115 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 1 of 2.
Aucun avis à afficher.