#Gamification & Poker

A live leaderboard has to earn the word live

Zulu Shack illustration for “A live leaderboard has to earn the word live”: podium and signal

A leaderboard changes on the big screen. A player checks their phone and sees an older result. Another player refreshes twice and announces a completely different position.

Everybody is now enjoying a very small election.

A live leaderboard needs more than animation. It needs an authoritative score, a reasonable update delay and a way to recover when connections disappear.

Laravel’s March 2024 Reverb launch and .NET’s established SignalR stack make this a useful moment to compare the delivery choices.2 The first decision, though, is how fresh the information needs to be.

Choose a delay people can understand

For a fictional local league, a seasonal standing and an in-progress event may have different needs. A result entered after a game doesn’t necessarily require continuous connection traffic while nobody is playing.

Ask what people will do with the information and what delay would cause confusion.

Polling can be entirely reasonable

Polling asks the server for updated information at intervals. It is comparatively straightforward to reason about and may be sufficient for less time-sensitive standings.

The trade-off is repeated requests, including when nothing changed. A short interval can add unnecessary load; a long one can leave the display noticeably behind.

Show when the information was updated where that context helps. A plainly described periodic update may serve the audience better than a Live badge attached to a refresh schedule nobody has agreed on.

There is no technical embarrassment in choosing the simpler mechanism when it meets the actual need.

Push updates suit a genuinely changing event

SignalR supports server-to-client updates in .NET applications. Reverb provides a first-party WebSocket server integrated with Laravel’s broadcasting tools.3

These can help send a change to connected viewers rather than making every viewer repeatedly ask. They also introduce connection management, authorization and operational responsibilities.

Rock ’n Roll Poker League is one of our favourite gamified builds. See how the Octalysis framework shaped its custom .NET platform.

Choose according to the existing application and team, not a benchmark from an unrelated demonstration. The useful result is a dependable event experience, not a contest between framework logos.

A persistent connection helps information travel. It doesn’t make the information correct.

PollingPush (SignalR, Reverb)
How it worksThe page asks the server for updates at intervalsThe server sends changes to connected viewers
SuitsStandings that change less often, such as a seasonal tableAn in-progress event where results genuinely change
Trade-offRepeated requests even when nothing changedConnection management, authorisation and more to operate
Polling or push updates?

Let the server own the score

A result should be validated and recorded through the authoritative application before the leaderboard announces it. A player’s browser should not become the source of truth merely because it knows how to draw a convincing number.

Define who can enter and correct scores. Record enough history to explain a change. Tie-breaking rules should be explicit and applied consistently.

If a correction changes several positions, update the affected standings coherently. A subtle transition can help people follow the movement. Excessive movement can make the board resemble a departure screen having an emotional afternoon.

Ordering matters too. Updates may be delayed or arrive after newer information. The application needs a way to recognize the relevant version or retrieve a current snapshot rather than blindly applying every message in arrival order.

Those details protect trust. People may happily forgive a short delay. They are less relaxed when the same official board appears to support several incompatible truths.

Related read: Real-time updates are useful when there is something worth watching.

Plan for the phone that briefly leaves

A connection can drop because a device sleeps, coverage changes or a venue network struggles. Reconnecting is not the same as catching up.

After reconnection, retrieve enough authoritative state to establish the current position. Don’t assume the browser received every update while it was away.

Be clear about offline or stale states. Keeping an old board visible can be useful, provided it doesn’t continue presenting itself as current.

Test a result correction, a disconnected phone and a delayed update before launch. Include a normal device on a normal connection, not only the development laptop with excellent Wi-Fi and a personal relationship with the server.

I’d start with the freshness requirement, choose the delivery mechanism and then prove the recovery behavior. The players should be able to recognize one official set of standings, even if their screens reach it at slightly different moments.

That leaves room for a lively presentation and a little celebration when someone climbs the table. Ayeya! Just make sure the place they’re celebrating belongs to them.

Turn reading into results

Like what you’re reading? Let’s put it to work on your brand.