Rooms, teams, and reconnection
- The app supports up to ten concurrent rooms per server instance. The server randomly assigns a name from Ukrainian oblasts, the national and regional capitals, and other cities. Open rooms have distinct names. A name returns to the pool when its room closes. Each room has its own roster, settings, board, timers, and scores. Host Control, Join Game, the scoreboard, and the admin consoles display the room name. The scoreboard and Admin Console identify the room by the same color.
- A host creates a room from Host a Game, shares the room name or player link, and can open the scoreboard on a shared display. Host Control enables Start Game once at least one player belongs to a team.
- Players can enter the room name using English letters. Letter case, spaces, and hyphens are optional. Player, host, and scoreboard links use the place name. If a name is reused after closing, its link opens the currently active room with that name. A returning player’s saved team membership applies only to the game they joined. Players who join by name or link can resume the same membership in their original browser.
- Players join from a phone browser. In the lobby they may create or join a team. Once play starts they may join existing teams. A player can accept a suggested CYM or Ukrainian name, ask for another suggestion, or enter a custom team name. Duplicate team names are rejected within the same room.
- Players on the same team share a score. A returning player uses the same room link and browser profile to recover membership. A returning host uses the browser profile that created the room. Lost browser storage prevents that browser from recovering its saved role.
- Leave Game removes the player’s membership. The host can also remove an individual player. Reset Game clears scores, deals a new board, and keeps current team memberships.
- The five-minute room timer starts when the server detects that the last host or player disconnected or left. A returning host or player cancels it. Scoreboard connections and visitors who have yet to join a team never count toward room activity. Expiry closes the room and frees its slot.
Question banks and languages
- The host chooses from seven banks. Zlet 2026–2027 has Молодше and Старше options. Ступеневі іспити has Молодше 1 · Отрок, Молодше 2 · Вістовий, Молодше 3 · Звідун, Старше 1, and Старше 2.
- Each bank contains 250 bilingual clue forms across ten categories. A game draws five categories and 25 clues. Each category has a clue worth 200, 400, 600, 800, and 1,000 points.
- Every board has one easy 800-point clue and one easy 1,000-point clue in different categories. The midgame bonus cell is chosen from the remaining 600-, 800-, and 1,000-point cells. The Final clue is drawn from the 600-point tier of an unused category in the selected bank.
- The host can select English, Ukrainian, or Mixed. In Mixed mode the Ukrainian share applies across the 25 board clues, rounded to a whole number of clues. A 50% setting deals 13 in Ukrainian and 12 in English. The separate Final clue uses the selected language or the Mixed probability.
- The question bank is maintained in the deployment source. Keep both language versions paired for each clue and answer. The companion workbook is a reference export and should stay with hosts and organizers.
Regular play and scoring
- The host selects an unplayed clue, reads it, and opens the buzzers. The server accepts the first valid buzz for the player’s team and stops the buzzer timer. Every teammate may buzz from their phone.
- The buzzer window defaults to 30 seconds and can be adjusted by the host. The team answers aloud after buzzing. The host marks it correct or incorrect. The answer itself has no separate automatic countdown.
- A correct answer adds the clue value and marks the clue played. An incorrect answer subtracts the clue value and prevents that team from buzzing again for the same clue. The buzzer reopens for remaining eligible teams when applicable.
- If the buzzer timer expires, the game reveals the answer. The host may also reveal a clue and return to the board. Host Control allows authorized score corrections.
Bonus round and Final Jeopardy
Pick a Treasure for Молодше
In Zlet Молодше and іспити Молодше 1–3, the host selects a team and opens a 30-second pick window. The gold coin, jeweled crown, and treasure chest hide 200, 400, and 600 bonus points in a randomized order for each game. The team’s first valid pick locks its prize and reveals the clue. A correct answer awards the prize as the score for that clue. An incorrect answer or expired pick adds zero points.
Daily Double for Старше
The host chooses a team with at least one member and opens a 30-second wager window. That team may wager a whole number from 1 to the greater of 1,000 or its current score. The first valid wager locks for the team and opens the clue. The host judges the spoken answer and the wager is added or subtracted. If the team misses the deadline, it sits out the clue.
Final Jeopardy
When the board is cleared, the host starts a 30-second wager window for teams with members. Each team may wager a whole number from zero to its current score, with zero available to teams at or below zero. The first valid teammate submission locks the team wager. Teams that miss the deadline keep their scores and sit out the clue. In Молодше, the three choices are Shield for 0, Gold coin for 200, and Treasure chest for 500. Choices above the team’s score are disabled, and the server accepts only the listed amounts. Старше teams enter a whole-number wager.
The Final clue opens when all eligible teams lock a wager or the window expires, provided at least one team wagered. The answer window is 30 seconds and the host may advance to judging earlier. Each team that wagered receives one judgment before the host finishes the game. The wager is added or subtracted based on that judgment.
Game animations and sound
- The scoreboard shows a brief team-color border for the first accepted buzz on a clue and a blue-and-gold reveal when a Старше Daily Double is uncovered.
- In Молодше, a chest opens to reveal the chosen prize on phones and the scoreboard. A correct answer sends gold coins toward the scoring team’s total on the scoreboard and that team’s phones.
- The scoreboard plays blue-and-yellow confetti when Final Jeopardy ends. Tied winners receive the same top rank.
- The effects respond to live game transitions, respect the device’s reduced-motion preference, and leave game controls and timers available throughout.
- The scoreboard starts muted and offers a Sound toggle throughout play. Enabling sound plays a test chime between timed rounds or starts the music immediately during an open buzzer or Final answer timer. Turning sound off or losing the room connection stops playback.
Administration and permissions
- Anyone with the site URL can create a room, join a game, or view the public room list and scoreboard. Host actions are authorized for that room’s creator browser.
- In the creator browser, Admin Console offers Rejoin as Host, End Game, and Close Room for that room. End Game stops play and displays current scores. Close Room disconnects participants and frees the room slot.
- The private Super Admin link authorizes ending or closing any room. The server must reject room-management requests that lack valid room-owner or Super Admin access. Keep the deployment ZIP and the complete Super Admin link private.
- Host Control has the answers. Player and scoreboard views receive answers only at the appropriate reveal or judging stage. The bonus clue stays hidden until the wager or treasure choice locks, or until the clue is revealed. Unchosen treasure values stay private. Before Final judging, the board can show wager lock status and each team can see its own wager.
Hosting and release identification
- Host, player, and board browsers need JavaScript and a WebSocket connection. The Cloud Run service is configured for a single instance so all rooms share the same server state. Phone and scoreboard connections consume the service’s shared connection capacity.
- Room state is held in memory. A server restart or replacement clears live rooms and scores. Redeploy between games.
- Home, Host Control, the scoreboard, the player screen, Admin Console, and the documentation pages use CYM branding. How to Play is available in English and Ukrainian.
- The home page and Version History show the current release. HTTP responses include
X-CYM-Jeopardy-Versionfor deployment checks. Each new release updates the version marker and its release notes together. - HTML uses
Cache-Control: no-store. The server fingerprints release files, uses that fingerprint in asset URLs, and exposes it inX-CYM-Jeopardy-Build. Matching versioned assets can be cached. - Visible tabs check for a new build roughly every minute and when returning to the foreground. Home and documentation pages reload automatically. Host, player, scoreboard, and admin tabs display a reload button so a user can choose when to refresh.
Release checks
- Open the home page, Requirements, Version History, and both languages of How to Play. Confirm the home page and the HTTP header show the version being deployed. Confirm HTML is served with
no-storeand asset URLs contain the build fingerprint. - Create two rooms and open their scoreboards. Join a team from two phones and verify that a buzz and score change apply to the correct team and room.
- Close the host tab and reopen it from Admin Console in the same browser. Verify that another browser can view the room but cannot end or close it without the private Super Admin link.
- Confirm the last host or player disconnect starts the five-minute timer. Reconnect before expiry and verify the room resumes. Repeat with only a scoreboard connected and verify the room closes.
- Check the selected language mix and the two easy high-value clues on a new board. Check both age groups. In Молодше, test each picture control, a wrong bonus answer, and an unaffordable Final choice. In Старше, exercise Daily Double and Final Jeopardy, including a late wager.

