A new multiplayer game has a problem that no amount of polish fixes: on day one, there may be nobody to play against. We are designing the multiplayer in FootyQuiz so that a player always gets a match quickly, the match is honest about who the opponent is, and the system gets better as more people join. This note walks through the reasoning behind that design.

Key takeaways

  • The empty-lobby problem is a design problem, not just a marketing problem. Short-session games cannot ask players to wait.
  • Hybrid matchmaking tries a live opponent first, then a ghost (a recorded run by a real player), then a bot.
  • Ghost PvP only feels fair if both players face the same questions under the same timing rules.
  • Players should always know whether they faced a live person, a ghost or a bot.
  • Ranked play needs clear rules for which match types count, and scoring should be decided by the server.
  • Asynchronous modes such as daily challenges and friend challenges create multiplayer value without requiring two people online at once.

The empty-lobby problem

The empty-lobby problem is what happens when a multiplayer game depends on two players being online at the same moment, but there are not yet enough players for that to happen reliably. A player taps “Play,” watches a searching animation, and gives up.

Large games solve this with volume. A new game from an independent studio cannot assume volume, so the design has to work without it.

Why waiting hurts short-session games most

FootyQuiz, our football trivia game, is currently in development. It is built around quick matches: a handful of questions, a few minutes, done. That format is exactly what makes waiting so costly.

If a match lasts a couple of minutes, a long search can take a significant share of the whole session. A player who opened the game for a short break may spend that break looking at a spinner. In a longer game, a wait is a pause; in a quick-match game, it can be the whole experience.

So we treat time-to-first-question as a core design constraint, on par with question quality.

The hybrid matchmaking ladder

FootyQuiz’s matchmaking is designed as a ladder. Each step is tried for a limited time, and if it does not produce a match, the system moves down to the next step.

  1. Live PvP. Look for a real player who is online now and searching at a similar level.
  2. Ghost PvP. If no live opponent is found, match the player against a recorded run of a real player’s match.
  3. Bot fallback. If no suitable ghost is available, the player faces a bot tuned to an appropriate difficulty.

The point of the ladder is that every step ends in a real, playable match. Nobody is left in a lobby.

Time budgets

The exact numbers will come from playtesting, but the shape matters more than the values. As an illustrative design target only, not a measured result:

Step Illustrative search budget What the player sees
Live PvP A few seconds “Finding an opponent”
Ghost PvP Near-instant lookup Opponent card labeled as a recorded run
Bot fallback Immediate Opponent card labeled as a bot

We expect to tune these budgets as the player base changes. A short live window avoids pointless waiting when few players are online, and succeeds more often as more join.

How ghost PvP works

Ghost PvP means playing against a recorded run of a real player’s match: the same questions, with that player’s actual answers and response times replayed alongside yours. It keeps the feel of competing against a person without requiring that person to be online.

What gets recorded

For each eligible match, the server stores the question set, the order questions appeared in, and for each question the answer chosen and the time taken. That is enough to replay the opponent’s progress in real time during a later match.

Fairness rules

A ghost match is only meaningful if the conditions are equivalent. Our design rules:

  • Same question set, same order. The new player receives exactly the questions the ghost answered.
  • Same timing rules. Time limits and scoring by speed must match the version of the rules the ghost played under. If scoring rules change, older ghosts are retired or excluded.
  • Same language content. A ghost recorded on one language’s question set is only matched with players using that same set. This connects to how we think about building multilingual apps from the start.
  • Questions stay fresh. A question set used for ghost matches should not be one the new player has just seen, or the match tests memory instead of knowledge.
  • Only valid runs. Abandoned matches and runs flagged by server checks are not used as ghosts.

Why not just use bots?

Bots are useful, but they are hard to make feel human. Real players hesitate on hard questions, answer quickly on easy ones and make plausible mistakes. A ghost carries those patterns automatically, because it is a real person’s play.

Being honest about opponents

We think players should always know what kind of opponent they faced. FootyQuiz’s design labels every opponent as a live player, a recorded run, or a bot, both before and after the match.

There are practical reasons beyond principle. If a game passes off bots as people, players eventually notice, and that damages trust in everything else the game claims, including its rankings.

Keeping ranked play meaningful

Ranked play is where the matchmaking ladder needs the most care, because rank is a promise that the number means something.

The policy we are designing toward:

  • Live PvP matches count fully toward rank. Both players are present, and the server scores both sides.
  • Ghost matches can count, with limits. The ghost is a real player’s performance on identical questions, so the result reflects relative knowledge. Only the live player’s rating changes; the ghost’s owner is unaffected by a replay of a match they already finished.
  • Bot matches do not affect rank. They can award practice progression, but a rating should not be earned from beating software.

We also want the ranked queue to prefer live opponents more strongly than casual play does, accepting a slightly longer search in exchange for more meaningful results.

Asynchronous multiplayer

Not every form of competition needs two people online at once. Two FootyQuiz modes are designed to be asynchronous from the start.

Daily challenges

Everyone gets the same set of questions for the day. Players compete on the result, not on being online at the same time. A daily challenge works for a small player base because it collects all players into one shared event, and its question set can be prepared and cached ahead of time.

Friend challenges

A player completes a run and sends it to a friend, who plays the same questions later. Technically this is ghost PvP with a chosen opponent. Socially, it is often more engaging than a stranger, because the result means something to both people.

Both modes also degrade gracefully with poor connectivity, which matters given our general approach to offline-first mobile apps: the run can be played and stored, with the result submitted when the connection returns.

Server-authoritative scoring and anti-cheat basics

Any competitive mode needs the server, not the device, to be the judge. Our baseline approach:

  • The server holds the answers. The client receives questions and returns choices; the correct answer is not trusted to the client in competitive modes.
  • The server calculates the score. The device reports what was chosen and when; the server applies the rules and computes the result.
  • Timing is checked on the server. Answers that arrive impossibly fast, or after the limit, are handled by server rules rather than client claims.
  • Results are idempotent. Each match result has a unique ID, so a retried submission cannot be counted twice.
  • Suspicious runs are excluded. A run that fails checks does not affect rank and is never reused as a ghost.

None of this makes cheating impossible, but it closes the easiest routes.

Designing for growth

The ladder is designed to shift naturally as more people play, without a rewrite:

  • More players online means more live matches found within the same search window.
  • More completed matches means a larger, fresher pool of ghosts at every skill level.
  • Bots become a rare safety net rather than a regular opponent.

The same code paths serve all three stages. What changes is how often each step succeeds.

What we are deliberately not building yet

Scope is a design decision too. For now, we are not planning:

  • Real-time voice or open text chat between strangers.
  • Large lobbies or tournaments that require many players online at once.
  • Elaborate party systems before the core one-on-one match is solid.

Each of these may make sense later. Building them before the core match loop is proven would add moderation, infrastructure and design cost for a player base that does not exist yet.

Summary checklist

  • Treat time-to-first-match as a core constraint.
  • Use a ladder: live PvP, then ghost PvP, then bot.
  • Replay ghosts on identical questions, rules and language.
  • Label every opponent type clearly.
  • Decide which match types affect rank, and write it down.
  • Add asynchronous modes that work with few players.
  • Keep scoring and timing server-authoritative.

Follow FootyQuiz’s development

FootyQuiz multiplayer football trivia is in development and not yet available. Its quick matches, offline mode, hybrid matchmaking, ranked play, daily challenges and friend challenges are all being designed around the ideas in this note. The rest of the portfolio is on EacTech mobile products, and other studio notes are collected in EacTech Build Notes.