-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Summary
Automatically capture and showcase memorable moments during gameplay, presenting them as a "Highlights Reel" at game end. This transforms the static final scoreboard into an engaging recap that celebrates the best plays and creates shareable party memories.
The Problem
Currently, the game ends with a scoreboard and superlatives. While informative, it doesn't capture the story of the game — the near misses, the epic streaks, the clutch plays. Players often forget specific moments by game end, and there's nothing shareable to commemorate a great session. The end-game experience is functional but not memorable.
Proposed Solution
Implement a GameHighlights system that tracks significant events during gameplay and presents them narratively at game end.
Captured Moments
| Emoji | Type | Description |
|---|---|---|
| 🎯 | Perfect Calls | Exact year matches with song name ("Sarah nailed 'Billie Jean' — 1982!") |
| 🔥 | Streak Achievements | When players hit 3/5/7+ streaks |
| 💰 | High-Stakes Wins | Successful bets that changed rankings |
| 💔 | Heartbreakers | Off-by-one guesses on iconic songs |
| 🏃 | Speed Records | Fastest correct submission of the game |
| 📈 | Comeback Kings | Players who rose 3+ positions in final rounds |
| 🎲 | Risk & Reward | Biggest bet wins and devastating losses |
| ⚔️ | Photo Finishes | Rounds where multiple players tied |
UI Integration
- New "🎬 Highlights" tab on end screen (alongside Leaderboard/Stats)
- Scrollable timeline of 5-8 best moments with emoji + narrative text
- Optional "Share" button generating a text/image summary
- Highlight cards animate in sequentially for dramatic reveal
Implementation Notes
1. Backend (game/highlights.py)
@dataclass
class GameHighlight:
type: str # "exact_match", "streak", "bet_win", etc.
round: int
player: str
description: str # Pre-generated narrative text
score_impact: int # Points involved
timestamp: float
class HighlightsTracker:
"""Captures and ranks memorable game moments."""
def record_exact_match(self, player, song, year): ...
def record_streak_achieved(self, player, streak_count): ...
def get_top_highlights(self, limit=8) -> list[GameHighlight]: ...2. State Integration
- Add
highlights_tracker: HighlightsTrackerto GameState - Hook into existing scoring paths (no changes to core logic)
- Include highlights in END phase
get_state()response
3. Frontend (end-view)
- New tab component with sequential reveal animation
- i18n strings for highlight narratives
- Share functionality (copy text / generate image via canvas)
Complexity Estimate
| Component | Hours |
|---|---|
| Backend tracker | 2-3 |
| State integration | 1-2 |
| Frontend display | 3-4 |
| Share feature | 2 |
| Testing | 2 |
| Total | 10-13 |
Why This Matters
- Increased Replay Value — Players remember and talk about specific moments, not just final scores
- Social Sharing — Shareable highlights create organic promotion
- Party Enhancement — The dramatic reveal creates a "movie moment" at game end
- Low Risk — Read-only tracking; no impact on game mechanics or scoring
- Builds on Existing Data — Most events are already tracked (streaks, bets, exact matches) — just needs aggregation and presentation
- Differentiator — No music trivia game does this; it's unique to Beatify
Generated from Nightly Review 2026-01-29