Cross-Platform Multiplayer Networking in Unity: FishNet, Mirror, and Photon Compared
The Three Contenders
FishNet - An open-source networking framework built specifically for Unity. Created by FirstGearGames, it positions itself as a modern, performance-focused alternative to Mirror.
Mirror - An open-source successor to Unity's deprecated UNET. The most widely adopted Unity networking solution, with a large community and extensive documentation.
Photon (PUN / Fusion) - A commercial networking platform with both client-hosted (PUN) and server-authoritative (Fusion) options. Provides managed infrastructure so you do not run your own servers.
Architecture: Server-Authoritative vs Peer-to-Peer
This is the most fundamental decision, and it constrains your framework choice.
Server-Authoritative - The server is the single source of truth. Clients send inputs; the server validates them and broadcasts the result. Cheating is significantly harder because the client cannot unilaterally modify game state.
When you need it: Any game with competitive mechanics, real-money economies, leaderboards, or persistent worlds. For Domi Online, server authority was non-negotiable as the game has a player-driven economy where item duplication or stat manipulation would destroy the game.
Frameworks: FishNet (excellent), Mirror (good), Photon Fusion (good, managed)
Peer-to-Peer / Client-Hosted - One player acts as the host. Other players connect to them. Simpler to set up, but the host has an inherent latency advantage and can potentially cheat.
When it works: Co-op games, casual multiplayer, games where cheating has low impact.
Frameworks: Mirror (common use case), Photon PUN (designed for this), FishNet (supports it but overkill)
Key Takeaway: Choose your architecture first, then pick the framework that best supports it. Do not let framework familiarity drive an architectural decision.
FishNet: Our Framework of Choice for Domi Online
Why We Chose It
When we evaluated networking options for Domi Online, we needed:
- Server-authoritative architecture with full state control
- Efficient bandwidth usage (MMORPG with hundreds of concurrent players)
- Extensibility for custom serialisation of our 64-bit progression system
- Active development and responsive maintainer
FishNet met all four criteria.
Strengths
- Prediction and reconciliation - FishNet's client-side prediction is mature and well-documented. Players see immediate feedback on their actions while the server validates asynchronously.
- Object spawning - network object lifecycle management is clean. Spawning, despawning, and ownership transfer are straightforward.
- Custom serialisers - we wrote custom serialisation for our 64-bit stat system. FishNet's serialiser API made this painless.
- Performance - benchmarks consistently show lower bandwidth overhead than Mirror for equivalent workloads.
- Active development - the maintainer ships regular updates and is responsive to issues.
Weaknesses
- Smaller community - fewer tutorials, Stack Overflow answers, and third-party integrations compared to Mirror
- Documentation gaps - improving rapidly, but some advanced features require reading source code
- Learning curve - developers coming from PUN or Mirror will need adjustment time
Mirror: The Community Standard
Strengths
- Massive community - the most widely used Unity networking solution. Finding answers to common problems is easy.
- Extensive transports - supports WebSocket, KCP, Steam, and more out of the box
- Battle-tested - used in hundreds of shipped games across diverse genres
- Low barrier to entry - getting a basic multiplayer prototype running is fast
- Well-documented - comprehensive documentation and numerous tutorials
Weaknesses
- Bandwidth efficiency - Mirror's default serialisation is less efficient than FishNet's. For small-scale multiplayer (4-16 players) this is irrelevant. For MMO-scale, it adds up.
- Prediction - client-side prediction exists but is less mature than FishNet's implementation. Requires more manual work for smooth results.
- Host migration - limited support. If the host disconnects in a client-hosted game, recovery is complex.
When to Choose Mirror
Mirror is the right choice when:
- Your game has 2-16 players (co-op, competitive matches)
- Development speed matters more than bandwidth optimisation
- Your team has existing Mirror experience
- You need maximum community support and third-party asset compatibility
Photon: Managed Infrastructure
Strengths
- No server management - Photon handles matchmaking, relay servers, and infrastructure scaling. You do not run your own servers.
- Global infrastructure - data centres worldwide with automatic region selection
- Quick prototyping - PUN (Photon Unity Networking) gets a multiplayer prototype running in hours
- Photon Fusion - their newer framework supports server-authoritative architecture with tick-based simulation, comparable to FishNet in capability
Weaknesses
- Cost at scale - Photon charges per CCU (concurrent user). For an MMORPG with thousands of concurrent players, costs escalate quickly. This was a decisive factor in our decision not to use Photon for Domi Online.
- Vendor lock-in - your networking code is tied to Photon's API. Migrating away is a significant rewrite.
- Less control - you cannot inspect or modify the server infrastructure. Debugging latency issues requires Photon's support team.
- PUN limitations - PUN is client-hosted only. For server-authoritative, you need Fusion, which has a steeper learning curve.
When to Choose Photon
Photon is the right choice when:
- You do not want to manage servers
- Your CCU will stay under a few hundred (where the free/affordable tiers apply)
- You need rapid prototyping with minimal backend work
- Global matchmaking is a requirement and you want it out of the box
Head-to-Head Comparison
| Factor | FishNet | Mirror | Photon PUN | Photon Fusion |
|---|---|---|---|---|
| Architecture | Server-auth or P2P | Server-auth or P2P | Client-hosted only | Server-auth |
| Cost | Free (open-source) | Free (open-source) | Per-CCU pricing | Per-CCU pricing |
| Server management | Self-hosted | Self-hosted | Managed | Managed |
| Bandwidth efficiency | Excellent | Good | Good | Excellent |
| Client prediction | Mature | Basic | N/A | Mature |
| Community size | Growing | Large | Large | Growing |
| MMO suitability | Excellent | Possible | Poor | Good (but costly) |
| Prototyping speed | Moderate | Fast | Very fast | Moderate |
Framework Comparison at a Glance
Here is how FishNet, Mirror, and Photon compare across the factors that matter most when choosing a multiplayer framework:
| Feature | FishNet | Mirror | Photon |
|---|---|---|---|
| Server authoritative | ✅ Excellent | ✅ Supported | ⚠️ Fusion only (PUN is client-hosted) |
| Free/open source | ✅ MIT licence | ✅ MIT licence | ❌ Per-CCU pricing |
| Cloud hosting | ❌ Self-hosted | ❌ Self-hosted | ✅ Managed infrastructure |
| MMO scale | ✅ Built for large scale | ⚠️ Possible with effort | ⚠️ Costly at high CCU |
| Learning curve | ⚠️ Moderate | ✅ Low barrier to entry | ✅ PUN is very fast to learn |
| Active development | ✅ Regular updates | ✅ Mature, stable | ✅ Actively maintained |
| Unity integration | ✅ Purpose-built for Unity | ✅ Purpose-built for Unity | ✅ Official Unity SDK |
Our Recommendation
There is no universal "best" framework. The right choice depends on your game:
- Building an MMO or competitive game with a persistent world? FishNet. The bandwidth efficiency and prediction systems justify the smaller community. This is what we chose for Domi Online.
- Building a co-op or small-scale multiplayer game? Mirror. The community support and rapid development speed outweigh its efficiency gap at small player counts.
- Building a prototype or MVP with no backend team? Photon PUN. Get something playable fast and evaluate whether the pricing model works at your projected scale.
- Need server-authoritative without managing infrastructure? Photon Fusion. But model your CCU costs carefully before committing.
Key Takeaway: The framework you prototype with is not necessarily the framework you ship with. Evaluate based on your production requirements, not your prototyping requirements.
Related Reading
- Domi Online Case Study - Our MMORPG networking architecture in practice
- Network Engineering Services - How we approach multiplayer projects
- Domi Online Project Page - The game itself
- Game Development Cost Estimator - Multiplayer significantly affects project cost.
Comments
No comments yet. Start the discussion.