Skip to content

Add an optional ping indicator to the in-game HUD #6354

Open

Description

@MRGhust

Approved scope

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.

Implementation: #6400.

Activity

  1. github-actions commented on Nov 9, 2026

    @github-actions
    Contributor

    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.

  2. Celant commented on Nov 9, 2026

    @Celant
    Member

    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.

  3. MRGhust commented on Nov 9, 2026

    @MRGhust
    ContributorAuthor

    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.

  4. MRGhust commented on Nov 10, 2026

    @MRGhust
    ContributorAuthor

    👀

  5. added this to the Backlog milestone on Nov 10, 2026
  6. added
    approvedApproved for a PR, if you assigned to the issue.
    and removed
    not-approvedThis issue has NOT been approved by the maintainers.
    on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

approvedApproved for a PR, if you assigned to the issue.

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions