This guide shows you how to host a game built with Photon Fusion 2 on Edgegap's dedicated game servers. The server runs headless in GameMode.Server, so no player hosts the match.
Once your game server is containerized, Edgegap deploys it on demand from a simple API call, to the best available location for its players among 615+ Edge Cloud locations (learn more), 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.
Your Photon setup doesn't change: players still find and join matches through Photon Cloud, with your own App ID. Edgegap only runs the server.
Photon's Fusion 2 documentation lists Edgegap as a game session hosting provider (Photon's dedicated server page). A Photon Public Cloud subscription is enough to run a game in Server Mode with a dedicated game server.
This guide covers:
Preparing Unity, Photon, your Edgegap account and a containerization tool
Connecting your coding agent to Edgegap (optional)
Getting your Fusion game ready for dedicated servers
Building and containerizing your game server
Deploying a test server and connecting to it
How players find the server
Testing 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, and deploys it. You handle the clicks in Unity, the Photon and Edgegap dashboards, 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).
Here, we use Edgegap's version of Photon's Asteroids Simple (Host) sample, already set up to run as a dedicated server. Any Fusion 2 project works the same way. For bigger games, see the BR200 and Simple FPS samples in Next Steps.
Sample: Unity 6.0 LTS (the project is saved with 6000.0.41f1), Fusion 2.0.6, server on Linux, clients in the Unity Editor. Photon's sample code stays under Photon's licence terms.
Photon's Fusion 2 documentation lists Edgegap as a game session hosting provider for dedicated servers, with this Asteroids sample.
1. Before you start
A free Edgegap account. Verify your email. No credit card is needed to test.
A Photon account and your own Fusion 2 App ID. In the Photon dashboard, create an app (Multiplayer Game, Fusion SDK, Fusion 2) and copy its App ID. Every developer needs their own.
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.
Asteroids: use Unity 6.0 LTS, the version the sample is saved with (6000.0.41f1). When you add the project in Unity Hub, install that version or a later 6000.0 patch. Newer Unity versions haven't been tested with this sample. Your own Fusion project can use any LTS version: Edgegap's Fusion skill was tested with Unity 6.3 LTS.
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 and read logs on your account. The agent skills give it the tested Fusion workflow (the edgegap-fusion skill), the Dockerfile and the known pitfalls.
Claude Code: install the Edgegap plugin. It adds both the MCP server and the skills, and asks for your API token during install (stored in your system's credential store):
/plugin marketplace add edgegap/edgegap-agent-skills, then /plugin install edgegap@edgegap. Restart the session.
Only want the MCP server, without the plugin? Run this in your own terminal instead: claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user. Don't do both, or you'll have two edgegap servers.
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 Fusion server ready for dedicated hosting
On Edgegap, no player hosts the match. A headless Fusion server owns the game: it starts on its own in GameMode.Server, registers a session with Photon Cloud, and clients join that session by name. Three things must match on the server and the clients, or clients get "Game Does Not Exist": the App ID, the App Version and the Photon region.
Asteroids: Edgegap's version is already dedicated-server ready. Open it in Unity Hub (Add → Add project from disk), then:
Open Tools → Fusion → Realtime Settings and paste your own App ID in App Id Fusion. Save the project (File → Save Project) so the change sticks.
Check Tools → Fusion → Network Project Config: Peer Mode is Single. It already is in the sample.
Check File → Build Profiles (Build Settings): both scenes in
Assets/Asteroids-Host-Simple/Scenesare enabled,AsteroidsSimple-Menufirst.
What the sample adds is one script, Assets/EdgegapHelpers/EdgegapServerManager.cs, on a GameObject in the Menu scene. In a server build it reads Edgegap's environment variables, names the session after the deployment ({request_id}.pr.edgegap.net), binds 0.0.0.0:7777, gives Fusion the deployment's public IP and external port, and starts the game scene. The menu's Start Edgegap button joins that session as a client.
Your own Fusion game, with your agent. The fork is a working reference: your coding agent starts from files that already ran on Edgegap, so it builds on a tested setup instead of guessing.
"Load the edgegap-fusion skill and make this Photon Fusion 2 project dedicated-server ready, using https://github.com/edgegap/netcode-game-sample-photon-fusion2-asteroid as the reference: the server build starts a NetworkRunner in GameMode.Server in batch mode, binds 0.0.0.0 on port 7777, names the session after the Edgegap deployment, and uses a Photon region the clients will use. Clients join that session by name. When the match ends, the server shuts the runner down and exits. Then check it still works locally with one server and two clients."
By hand, in your project:
Start the server in batch mode with
GameMode.Server, andAddress = NetAddress.Any(7777). Don't bind the deployment's public IP: the container doesn't own it, and the server fails to start.Name the session after the deployment:
{ARBITRIUM_REQUEST_ID}.pr.edgegap.net.Keep Peer Mode on Single in the Network Project Config.
Build the server with the Dedicated Server platform (the Server subtarget), so it runs headless.
When the match ends, shut the runner down and quit the application, so the deployment stops and stops billing.
Never print the environment at startup: it holds the deployment's delete token.
4. Build and containerize your server
Edgegap runs your Linux server build inside a container. Use either option, or both.
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 Asteroids sample already includes it.
For your own project: select Window → Package Manager, select +, then Install package from git URL, and paste
https://github.com/edgegap/edgegap-unity-plugin.git.Open Tools → Edgegap Server Hosting. Under 1. Connect your Edgegap Account, select Sign in with Edgegap (or Get token), paste your token, and select Validate token.
Under 2. Build Your Game Server, select Build server.
With Docker running, under 3. Containerize Your Server, select Containerize with Docker. Optionally, under 4. Test Your Server Locally, select Deploy local container.
Under 5. Upload to Edgegap, select Upload image and Create app version. In the browser, set the port to 7777, UDP, named
gameport. Submit.
The plugin's default Dockerfile prints the container's environment at startup. That's fine for a test; before going live, use the edgegap-fusion skill's Dockerfile or your own.
Option B: ask your agent.
"Build the Linux dedicated server, containerize it for linux/amd64 with a Dockerfile that doesn't print the environment, push it to my Edgegap Container Registry with a new tag, then create the app and app version with port 7777 UDP 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.
5. Deploy a test server and connect
Start one server by hand to prove the image, the port and your Photon settings work. Any of these works:
From the plugin: under 6. Deploy a Server on Edgegap, 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 host URL."
When the deployment is Ready, copy its Host URL ({request_id}.pr.edgegap.net). With Fusion, that's the session name, not an address: Photon connects the client to the server.
Asteroids: open the AsteroidsSimple-Menu scene, press Play, paste the Host URL in Room Name, and select Start Edgegap. The server can take up to a minute after Ready to register its session.
If the client reports "Game Does Not Exist (32758)" while the server runs, the client is on another Photon region. Open Tools → Fusion → Realtime Settings and set Fixed Region to the Photon region closest to the deployment's location (for example us for Newark, cae for Montreal or Toronto, eu for Amsterdam; see Photon's region list). Save the project, then try again.
Stop the deployment when you're done: Stop last deployment in the plugin, the deployment's page in the dashboard, or ask your agent. The Asteroids server doesn't stop itself when a match ends, and the free tier runs one deployment at a time.
6. How players find the server
With Fusion, matchmaking stays on Photon Cloud. Each Edgegap deployment is one Fusion server and one session, named after the deployment. A client with the same App ID, App Version and region joins it by that name.
So your game needs something that starts a deployment for a match and hands its session name to the players:
For testing: copy the Host URL from the dashboard, as in step 5.
For a live game: your backend calls the Edgegap API to deploy near the players, then sends the session name to their clients. Edgegap's matchmaker can also do it: its match assignment returns the deployment's host name, which is the session name. Edgegap's matchmaker hasn't been tested with Fusion yet.
7. Test with two players
Make sure no other test deployment is still running, then deploy one server (step 5).
Run two clients. The Asteroids sample includes ParrelSync: select ParrelSync → Clones Manager, Create new clone, then Open in New Editor. Unity's Multiplayer Play Mode works too.
In both, enter the same Host URL in Room Name and select Start Edgegap. Both ships appear in the same match.
Play until one player is left. Both clients return to the menu.
Stop the deployment (Stop last deployment in the plugin, or ask your agent). In your own game, make the server exit at the end of the match instead, so you only pay while players play.
On the free tier, deployments stop after 60 minutes and one deployment runs at a time.
More samples: For the BR200 and Simple FPS samples, see BR200 on Edgegap and Simple FPS on Edgegap.
Working with another Unity netcode? See Unity Engine.
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 Photon Fusion 2 game on Edgegap's dedicated servers.
Does Photon Fusion 2 support dedicated servers?
Yes. Start a NetworkRunner in GameMode.Server from a headless Linux build. The server has state authority and no player. Photon's Fusion 2 documentation lists Edgegap as a game session hosting provider.
Do I need Photon Cloud with a dedicated server on Edgegap?
Yes. The server registers its session with Photon Cloud and clients join it by name, so both need the same App ID, App Version and region. Photon says a Public Cloud subscription is enough for Server Mode.
Which port does a Fusion server use on Edgegap?
The sample binds 7777 over UDP. Set the same port on your Edgegap app version, named gameport. Bind 0.0.0.0, never the deployment's public IP.
Why do clients get "Game Does Not Exist" when the server is running?
The client and the server use different Photon regions, App IDs or App Versions. Set the client's Fixed Region to the Photon region closest to the deployment, and check both use the same App ID and App Version.
How much does it cost to host a Fusion game server?
Testing on Edgegap is free, with no credit card. After that, Edge Cloud bills per vCPU per minute only while servers run, so a server that exits at the end of each match costs nothing between matches. Photon bills its own plan separately.

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.









