
This guide shows you how to host a multiplayer game built with Unity on Edgegap's dedicated game servers, whichever netcode you use, then add matchmaking so players are grouped and connected to a server near them automatically.
Once your game server is containerized, Edgegap deploys it worldwide to 615+ Edge Cloud locations (on-demand) from a simple API call and billed exclusively on usage: no entire server to rent, provision or keep running between matches. For persistent servers of reserved capacity, Edgegap offers Private Fleets. Edgegap's Matchmaking builds on top of that and is optional.
Unity doesn't network your game on its own: you need a netcode library. Fortunately, Edgegap has an integration for each popular one: Netcode for GameObjects, Mirror, Fish-Networking, Photon Fusion 2 and PurrNet. This page covers what every Unity project shares; each netcode's page covers its specifics.
This guide covers:
Preparing Unity, your netcode, your Edgegap account and a containerization tool
Connecting your coding agent to Edgegap (optional)
Getting your game ready for dedicated servers, whichever netcode you use
Building and containerizing your game server
Deploying a test server and connecting to it
Adding matchmaking (optional)
Testing the full loop with two players
You can do it two ways, and mix them:
With a coding agent. Connect Claude Code, Cursor or another agent to the Edgegap MCP server and its agent skills. The agent edits your project, builds and containerizes the server, deploys it and writes the matchmaking code. You handle the clicks in Unity and the Edgegap dashboard, and playtest.
By hand. Every step below also works without an agent.
For building and containerizing the server, Edgegap's automated game server build tool plugin for Unity is optional. It builds your server, containerizes it and deploys it to the cloud from buttons in the Unity Editor, the quickest way to see your server online for the first time (step 4, Option A).
The video in step 4 uses Mirror's Tanks example on Unity 6.3 LTS. Any Unity project that runs as a dedicated server works the same way.
1. Before you start
A free Edgegap account. Verify your email. No credit card is needed to test.
Unity Engine with the Linux build modules installed. Edgegap recommends an LTS version.
Add these modules from Unity Hub: Linux Build Support (Mono), Linux Build Support (IL2CPP) and Linux Dedicated Server Build Support. Restart Unity after adding them.
We use Unity 6.3 LTS. The newest non-LTS releases can break netcode packages, so stay on LTS for anything you ship.
On Windows, Unity 6 may also ask for the Linux toolchain package (
com.unity.toolchain.win-x86_64-linux) the first time you build for Linux.
A netcode, working on localhost. Two players should be able to join and play with one instance as the server. No netcode yet? Unity's own Netcode for GameObjects is a good default; for a browser (WebGL) game, use Mirror.
A containerization tool, running. We recommend Docker Desktop, installed and running while you build.
Other container tools work with Edgegap too, but this guide only covers Docker.
For the agent path: an Edgegap API token, from Dashboard → User Settings → Tokens. It is organization-wide, so treat it like a password: never put it in your project, your game client or a chat.
Git: Unity needs a Git client (2.14.0 or newer) on your PATH to install packages from a Git URL, such as the Edgegap plugin. macOS usually has one already (Xcode Command Line Tools); on Windows, install Git.
2. Connect your coding agent to Edgegap
Skip this step if you're doing everything by hand.
The Edgegap MCP server lets your agent create apps and versions, deploy servers, read logs and generate matchmaker configurations on your account. The agent skills give it the tested Unity workflow, C# templates, netcode adapters, the Dockerfile and the known pitfalls.
Claude Code (run in your own terminal, so the token never passes through the chat):
claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user
Then install the skills: /plugin marketplace add edgegap/edgegap-agent-skills, then /plugin install edgegap@edgegap. Restart the session.
Cursor, VS Code and other clients that send headers: add https://mcp.edgegap.dev/mcp with the header Authorization: token YOUR_EDGEGAP_API_TOKEN, and install the skills with npx skills add edgegap/edgegap-agent-skills --skill "*".
Claude Desktop: custom connectors can't send the header, so use the local server instead (Node 18+): { "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }. It asks for the token on first use.
Check it works:
"List my Edgegap apps."
An empty list is fine. An error about the token usually means the header reads token token ....
3. Get your game ready for dedicated hosting
On Edgegap, no player hosts the match. A headless dedicated server owns the game, so the dedicated server must start on its own, listen on a fixed port and stop when the match is over.
Find your netcode. Each has its own Edgegap integration, with its settings, port and sample:
Netcode for GameObjects, Unity's own netcode: Unity Transport, 7777/UDP by default.
Mirror: KCP Transport, 7777/UDP. SimpleWebTransport for WebGL.
Fish-Networking: Tugboat, 7770/UDP. Bayou for WebGL.
Photon Fusion 2: dedicated server mode, port and protocol in its guide.
PurrNet: port and protocol in its guide.
With your agent:
"Load the edgegap-unity skill and make this project dedicated-server ready for its netcode: server builds start the server headless on 0.0.0.0 and a fixed port, players spawn when clients connect, and the server stops itself when the match ends. Add the Edgegap server lifecycle and matchmaking client scripts with the right netcode adapter. Then check it still works locally with one server and one client."
The skill has tested adapters for Netcode for GameObjects and Mirror, and sends FishNet projects to its edgegap-fishnet skill. For other netcodes, the agent writes the adapter from the library's documentation.
By hand, whatever the netcode:
In server builds, start the server, never a host. Nothing on the server path should wait for a menu or a button.
Listen on all interfaces (
0.0.0.0) at a fixed port: your transport's default from the list above.Spawn players when clients connect, not a local player for the host.
Remove relay, lobby or join-code calls from the server path. Keep a direct IP connection for testing.
Make sure the scene with your network manager is enabled in Build Settings. Only enabled scenes get built.
Set
Application.targetFrameRate(30 to 60) on the server, or the headless build spins a CPU core at 100%.
Test locally first: one Editor (or build) as the server, one as a client, with Unity's Multiplayer Play Mode. Don't containerize a game that doesn't work on localhost.
4. Build and containerize your server
Edgegap runs your Linux server build inside a container. Use either option, or both: for example, the plugin for your first deploy and your agent for every build after that.
Option A (optional): Edgegap's automated game server build tool plugin for Unity. The quickest way to a first cloud deploy, all from buttons. It uses Docker to containerize your server. The video below shows this path.
In Unity, select Window → Package Manager, select +, then Add package from git URL, and paste
https://github.com/edgegap/edgegap-unity-plugin.git.Open Tools → Edgegap Server Hosting, sign in, and paste the token it gives you under Connect your Edgegap Account. Select Validate Token.
Select Build Server. The build lands in
Builds/EdgegapServer/ServerBuild.With Docker running, select Validate, then Containerize with Docker. Optionally, Deploy Local Container and connect a client to it.
Select Upload Image and Create App Version. In the browser, set the port to your netcode's port and protocol (step 3), named
gameport. The plugin pre-fills 7770/UDP named "Game Port": change both if your transport differs. Submit.
Option B: ask your agent.
"Build the Linux dedicated server, containerize it with the edgegap-unity Dockerfile for linux/amd64, push it to my Edgegap Container Registry with a new tag, then create the app and app version with my netcode's port and protocol, named gameport."
The agent asks you to run docker login registry.edgegap.com yourself, with the username and token from the Container Registry page, so those credentials stay out of the chat. Make sure the app version has the registry credentials set: without them, deployments fail with "Unable to pull image from registry".
Use a new image tag for every build, never latest.
Here's our video tutorial for Edgegap's plugin for Unity, on Unity 6.3 LTS with Mirror's Tanks example:
5. Deploy a test server and connect
Start one server by hand to prove the image, the port and your netcode work before adding matchmaking. Any of these works:
From the plugin: choose your app and version, then select Deploy to Cloud.
From the dashboard: open your app version in the Edgegap dashboard, select Deploy, pick a location close to you, and deploy.
From your agent: "Deploy my latest Edgegap version near me, wait until it's ready, show me the logs, and give me the address and external port."
When the deployment is Ready, copy its Host URL (or Host IP) and External Port, put them in your client's connection settings, then press Play. Some transports, such as Unity Transport, expect the IP rather than the host name; browser (WebGL) clients connect with wss:// to the host name. The external port changes on every deployment, so read it each time. The server can take up to a minute after Ready to accept players.
Stop the deployment when you're done (Stop Last Deployment in the plugin, or ask your agent). The free tier runs one deployment at a time, and a forgotten test server blocks matchmaking.
Here, you picked the location and handed out the address. To group players and start a server near them automatically, add a matchmaker.
6. Add matchmaking
Edgegap's matchmaker is a hosted service: players send a ticket, it groups them by your rules (match size, teams, latency, skill, mode), deploys your server near them and returns the address to every client.
With your agent:
"Generate an Edgegap matchmaker configuration for my app version: one team of 2 to 4 players, and let a lone player get a server after 30 seconds so I can test alone. Save it as matchmaker-config.json."
Then, in the dashboard (this step has no API):
Open Matchmaker and select Create Matchmaker.
Name it, upload
matchmaker-config.json, and select Create and Start.When it's ONLINE, copy the API URL and the Auth Token. The Auth Token is safe to ship in your game client: it gives no access to your Edgegap account.
Back with your agent:
"Put the matchmaker API URL and Auth Token on EdgegapMatchmakingClient, wire my Play button to FindMatch, then rebuild and push the server, create a new app version and tell me what to update in the matchmaker."
By hand: follow the Unity matchmaking guide in our documentation.
Browser (WebGL) games: no latency rule in the matchmaker (browsers can't send latency pings), and list every origin that serves your build in allowed_cors_origins.
When you ship a new server build, update application.version in the matchmaker configuration (Stop, Edit, Start), or matches keep deploying the old build.
7. Test the full loop with two players
Make sure no test deployment is still running.
Run two clients: the Editor plus a build, or two Multiplayer Play Mode players.
Select Find Match in both. The status goes from searching to match found to host assigned, then both clients connect to the same server.
Leave the match. The server logs that it's stopping, and the deployment disappears from the dashboard. That self-stop is what keeps your bill at zero when nobody plays.
On the free tier, the matchmaker stops 3 hours after each start (restart it from the dashboard), deployments stop after 60 minutes, and one deployment runs at a time.
Building for the browser? See Web Games (Unity). Prefer lobbies players browse? See the Server Browser for Unity. Already on Unity Gaming Services? See our UGS Matchmaker guide.
Going live? Ask your agent to run the edgegap-launch skill's checklist: version rollouts, restart policy, maximum duration, cost control.
Stuck? Ask your agent to load edgegap-troubleshoot, or ask our team and other studios on the Edgegap Discord.
Frequently Asked Questions
Common questions about hosting a Unity multiplayer game on Edgegap's dedicated servers, whichever netcode you use.
Can Unity run a dedicated server?
Yes. Build your game for the Linux Dedicated Server target, a headless build with no graphics or player. Your netcode then starts it as a server, and Edgegap runs it in a container, one per match.
Which netcode should I use for a Unity dedicated server?
Netcode for GameObjects, Unity's own, is a good default for desktop and mobile. Mirror's WebGL path is the one verified end to end with Edgegap's matchmaker. Fish-Networking, Photon Fusion 2 and PurrNet also work, and each has an Edgegap integration guide.
Do I need the Edgegap plugin to host a Unity game?
No. The plugin is the quickest way to build, containerize and deploy from the Unity Editor. A coding agent connected to the Edgegap MCP server, or your own Docker build, works too.
Which Unity version works with Edgegap?
Any recent version with the Linux Dedicated Server build modules. Edgegap recommends an LTS version; this guide uses Unity 6.3 LTS. Install a Git client too, to add packages from a Git URL.
How much does it cost to host a Unity game server?
Testing is free, with no credit card. After that, Edge Cloud bills per vCPU per minute only while servers run, so a server that stops at the end of each match costs nothing between matches.

Clients
Learn more from clients who integrated Edgegap
31 case studies are available from studios that moved to Edgegap from another platform.

A Flawless Global Launch for Rivals of Aether 2
Aether Studios
Learn how Aether Studios quickly added Edgegap and delivered flawless launch & post-launch to their community.
Case Study

Overcome Latency Introduced by VR’s use of WiFi in Competitive Multiplayer
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
Case Study

MENA’s Social App Adds Online Games
WOLF
Learn how the highly popular MENA-region social app added matchmaking & multiplayer games orchestration easily to WOLF Qanawat.
Case Study

Hybrid Orchestration Keeps Kickoff Tactics Ready for Any Traffic
Birch Games
How hybrid orchestration helped Birch Games handle traffic, pairing egress-free Fleets with the regionless cloud.
Case Study

7 Days Blood Moons
The Fun Pimps & iLLOGIKA
Learn how Illogika dramatically reduced server costs & ensured the online experience the 7 Days to Die franchise expects.
Case Study

Authentic Online Warfare Requires the Ultimate Orchestration
Highwire Games
Learn how Highwire's need for performance required orchestration only Edgegap can deliver.
Case Study

22,000 Reviews, 4.8 Stars, and Infrastructure That Scaled Automatically
Sinn Studios
How a simple, Slack-supported integration got Sinn Studio's hit VR title online fast and keeps it there.
Case Study

Dynamic Server Orchestration
Under NDA - AAA Studio
Discover how one the world's biggest AAA studio improved its peer-to-peer multiplayer experience through edge computing.
Case Study

Near Zero Latency for AAA Fighting Game
AAA Studio - Under NDA
How an unannounced project delivered the lowest lag possible and improved fairness in its 1v1 game.
Case Study

Play Gods with Multiplayer Physics
Squido Studio
Learn how Squido uses Edgegap's highligh optimized game servers to deliver mind-bending & chaotic VR gameplay.
Case Study

A Fully Managed Solutions that Saves Time for Indies Multiplayer VR Horror
Dirty Pearl Studios
Discover how Dirty Pearl Studios saved development time thanks to Edgegap’s easy integration and automated orchestration alongside its Nakama integration.
Case Study

Instant Global Server Deployment for Collaborative XR Medical Education
AlensiaXR
How AlensiaXR uses Edgegap to deliver low-latency, always-available shared anatomy sessions to medical students worldwide.
Case Study

The Lightkeepers: A VR Social Co-op Game with Dedicated Servers
Spectral Games
How Spectral Games used Edgegap Matchmaking and Server Browser to launch dedicated servers for its VR social lobby, with no prior server experience.
Case Study

Fast & reliable deployments worldwide for PvPvE challenger Gravebound
Crater Studios
How Edgegap’s orchestration and matchmaking helped Crater Studios dramatically helped a small them focus on gameplay instead of infrastructure.
Case Study

Rapid Scaling of Web Metaverse
Hiber
Learn how Hiber eliminated the guesswork out of its server capacity planning with Edgegap.
Case Study

High Hardware Requirements & Custom Game Server Pools
Alderon Games
Learn how Alderon Games instantly leverages a custom pool of game servers across multiple providers worldwide for its popular MMO.
Case Study

Easy Integration for Indie Devs
WhaleFood Games
Read how WhaleFood Games "kicked out" its netcode issues with Edgegap.
Case Study

Cutting-edge tech that powers South-East Asia’s first-ever eSports title.
Anantarupa Studios
Learn how Edgegap transformed South-East Asia’s gaming landscape streamlining complex infrastructure and cutting-edge tech with one seamless solution.
Case Study

One Strike. Global Reach.
Triple Hill Interactive
How Triple Hill Interactive leverages Edgegap's orchestration to deliver low latency and improve fairness in a genre where every millisecond counts.
Case Study

Fast-paced Team Battle Royale... with Gun-totting Animal Plushes!
SANDYFLOOR
Discover how a Korea-based Indie Studio launched it multiplayer worldwide.
Case Study

Mobile Horse Racing Goes Global with Instant, Cost-Efficient Servers
Mirai Labs
How Mirai Labs powers Pegaxy Blaze's worldwide multiplayer races with just-in-time server deployment and fractional vCPU to keep cost per player low.
Case Study

Server Management & Distribution
Matrioshka Games
Read how Matrioshka Games were able to ship a Battle Royale in early access with limited ressources.
Case Study

At my Signal, Unleash Hell!
TyGames
Discover how Indie studio TyGames immerses players in third-person gladiatorial combat multiplayer.
Case Study

Instant Worldwide Orchestration
Soliton Interactive
Discover how Soliton Interactive did the impossible… Ship it's first playable as multiplayer!
Case Study

Competitive play with server-side physics ensures ideal sub-50 ms latency
NS7
Discover why solely Edgegap could enable an indie studio to deliver on its vision for a AAA-quality F2P sports gameplay through server-side physics and authority.
Case Study

Regional Deployments for iGaming
X1 Contra 1
X1 Contra 1 delivers real-time PvP casual games to its Brazilian player base through cost-effective hosting & regional deployments, ensuring data and legal compliance.
Case Study

Pay Only When Players Play: Affordable Multiplayer Infrastructure
Meltdown Interactive
How Edgegap helped indie developer Meltdown Interactive Media solve cost-effective scaling and matchmaking without the complexity, so they could focus on building the game.
Case Study

One Edgegap platform, three very different networking profiles
Warped Games
How Warped Games runs a social hub, real-time co-op, and turn-based co-op, all on the same Edgegap deployment API and the same container pipeline.
Case Study

Pool Live Tour Max
RETA Games
Case Study

Korea’s Web3 POP Extraction Shooter Goes Global, Instantly
NDUS Entertainment
How XOCIETY easily added Edgegap orchestration & integrated custom matchmaking working alongside Edgegap Ping Beacons to optimize latency.
Case Study

Multiplayer in Every Dimension
Arcadia.tv
Discover how Arcadia.tv uses Edgegap's edge network to deliver an innovative, team and location-based athletic VR sport.
Case Study

F2P Mobile Fighter Cuts Infrastructure Costs With Just-in-Time Servers
Game Changers Worldwide
How Game Changer Worldwide hosted Rumble Rush's real-time 3v3 PvP globally on mobile.
Case Study
Key reasons why they chose Edgegap
Discover the impact of Edgegap's automated game server orchestration for a flawless multiplayer experience.









