Skip to content

Feature: Game Highlights Reel — Auto-Generated End-Game Moments #75

@mholzi

Description

@mholzi

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: HighlightsTracker to 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

  1. Increased Replay Value — Players remember and talk about specific moments, not just final scores
  2. Social Sharing — Shareable highlights create organic promotion
  3. Party Enhancement — The dramatic reveal creates a "movie moment" at game end
  4. Low Risk — Read-only tracking; no impact on game mechanics or scoring
  5. Builds on Existing Data — Most events are already tracked (streaks, bets, exact matches) — just needs aggregation and presentation
  6. Differentiator — No music trivia game does this; it's unique to Beatify

Generated from Nightly Review 2026-01-29

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestv2.6.0Target release v2.6.0

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions