Every strategy game needs an ending. A match where armies clash and bases fall but nothing ever declares a winner isn’t a game, it’s a simulation running forever. Milestone 26 closes that gap for Project Nightfall: the match loop can now finish.
What “victory” means right now
This milestone implements Annihilation: a player is eliminated once they have no meaningful presence left on the map. The match ends the moment only one player remains standing, and that player is declared the winner. If every remaining player is wiped out on the same tick, the match ends in a draw instead of silently picking a side.
The interesting design decision isn’t the win condition itself — it’s how “presence” gets defined. Rather than hard-coding “you’re eliminated when your units hit zero,” Project Nightfall treats presence as configurable data: a match can decide independently whether living units count, whether completed buildings count, or both. Right now every match uses “both count,” the safe default for a game where matches currently start without any pre-placed buildings. The mechanism is already built to support setups where, say, only buildings matter for staying in the game — without touching the underlying victory-checking code at all.
Avoiding a subtle trap
A naive elimination check has a classic failure mode: a player who’s lost their entire army except one hidden worker, with no base and no way back into the fight, can still technically be “in the match” forever, leaving the game stuck in limbo. This milestone’s design guards against that stalemate, and against the mirror-image bug: an unfinished, abandoned construction site doesn’t count as “still in the game” either, since nothing can ever finish or cancel it once its builder is dead. Only completed buildings count as presence, and only genuinely living units count — not phantom, unrecoverable footholds.
The system also refuses to activate with a nonsensical configuration — one where nobody could ever count as present — and it won’t declare a match over unless at least two players were actually in it to begin with. Small safeguards, but the kind that prevent an entire category of “the game ended before it started” bugs.
What players will see
On-screen, this currently shows up as a simple “GAME OVER” placeholder screen once a match concludes. It doesn’t make any decisions of its own — it purely reflects the outcome the underlying match logic has already computed, keeping victory rules and presentation cleanly separated.
One honest limitation: the game has no way to destroy a building yet, and no current match starts players with buildings already in place, so elimination today happens entirely through combat against units. The building-based side of the system is real and tested, but nothing yet puts it to use in a live match — that groundwork is there for when it’s needed.