Discover how Edgegap works

Discover how Edgegap works

netfox

Deploy to Edgegap

Published

Published

Published

netfox: How to integrate and host dedicated servers, and add Matchmaking to your multiplayer Godot game

netfox: How to integrate and host dedicated servers, and add Matchmaking to your multiplayer Godot game

This guide shows you how to host a Godot game built with netfox 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.

netfox is a set of add-ons for Godot 4 that adds what fast-paced games need on top of Godot's built-in multiplayer: shared network time, client-side prediction with server reconciliation, rollback and smooth interpolation. It follows Godot's own node ownership, so the server owns the game state. New to Godot multiplayer? See Godot Engine for what Godot includes on its own.

This guide covers:

  1. Preparing Godot, netfox, your Edgegap account and a containerization tool

  2. Connecting your coding agent to Edgegap (optional)

  3. Getting your netfox game ready for dedicated servers

  4. Building and containerizing your game server

  5. Deploying a test server and connecting to it

  6. Adding matchmaking (optional)

  7. 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 and deploys it. You handle the clicks in Godot and the Edgegap dashboard, and playtest. Edgegap's skills cover Godot through their engine-agnostic server and container guides; a Godot or netfox skill isn't published yet.

  • By hand. Every step below also works without an agent.

For building and containerizing the server, Edgegap's game server hosting plugin for Godot is optional. It builds your server, containerizes it and deploys it to the cloud from the Godot editor, the quickest way to see your server online for the first time (step 4, Option A).

Here, we use Forest Brawl, netfox's example game, a party brawler where players knock each other off the map. Any netfox project works the same way.

No credit card required. Free tier includes the resources to deploy a real game server.

No credit card required. Free tier includes the resources to deploy a real game server.

Step-by-Step Guide

Detailed Integration Steps

1. Before you start

  • A free Edgegap account. Verify your email. No credit card is needed to test.

  • Godot 4.3 or newer.

  • netfox in your project. Get it from Godot's AssetLib (search for netfox), the releases page or the source, then enable the add-ons under Project → Project Settings → Plugins. Install netfox.extras too if you use its input or weapon helpers. Each release also includes Forest Brawl.

  • 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.

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 and Dockerfiles on your account. The agent skills give it Edgegap's server design rules, container setup, local test routine and 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 netfox server 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.

With your agent:

"Load the edgegap-server-design skill and make this Godot netfox project dedicated-server ready: a headless server that starts on its own with ENet on 0.0.0.0:7777, owns every node that holds game state, spawns players when clients connect, and stops its own Edgegap deployment when the match ends. Follow docs.edgegap.com/godot and the netfox docs. Then check it works locally with one server and two clients."

By hand:

  • Bootstrap. Add a script that starts the server in server builds (headless, or a --server argument), with Godot's multiplayer API and ENet listening on all interfaces at 7777/UDP. The Edgegap Godot docs include a bootstrap script for Forest Brawl.

  • Ownership. netfox treats a node's owner as its server. Keep the server as the owner of every node that holds game state; each player owns only their input.

  • Tickrate. netfox runs its own network tick loop (Project Settings → netfox → Time → Tickrate). The server's tickrate is the reference: set how clients handle a mismatch (warn, disconnect, adjust or signal), and keep it within what the server's vCPU can run.

  • Rollback. Synchronize every property your _rollback_tick() uses, and run the same logic on server and clients, or movement snaps back.

  • noray isn't needed. netfox.noray connects players who host games themselves. On Edgegap, clients connect straight to the dedicated server.

  • When the match ends, have the server stop its deployment: send DELETE to the ARBITRIUM_DELETE_URL that Edgegap injects, with ARBITRIUM_DELETE_TOKEN as the Authorization header.

Forest Brawl

Forest Brawl is in netfox's examples/forest-brawl folder and in every netfox release. Add Edgegap's Forest Brawl bootstrap script from the Edgegap Godot docs to its main scene, and it runs as a dedicated server.

Test locally first: one instance as the server, two as clients, on 127.0.0.1. 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 game server hosting plugin for Godot. The quickest way to a first cloud deploy, from the Godot editor. It uses Docker to containerize your server. The video below shows this path with Forest Brawl.

  1. In Godot, open the AssetLib tab, search for Edgegap, then Download and Install. Or copy the plugin from GitHub into your project's addons folder.

  2. Enable it under Project → Project Settings → Plugins. An Edgegap tab appears next to the Inspector.

  3. Select Get token, sign in, and paste the token into the plugin.

  4. Validate the export templates, add the bootstrap script from step 3, and select Build server.

  5. With Docker running, select Validate Docker, then Containerize with Docker. Optionally, Deploy local container and connect a client to it.

  6. Select Upload image and create App version. In the dashboard, set the port to 7777, UDP, named gameport. Submit.

Option B: ask your agent.

"Load the edgegap-containerize skill. Export the Godot dedicated server for Linux, generate a Dockerfile with edgegap_generate_dockerfile, build it for linux/amd64, push it to my Edgegap Container Registry with a new tag, then create the app and app version with port 7777 UDP named gameport and restart policy Never."

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 Godot, using netfox's Forest Brawl:

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 and External Port, put them in your client's connection settings, and join with two clients. 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. If movement snaps or stutters only online, check the tickrate and rollback notes in step 3.

Stop the deployment when you're done (from the plugin, the dashboard, or 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 8 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):

  1. Open Matchmaker and select Create Matchmaker.

  2. Name it, upload matchmaker-config.json, and select Create and Start.

  3. 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:

"Write a Godot matchmaking client with HTTPRequest: create a ticket with the matchmaker API URL and Auth Token, poll it until a server is assigned, then connect to the assigned host and port. Wire it to my Play button, then rebuild and push the server, create a new app version and tell me what to update in the matchmaker."

Edgegap's skills don't ship a Godot matchmaking client yet, so the agent writes it from the matchmaker's ticket API, a few HTTP calls.

By hand: follow the matchmaking documentation.

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

  1. Make sure no test deployment is still running.

  2. Run two clients: two exported builds, or the editor plus a build.

  3. Select Find Match in both. Both clients get the same server and connect.

  4. Leave the match. The server stops its own deployment, and it 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.

Next Steps

Next Steps

New to Godot multiplayer? See Godot Engine for what Godot includes on its own. Godot setup on Edgegap: Godot documentation.

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 netfox game for Godot on Edgegap's dedicated servers, with or without matchmaking.

Does netfox support dedicated servers?

Yes. netfox supports client-server games and follows Godot's node ownership, so a headless Godot server that owns the game state is the authority. Start it from a bootstrap script with ENet on a fixed port.

Do I need noray to host a netfox game on Edgegap?

No. netfox.noray helps players connect to games other players host. On Edgegap, clients connect directly to the dedicated server's host and external port.

Does netfox replace Godot's built-in multiplayer?

No, it builds on it. You still connect peers with Godot's multiplayer API, usually ENet. netfox adds shared network time, prediction with reconciliation, rollback and interpolation on top.

Which port does a netfox server use on Edgegap?

Whatever your ENet server listens on: Edgegap's Godot plugin and docs default to 7777 over UDP. Set the same port on your Edgegap app version, named gameport. Players connect to the external port Edgegap assigns to each deployment.

How much does it cost to host a netfox 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.

Key reasons why they chose Edgegap

Discover the impact of Edgegap's automated game server orchestration for a flawless multiplayer experience.

Cost

Pricing

Optimize costs and performance with hybrid orchestration

Optimize costs and performance with hybrid orchestration

Optimize costs and performance with hybrid orchestration

Edge Cloud

On-Demand

$0.00115

/ vCPU

/ MINUTE

Billed by the Minute, Only on Usage

Pay only when players play. 0 active servers = $0

Deploy game servers worldwide, per instance, to all 615+ edge cloud locations. Zero commitment.

Simply add a credit card.

Edge Cloud

On-Demand

$0.00115

/ vCPU

/ MINUTE

Billed by the Minute, Only on Usage

Pay only when players play. 0 active servers = $0

Deploy game servers worldwide, per instance, to all 615+ edge cloud locations. Zero commitment.

Simply add a credit card.

Private Fleet (Bare Metal)

Reserved Capacity

$0.0282

/ vCPU

/ HOUR

Billed Monthly, Always On

$280 per host/month (12 mo rate), or $350 monthly

Optimize the cost effectiveness of your game server with egress-free hosting of Private Fleets.

Persistent, available 24/7, exclusive to your studio.

Private Fleet (Bare Metal)

Reserved Capacity

$0.0282

/ vCPU

/ HOUR

Billed Monthly, Always On

$280 per host/month (12 mo rate), or $350 monthly

Optimize the cost effectiveness of your game server with egress-free hosting of Private Fleets.

Persistent, available 24/7, exclusive to your studio.

Your bill varies per rate and usage; which can vary per game type, player count, & more.

Your bill varies per rate and usage; which can vary per game type, player count, & more.

Model your usage with our estimate calculator ->

Model your usage with our estimate calculator ->

Edgegap's features & price: detailed comparison between Edge Cloud & Private Fleets

Edgegap's features & price: detailed comparison between Edge Cloud & Private Fleets

COMPARE

Free Trial

Edge Cloud

Private Fleets

FEATURES

Analytics & Monitoring

Billing Alarms

Click to Expand

28 more rows

Unlocks

Capabilities are unlocked when a credit card is added to the account.

COMPARE

Free Trial

Edge Cloud

Private Fleets

FEATURES

Analytics & Monitoring

Billing Alarms

Click to Expand

28 more rows

Unlocks

Capabilities are unlocked when a credit card is added to the account.

COMPARE

Free Trial

Edge Cloud

Private Fleets

FEATURES

Analytics & Monitoring

Billing Alarms

Click to Expand

28 more rows

Unlocks

Capabilities are unlocked when a credit card is added to the account.