This guide shows you how to host a multiplayer game built on your own engine, or a game server written in any language (C++, C#, Go, Rust, Java and more), on Edgegap's dedicated game servers, 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.
Edgegap needs no SDK and no engine plugin. If your server runs headless in a Linux container, it runs on Edgegap: you push an image, Edgegap starts a copy of it for each match and gives players its address. This page covers the few rules your server follows to fit that model.
This guide covers:
Preparing your server, your Edgegap account and a containerization tool
Connecting your coding agent to Edgegap (optional)
Making your server fit Edgegap's lifecycle
Containerizing it and creating an app version
Testing it locally, then deploying a test server
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 adapts your server, writes the Dockerfile, tests the container, deploys it and generates the matchmaker configuration. You handle the Edgegap dashboard, the secrets, and playtest.
By hand. Every step below also works without an agent.
Building with Unity, Unreal Engine or Godot? Start from Unity Engine, Unreal Engine or Godot Engine instead.
1. Before you start
A free Edgegap account. Verify your email. No credit card is needed to test.
A game server that runs headless on Linux x86-64: no window, no GPU, no input prompts, configured by command-line flags or environment variables. Two players should be able to join it on localhost.
A server that owns the game. Clients send inputs; the server decides positions, hits and scores. A server that only forwards what clients claim is an expensive relay, and easy to cheat.
A containerization tool, running. We recommend Docker Desktop.
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 server, your game client, your project files or a chat.
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 engine-agnostic rules: edgegap-server-design for the lifecycle, edgegap-containerize for the image, edgegap-local-testing before you spend money.
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. Make your server fit Edgegap's lifecycle
On Edgegap, one deployment is usually one match: it starts for a group of players and stops when their match ends. Your server follows six rules:
Bind a fixed port on
0.0.0.0, for example 7777/UDP. Edgegap gives players a random external port for each deployment and maps it to yours. Binding127.0.0.1, or a random port, works on your machine and is unreachable on Edgegap.Read configuration from environment variables. Edgegap injects them into every deployment:
ARBITRIUM_REQUEST_ID(the deployment ID; log it),ARBITRIUM_PORT_GAMEPORT_INTERNALand_EXTERNAL,ARBITRIUM_PUBLIC_IP, and on matchmaker deploymentsMM_MATCH_IDandMM_TICKET_IDS(who was matched). Your own settings go on the app version or the deployment.Log a clear line once you accept players, for example
READY port=7777, to stdout. Logs go to stdout and stderr, never only to files.Stop yourself when the match ends, or after about 30 seconds with nobody connected:
DELETEtheARBITRIUM_DELETE_URLwith the headerAuthorization: <ARBITRIUM_DELETE_TOKEN>. An idle server keeps billing until its maximum duration.Handle SIGTERM: save results to your backend, tell players, exit within a few seconds.
Cap your tick or frame rate. A headless loop that runs uncapped burns a full CPU core. 20 to 30 Hz suits most action games, 60 Hz fast shooters.
Your server never holds the Edgegap API token: self-stop has its own per-deployment token.
With your agent:
"Load the edgegap-server-design skill and make my game server fit Edgegap: bind 0.0.0.0 on a fixed port, read the ARBITRIUM_ and MM_ environment variables, log READY when it accepts players, self-stop with ARBITRIUM_DELETE_URL at match end or after 30 seconds empty, drain on SIGTERM, and cap the tick rate. Then check it still works with two local clients."
4. Containerize your server and create an app version
Edgegap runs linux/amd64 containers. Build your server outside Docker, or in a builder stage for compiled languages, then copy only the server into a slim image:
Start it as the container's main process, in exec form:
ENTRYPOINT ["./my-server"]. A shell script that stays in front of it swallows SIGTERM; if you need one, end it withexec ./my-server "$@".Build for Edgegap's platform, even on Apple Silicon:
docker build --platform linux/amd64 -t registry.edgegap.com/<project>/<image>:<tag> .No secrets in the image, and never print the environment at startup: it would put the self-stop token in your logs.
Push to the Edgegap Container Registry: run
docker login registry.edgegap.comyourself, with the username and token from the Container Registry page, thendocker push. Use a new tag for every build, neverlatest. Docker Hub, GHCR, ECR, GCP and GitLab registries work too.
Then create the application and its version in the dashboard: your image and tag, registry credentials (without them, deployments fail with "Unable to pull image from registry"), 1 vCPU and 2 GB to start, your port with its protocol named gameport, and restart policy Never.
With your agent:
"Load the edgegap-containerize skill. Write a multi-stage Dockerfile for my server for linux/amd64, build and push it with a new tag, then create the Edgegap app and app version with my port and protocol, named gameport, restart policy never."
5. Test locally, then deploy a test server
Locally first, with the variables Edgegap would set: docker run --rm -p 7777:7777/udp -e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777 <image>:<tag>. Connect a client to 127.0.0.1:7777, then stop the container with docker stop and check your server exits cleanly.
Then on Edgegap. Deploy your version from the dashboard (Deploy, pick a location close to you), or ask 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, connect a client to its Host URL (or IP) and External Port. The external port changes on every deployment. Ready means the container started; your server can need a few more seconds to load, so let clients retry for up to a minute.
Stop the deployment when you're done. The free tier runs one deployment at a time.
6. Add matchmaking
Edgegap's matchmaker is a hosted service: your client sends a ticket, the matchmaker groups players by your rules (match size, teams, latency, skill, mode), deploys your server near them and returns its address to every client. Nothing to link: it's an HTTP API.
Write the configuration: your app and version, players per match, and a rule that lets a lone player get a server after 30 seconds while you test. Your agent can generate it: "Generate an Edgegap matchmaker configuration for my app version: one team of 2 to 4 players, a lone player gets a server after 30 seconds."
In the dashboard, open Matchmaker, select Create Matchmaker, upload the file and select Create and Start. Copy the API URL and Auth Token. The Auth Token is safe to ship in your game client.
From your client, create a ticket with the API URL and Auth Token, then check its status until it goes from SEARCHING to MATCH_FOUND to HOST_ASSIGNED, with the server's address and port. Connect.
Your server finds who was matched in MM_TICKET_IDS. See the matchmaking documentation for the full API.
Have your own matchmaker or lobby service already? Your backend can start servers itself with Edgegap's deployment API: see Nakama, PlayFab or Steam Lobbies for the pattern.
7. Test the full loop with two players
Make sure no test deployment is still running.
Run two clients and start matchmaking on both.
Both reach HOST_ASSIGNED with the same server, and connect.
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.
Servers that must outlive a match, such as persistent worlds? See Private Fleets.
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 custom engine's game server on Edgegap's dedicated servers.
Can I host a game server from my own engine on Edgegap?
Yes. Any server that runs headless in a Linux x86-64 container works: C++, C#, Go, Rust, Java, Node.js or anything else. Edgegap needs no SDK or plugin; you push an image and Edgegap runs a copy for each match.
What does my game server need to run on Edgegap?
Listen on 0.0.0.0 on a fixed port, read its settings from environment variables, log to stdout, handle SIGTERM, and stop its own deployment when the match ends. Edgegap maps a random external port to yours for players.
Do I need Docker to use Edgegap?
Edgegap runs container images, so your server needs one. Docker is the usual way to build it, and our agent skills write the Dockerfile for you. Any tool that builds a linux/amd64 image works.
How does a game server stop itself on Edgegap?
It sends a DELETE request to the ARBITRIUM_DELETE_URL environment variable, with ARBITRIUM_DELETE_TOKEN as the Authorization header. Both are injected into every deployment, so the server never needs your API token.
Can I use my own matchmaker with Edgegap?
Yes. Your backend can start servers with Edgegap's deployment API, placing each one near the players. Or use Edgegap's hosted matchmaker, an HTTP API your client calls directly.

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.









