You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add an optional ping indicator to the in-game HUD #6354
Updated to reflect Celant's maintainer decision, which I accepted in the following comment. This replaces the original proposal for an optional Show Ping setting.
OpenFront runs in lockstep, so a raw ping value alone cannot explain lag. Add three small, automatic, client-only HUD warning icons, on desktop and mobile, hidden while conditions are normal and with explanatory tooltips:
High latency: warn on a spike above the player's normal ping in this match, using the existing 5-second ping/pong measurements. Do not flag latency while client performance trouble may inflate RTT.
Connection unstable: warn when no turn has arrived for approximately 500ms. This measures delayed turn delivery, not browser-visible packet loss.
Performance: warn when the client is catching up or has sustained low frame rate. Replace the existing catching-up banner with this warning.
No new setting is required. The icons should stay hidden until something is wrong. A raw RTT readout in the existing performance overlay is optional, not required for this first PR.
Out of scope: a distinct server-issue warning needs server-side late-turn flags and is reserved for a follow-up PR.
The original request was motivated by players being unable to distinguish connection delay from local performance trouble; the approved warning-icon approach addresses those causes separately.
Assignment
I'd like to be assigned to this issue and work on it myself.
Hi @MRGhust, thanks for opening this issue. It hasn't been approved by a maintainer yet — we'll get back to you shortly to either milestone it (approval) or close it.
Thanks for this, and for offering to take it on. I'd like to widen the scope a bit before you start, because a raw ping number is less useful here than it looks.
OpenFront runs in lockstep: the server sends a turn every 100ms and every client simulates it locally. Ping only changes how fast your own actions reach the server. When people say "lag", the cause is usually their own machine falling behind or turns stalling, and a ms readout won't tell them which. Most games handle this with small warning icons that only show up when something is wrong, so I'd like to do that instead:
High latency. We already ping every 5s (Transport.ts) and record the round trip in GameMetrics. Prod data shows normal ping varies a lot by region: median ~40ms in Europe, ~215ms in Asia, ~320ms in Oceania. A fixed threshold would be on all game for a large share of players, so warn on a spike above the player's own normal ping in this match. Don't flag it while the client is struggling, because a busy main thread inflates the measurement.
Connection unstable. Browsers can't see packet loss: the socket runs over TCP, so loss shows up as turns arriving late. Warn when no turn has arrived for ~500ms. We already measure the gap between turns.
Performance. The client falling behind the server (GameView.isCatchingUp()) or a sustained low frame rate. This should replace the existing "catching up" banner rather than add a second warning.
Server issue. The client can't tell this apart from its own connection, so it needs the server to flag on turn messages when it's sending turns late. Leave this for a follow-up PR; the first three are client-only.
No new setting needed: the icons stay hidden until something's wrong, so they can be on by default (desktop and mobile), with a tooltip saying what the problem is. If you want the raw ping number too, add it to the existing performance overlay.
If that works for you, I'll approve and assign you for the first three.
Activity
github-actions commentedon Nov 9, 2026
Hi @MRGhust, thanks for opening this issue. It hasn't been approved by a maintainer yet — we'll get back to you shortly to either milestone it (approval) or close it.
— Automated. See CONTRIBUTING.md.
Celant commentedon Nov 9, 2026
Thanks for this, and for offering to take it on. I'd like to widen the scope a bit before you start, because a raw ping number is less useful here than it looks.
OpenFront runs in lockstep: the server sends a turn every 100ms and every client simulates it locally. Ping only changes how fast your own actions reach the server. When people say "lag", the cause is usually their own machine falling behind or turns stalling, and a ms readout won't tell them which. Most games handle this with small warning icons that only show up when something is wrong, so I'd like to do that instead:
Transport.ts) and record the round trip inGameMetrics. Prod data shows normal ping varies a lot by region: median ~40ms in Europe, ~215ms in Asia, ~320ms in Oceania. A fixed threshold would be on all game for a large share of players, so warn on a spike above the player's own normal ping in this match. Don't flag it while the client is struggling, because a busy main thread inflates the measurement.GameView.isCatchingUp()) or a sustained low frame rate. This should replace the existing "catching up" banner rather than add a second warning.No new setting needed: the icons stay hidden until something's wrong, so they can be on by default (desktop and mobile), with a tooltip saying what the problem is. If you want the raw ping number too, add it to the existing performance overlay.
If that works for you, I'll approve and assign you for the first three.
MRGhust commentedon Nov 9, 2026
Thanks for the detailed explanation! I agree with your approach and would be happy to work on it.
If I run into any difficulties, I'll ask for guidance.
MRGhust commentedon Nov 10, 2026
👀