DEV Community

Cover image for A 3–0 Score Needs a Scope: Model Esports Results Without Inventing the Story
Krishna Soni
Krishna Soni

Posted on Originally published at global.krizek.tech

A 3–0 Score Needs a Scope: Model Esports Results Without Inventing the Story

Black-and-white keyboard with red keys, an illustrative gaming photograph

Illustrative photo by JL Cabrera on Unsplash, not tournament footage.

Cupid Esports beat Maryville University 3–0 in their September 11, 2026 NACL Summer playoff series. That is a useful result. For a developer building a match page, it is also a reminder: a score needs a scope.

Three game wins in a series, seventeen kills in one game, and a claim about superior drafting are three different kinds of information. Store them as though they were interchangeable and a perfectly valid number can acquire a meaning the evidence never supported.

Start with a small contract

This standalone JavaScript example models the confirmed series result. It is an illustrative local fixture, not a live API integration or a production-ready tournament engine.

const series = {
  format: 'bo5',
  state: 'completed',
  teams: ['Cupid Esports', 'Maryville University'],
  gameWins: [3, 0],
};

function winnerOfCompletedBo5({ format, state, teams, gameWins }) {
  if (format !== 'bo5' || state !== 'completed') {
    throw new Error('Expected a completed best-of-five');
  }
  if (teams.length !== 2 || gameWins.length !== 2) {
    throw new Error('Expected two teams and two scores');
  }
  if (!gameWins.every(n => Number.isInteger(n) && n >= 0 && n <= 3)) {
    throw new Error('Invalid game-win count');
  }
  const winners = gameWins.flatMap((n, i) => n === 3 ? [i] : []);
  if (winners.length !== 1) {
    throw new Error('A completed bo5 needs exactly one winner');
  }
  return teams[winners[0]];
}

console.log(winnerOfCompletedBo5(series)); // Cupid Esports
Enter fullscreen mode Exit fullscreen mode

The function answers one question: which team reached three game wins in a completed best-of-five? It does not infer match quality, draft advantage, or player psychology.

That boundary is the feature. A validation helper should not quietly become an editorial engine.

Separate the series from its games

GosuGamers' series page lists the 3–0 result. Games of Legends' game-three page records a 17–15 kill score and a 30:39 duration.

Those observations can coexist. A sweep is three game wins; it does not mean every metric in every game was one-sided. Equally, a close kill count alone does not establish that the game was close overall. Gold, objectives, timing, and the replay supply different context.

For a results application, I would use three separate records:

  • Series result: tournament, date, format, teams, completed state, game wins, and source.
  • Game observation: parent series, game number, metric name, unit, value, source, and retrieval time.
  • Analysis: an attributed interpretation, the observations supporting it, and any replay timestamps needed to evaluate it.

The same distinction belongs in the interface. Label “Series: 3–0” rather than an unexplained “Score.” Label a per-game statistic with its game number. Do not place a rating beside a result without identifying the rating system and its date.

Test the edge cases before adding a summary generator

A useful first test set is tiny:

  • [3, 0] and [2, 3] produce the appropriate winner.
  • [2, 1] fails when the record says the best-of-five is complete.
  • [3, 3] fails because the series cannot have two winners.
  • Negative or fractional game-win counts fail.
  • A live series is handled elsewhere rather than forced into the completed-series path.

Real tournament software needs explicit policies for forfeits, disqualifications, corrections, format changes, and missing data. This example deliberately does not model those exceptions. Treating them as ordinary played wins can mislead the reader just as easily as mixing series and game scores.

Keep the raw provider value and its provenance when normalizing data. If two sources disagree about format or timing, surface that disagreement for review instead of silently choosing whichever makes a nicer headline.

Give the reader a useful next question

The interesting move is from “who won?” to “what should I inspect next?”

A result can link to game-level observations. Those observations can guide a replay review: where did a lead become a durable advantage, and what happened immediately before the objective? That is an investigation prompt, not a claim that the scoreboard proves why Cupid won.

For developers, disciplined data boundaries create room for better analysis. For fans, they preserve the pleasure of finding the story in the games themselves.

When you build a results view, which distinction do you make most explicit: series versus game, live versus final, or observation versus interpretation?

Full KRI ZEK esports article.

Download Altered Brilliance: https://play.google.com/store/apps/details?id=tech.krizek.alteredbrilliance

Global website: https://global.krizek.tech

Pre-register for Arzenal Human Health: https://play.google.com/store/apps/details?id=tech.krizek.arzenal

Join The Power Of Gaming: https://discord.gg/sbYSPcCqJn

Top comments (0)