Realtime score display rendered in a secondary WebView, designed to show game state, scores, timers, lives, and mode-specific information with minimal latency and high readability.
Next.js WebView app
Realtime JSON-driven updates
Alliance + PvP + Custom modes
Hosted centrally for all rooms
Thin dummy display layer
Alliance
The Scorecard is a Next.js project rendered as the second WebView inside the kiosk host application.
Its purpose is to give players a clear realtime view of:
The scorecard is intentionally designed as a lightweight dummy structure. It does not own game logic. Instead, it receives structured realtime data from the Kiosk Host, which itself receives the runtime state from the Game Engine.
This thin display architecture makes the scorecard:
The scorecard is a lightweight hosted display layer rendered inside the kiosk runtime. It receives structured realtime data from the kiosk host, which itself relays state from the game engine.
When the Kiosk Host launches, the Alliance mode scorecard is loaded by default, except for custom games where the host can load a room-specific custom screen instead.
Typical realtime updates include:
This keeps the scorecard focused only on rendering the current truth, rather than calculating state on its own.
The scorecard has three major display modes.
Used when players are playing together as a team.
Displays shared values such as:
Used for player-vs-player gameplay.
In addition to common score data, it also displays:
This became important because showing generic labels like Player 1, Player 2 created confusion during live gameplay.
Used for games that do not fit the standard scorecard structure.
This allows custom layouts for special game types, including:
The first major custom example was Recipe, where the page needed to display:
In the beginning, we only had Alliance mode game variants for the first two game rooms.
That meant one display structure was enough.
As the facility grew, the scorecard had to evolve.
Once competitive / PvP variants were introduced, we needed a different display model.
We added:
We also improved the UI multiple times so the information would be easier for players to process during gameplay.
When custom-format games such as Recipe were introduced, the standard layout no longer worked.
So we added:
We also improved player clarity over time. For example:
Although the scorecard is a relatively lightweight project, it was a very important part of the room experience.
The first challenge was purely visual:
Players should be able to glance at the scorecard and instantly understand it.
Because the games often require:
the display could not be something players had to "decode."
That meant:
The scorecard was not always a pure dummy display.
Earlier versions behaved more like an independent screen process and were updated through smaller event-based signals such as:
This caused problems such as:
The fix was to make the scorecard a true dummy structure.
Instead of partial event hints, it now receives the full current state repeatedly, such as:
That removed most synchronization issues and made the display much more reliable.
Another challenge was making sure the correct screen type was always shown.
Sometimes, due to communication loss or data mismatch:
This made the display unhelpful and could even break the page if the data shape did not match the current screen structure.
To fix this, I processed the incoming data upfront and checked the game type on every update.
If the active screen did not match the current game type:
The custom mode introduced a new challenge: we needed entirely different page formats for games that did not fit the standard scorecard model.
For Recipe, for example, the screen needed to show:
To make that usable, I worked with my team to design a custom layout that stayed informative without becoming overwhelming.
My contribution followed the same pattern as the other AeroSports software systems.
I helped build:
Once the dummy structure was in place, the scorecard became much easier to evolve because changes were mostly about:
I worked with my team on:
I also trained team members on how the scorecard page worked and how it could be extended safely.
Core tools and technologies used in this project.
Core technologies
Supporting technologies