DEV Community

Cover image for Same three players, new organization: model esports rosters without rewriting history
Krishna Soni
Krishna Soni

Posted on Originally published at global.krizek.tech

Same three players, new organization: model esports rosters without rewriting history

People playing games together at computers; illustrative, not the NAVI roster
Illustrative photo by Stem List on Unsplash, not a photo of the players discussed.

Three players can change organizations without becoming three new teammates.

On March 20, 2025, NAVI announced that Uxako, Hiarka and zhidan, previously of GoNext Esports, would represent NAVI in Apex Legends. Its announcement also listed Esteves33 as coach and recalled the players' ALGS: 2024 Championship victory earlier that February.

This is a historical example, not a current-roster update. For anyone building an esports tracker, it exposes a useful modeling problem: the organization label changed, but the player trio continued.

Start with three separate questions

Before choosing tables, decide what your page is trying to describe:

  1. Which people were in a lineup?
  2. Which organization did that lineup represent at the relevant time?
  3. Which competition entry earned a particular result?

Those questions overlap, but they are not interchangeable. A profile showing today's organization cannot reliably tell you the organization under which a player won a past tournament.

A practical model might separate these records:

Record Captures Avoids
Player Stable identity plus display-name history Treating a handle change as a new person
Lineup snapshot Player IDs observed together at a dated point Treating a new organization as automatically a new lineup
Representation evidence Organization, lineup, source and relevant dates Turning an announcement date into an invented contract start
Competition entry Event, represented organization and actual participants Crediting an old result to a player's newest employer

These are proposed design choices, not a description of NAVI's internal systems.

Keep the evidence date honest

A minimal evidence record could look like this:

{
  "game": "Apex Legends",
  "organization_announced": "NAVI",
  "players_named": ["Uxako", "Hiarka", "zhidan"],
  "coach_named": "Esteves33",
  "announcement_date": "2025-03-20",
  "contract_effective_date": null,
  "source_url": "https://navi.gg/en/publications/apex-navi-new-team-march-25"
}
Enter fullscreen mode Exit fullscreen mode

The null is intentional. The public announcement establishes what NAVI announced on March 20. It does not, by itself, establish the effective date of every underlying contract.

For a production tracker, resolve handles to stable player IDs and retain the source text used for that resolution. The display names above make the example readable; they are not a recommendation to use names as database primary keys.

Also keep coaches distinct from active player slots. A useful continuity view can show both without counting a coach as a fourth Apex player.

Preserve the result as it happened

The championship happened before the NAVI announcement. The result should remain attached to the historical competition entry rather than being relabeled whenever the players' current organization changes.

A player page can still say that the individual won that championship. An organization page answers a different question: what did entries representing that organization achieve?

Both views are valuable. The error is letting one silently stand in for the other.

This matters for ordinary fan-facing features too. A roster-change notification should be able to distinguish “same trio, new organization” from “one player replaced” and “a completely new lineup.” Otherwise, an accurate database can still produce a misleading headline.

Test the story your joins produce

Before shipping the tracker, try these fixtures:

  • Updating a player's current organization leaves older competition entries unchanged.
  • The same three stable player IDs under another organization register player continuity and an organization change.
  • Replacing one active player creates a different lineup snapshot.
  • A coach-only change is visible without changing the active player count.
  • An unknown effective date stays unknown; it is not filled from a nearby announcement.
  • A historical page displays its as-of date rather than presenting itself as today's roster.

These checks establish data consistency, not team chemistry or future performance. A shared lineup does not prove that tactics, roles, support or results stayed the same. Those need their own evidence.

My preference is simple: preserve the people, the badge and the competition entry separately, then make the UI say which one changed.

If you were building a roster notification, which would you show first: player continuity or organization change?

Primary source: NAVI's March 20, 2025 announcement.

Full KRI ZEK Q1 2025 roster retrospective.

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)