Finding the Most Fun 15 Seconds of a Karaoke Performance

Karaoke Play of the Game

I designed a system that identifies the most fun 15 seconds of a player or group's performance. Dozens of different moments throughout the song were given different weights based on how entertaining or significant they were, with the highest-scoring segment being replayed at the end of the session.

The system had to respect special edge cases such as when the game is paused, or when one of the singers has a terrible internet connection.

Gameplay under NDA


My "Plan of Approach"

I came up with the following steps to handle this task:

  1. Identify the different motivations the target audience might have for enjoying karaoke.

    Reasoning: "Fun" is subjective, so I first needed to understand what different players actually value in a karaoke experience.

  2. Determine which recorded in-game events could realistically represent those motivations.

    Reasoning: Once I knew what players found enjoyable, I needed measurable events that could indicate those experiences.

  3. Determine the weights of those events by surveying the target audience.

    Reasoning: Not every event contributes equally to the experience, so I used player feedback to determine how much each event should influence the final moment.

  4. Determine how these weights should be combined when calculating the most fun moment.

    Reasoning: A single event could not always represent the most enjoyable part of a performance, so the system needed to combine multiple events into one final highlight somehow.

  5. Implement the weighted events and replay the chosen moment at the end of the karaoke session.

    Reasoning: This needs to be done to playtest and tune the previous two steps.

  6. Hold playtests and make balancing adjustments.

    Reasoning: The initial weights were based on research, but playtesting was necessary to find cases where the system produced unintuitive or uninteresting results.

Research is OP


First Iteration

My first iteration worked pretty different. It measured the following "fun" categories based on earlier desk research and the game's mechanics:

The peak of each of these moments were attempted to be calculated throughout the song:


However, this system sucked. As my research had already showed, the target audience likes karaoke for a wide variety of reasons.

This means that if we only looked at the most extreme moment of a song, you wouldn't represent everyones fun properly. The image shows a moment with the "worst individual performance" having the highest weight, but in most cases, a group would want the best individual performance + audience cheered to replay instead.

That's how I ended up with the latest iteration, where multiple identifiers can contribute simultaneously to the highest weighted, most fun 15s of a karaoke session.

You might've noticed the list of identifiable moments to be different, which has the following reasons:


UML

I have also designed and implemented the technical side of the system: