Multiplayer Game Development | Photon, Netcode, Servers

Photon Fusion and Quantum, plus authoritative servers we write ourselves in Node.js. Shipped in browsers, on phones and in headsets including a competitive FPS running deterministic netcode in a browser tab.

What We Build

Real-time action. Shooters, arena games, anything where a hundred milliseconds decides the outcome. Astar Strike Online is a multiplayer FPS running on Photon Quantum; in a browser, which is the harder version of an already hard problem.

.io and casual arena. Short-session, high-churn, mass-lobby games where the technical challenge is filling matches rather than shaving latency. We’ve built these on mobile and web.

Turn-based and asynchronous. Card games, strategy, management sims. The netcode is easier and the backend is harder; persistent state, seasons, standings, and an economy that has to stay balanced across thousands of concurrent players.

Social and shared spaces. Voice, avatars, hand presence, and users arriving from different device classes into the same room. See the cross-platform VR and PC environment we built.

Competitive and ranked. Matchmaking, skill rating, leaderboards, and the anti-cheat that has to exist before ranked mode does, not after.

Live-ops backends. Accounts, progression, events, remote configuration, version gating — the layer that lets you run a live game without shipping a build for every change.

Choosing the Netcode

There is no default answer, and picking wrong is expensive to reverse. Here’s how we actually decide:

Best forModelCheat resistance
Photon FusionMost modern real-time games; action, co-op, shootersTick-based, client prediction and lag compensation, host or dedicated server modesGood in server mode
Photon QuantumCompetitive and esports titles, fighting, RTS, anything with prizesDeterministic ECS with rollback; only inputs travelHighest – clients can’t diverge
Photon PUN 2Simple room-based games, and existing PUN codebasesRoom-based, client-hosted, mature and simpleLow – client-authoritative by nature
Custom Node.js serverAnything where the outcome has value attachedFully authoritative, we own the logicHighest – we control every rule

Fusion is where most new real-time projects should start. It handles prediction and lag compensation properly, and its dedicated-server mode gives you authority without writing a simulation from scratch.

Quantum is what you use when players have a reason to cheat and determinism is worth the constraint. Because only inputs are transmitted and every client runs an identical simulation, there’s no divergence to exploit. That’s why it’s behind Astar Strike, where an on-chain reward layer meant every match outcome had a market value attached to it.

PUN 2 is still the right call for straightforward room-based games and for maintaining an existing codebase. We used it on a real-time .io mobile title with lobbies, live leaderboards and bots but we wouldn’t start a new competitive game on it.

Our own servers come in when the game logic itself has to be authoritative rather than just the transport.

When Photon Isn’t Enough: Our Own Servers

Transport is not authority. Photon moves messages between clients reliably; it doesn’t decide whether a shot hit, whether a hand of cards was legal, or whether a match result was earned.

For anything where an outcome maps to value; ranked position, a token, a squad asset, a payout, that decision belongs on a server we control. So we write authoritative game servers in Node.js, and the client becomes a renderer that submits intentions and displays results.

We’ve done this for a football management sim where the entire match simulation and economy run server-side, and for iGaming formats where every round is resolved and logged before the client is told anything. Around it sits session validation, replay protection, rate limiting, and a per-round audit trail because when assets change hands, disputes are inevitable and “we have the log” is the only useful answer.

The rule is simple and we apply it everywhere: assume the client is hostile and design as though it has already been compromised.

The Problems That Actually Kill Multiplayer Games

Latency gets all the attention. These are what we see go wrong:

Empty lobbies. A match that can’t fill is a match nobody plays, and the effect compounds; the first players leave, so it stays empty, so the next players leave. Bots, region logic and match-fill are launch requirements, not polish. We build them in before release because retrofitting them into a game with declining numbers rarely works.

Disconnects. Players lose signal in lifts, tunnels and on hotel wifi. A design that assumes stable connections produces broken matches and furious reviews. Our .io work fills a disconnected player’s slot with a bot so the match survives the person leaving it.

Reconnection. Coming back into a match in progress with correct state is significantly harder than joining a fresh one, and it’s usually deferred until it’s expensive.

Version fragmentation. Once there are players, you need version gating so out-of-date clients can’t join a live match and corrupt it.

Cheating. It arrives faster than anyone expects, and the architectural decisions that prevent it are made at the start or not at all.

Multiplayer Per Platform

Browser. Our particular specialism. Over 100,000 players across our web titles, with the constraints that come with it: memory ceilings, tabs being backgrounded and throttled, and sessions that have to survive a laptop waking from sleep. See WebGL game development.

Mobile. Unstable connections as the normal case rather than the edge case, plus battery and thermal budgets that shape how often you can afford to send anything.

VR. Head and hand pose to synchronise convincingly, physical object handoffs between players, spatial voice and a frame rate that can’t drop, because in a headset that isn’t a quality problem but a comfort one. See VR and XR development.

Common Questions

Which Photon product should we use?

Fusion for most new real-time games, Quantum when cheating matters or the game is competitive. It’s a decision worth twenty minutes on a call before anyone commits.

Do we need dedicated servers?

If outcomes have value attached, yes. If it’s casual co-op with friends, usually not. The cost difference is significant, so it’s worth deciding deliberately.

Can you take just the multiplayer layer?

Yes; that’s co-development, and netcode is one of the most common workstreams studios hand us because it’s among the hardest things to hire for directly.


Start a Project

Tell us the game, the target concurrency, and whether anything of value rides on the outcome. That last answer changes the architecture more than anything else.

Scope, team composition and a fixed quote come back within two business days.