Arena Shooter is Edgegap's fork of Super Star Fighter, Dumpster Fire Labs' top-down multiplayer arena shooter, built with Godot 4.7.2. Pilots draft a new upgrade card every round, and the cards stack until a small starter ship becomes a screen-filling mess.
The game's netcode doesn't change. Its dedicated server already runs the whole simulation, so every player sees the same fight. The fork adds a FIND MATCH tab and a small server lifecycle script, in their own folders.
Players press FIND MATCH, Edgegap's matchmaker groups them and starts a dedicated game server for the match. The clients join it over a secure WebSocket (wss://), bots fill the empty seats, and the server stops itself when the match is over.
Edgegap's network spans 615+ Edge Cloud locations (learn more). Each server is deployed to the best available location for its players and billed only while the match runs.
Clone the sample: Arena Shooter fork on GitHub
Full guide: add Edgegap to your own Godot game with the Godot Engine integration guide
Platforms: Windows, macOS and Linux (x64 and ARM64) desktop clients; Linux x86_64 dedicated server on Edgegap. Matchmaking was tested with Windows clients. Original game, Super Star Fighter, by Dumpster Fire Labs; code under the MIT licence. Its music and logo are reserved, so the fork leaves them out (asset licence).
How it works
A player presses FIND MATCH. The client sends a ticket to the Edgegap matchmaker and checks it every 2 seconds.
The matchmaker groups 2 to 4 players (a lone player after 30 seconds) and starts a dedicated server near them. The server reads how many players were matched.
Each matched client receives the server's address and joins it at
wss://<host>:<port>through the game's own Direct Connect screen. The lobby password is the deployment's ID, which only matched players are given.The match starts when every matched player is in, or 30 seconds after the first one joins. NPC pilots fill the empty seats up to 4 ships, so a solo player still gets a game.
20 seconds after the final results, the server stops its own deployment. Players queue again for the next match.
What the fork changed:
Path | What it does |
|---|---|
| Server lifecycle on Edgegap: lobby password, auto start, NPC fill, self-stop. Does nothing outside an Edgegap deployment. |
| The FIND MATCH tab: matchmaker tickets, then join through Direct Connect. |
| Matchmaker URL, Auth Token, profile and port name. |
| Server image from the Linux x86_64 dedicated server package. |
| Matchmaker config: one |
| A few one-line hooks that call the files above. |

A neon arena shooter in Godot 4, on an Edgegap dedicated server.
1. Before you start
A free Edgegap account. No credit card is needed to test.
Docker Desktop, running, to build the server image.
Python 3.11 or newer. The fork's build script downloads Godot 4.7.2 and its export templates into the project, checks them, and installs nothing system-wide. You don't need Godot installed.
Clone the fork.
The game never needs your Edgegap API token. Only the matchmaker's Auth Token goes into the client, and it gives no access to your account.
2. Put the game server on Edgegap
From the repository root, download the pinned Godot and build the Linux dedicated server package:
python tools/build.py bootstrap
python tools/build.py build server-linux-x64 --skip-gate
Build the image from that package and push it to your Edgegap registry. The Container Registry page has your project, username and token:
docker build --platform linux/amd64 -f edgegap/Dockerfile -t registry.edgegap.com/<project>/arena-shooter:<tag> builds/beta-19/server-linux-x86_64
docker push registry.edgegap.com/<project>/arena-shooter:<tag>
In the dashboard, create the application godot-arena-shooter and a version (the config uses v1):
Your image and tag, with your registry username and token, so Edgegap can pull it.
0.5 vCPU and 1 GB.
One port: name
gameport, 7000, protocol WS, with TLS Upgrade on. Clients connect withwss://.
Optional environment variables on the version: EDGEGAP_NPC_FILL (default 4, 0 turns NPCs off), EDGEGAP_START_GRACE (30 s), EDGEGAP_JOIN_TIMEOUT (120 s) and EDGEGAP_ROUNDS_TO_WIN (3). Server log lines start with EDGEGAP.
3. Create the matchmaker
Open
edgegap/matchmaker-config.jsonand setapplication.nameandversionto the ones from step 2.In the dashboard, open Matchmaker, select Create Matchmaker, upload the file, then Create and Start.
When it's online, copy its API URL and Auth Token into
src/client/edgegap/edgegap_settings.gd. Or leave the file empty and setEDGEGAP_MATCHMAKER_URLandEDGEGAP_MATCHMAKER_TOKENwhen you launch the client.
The Auth Token is made to ship in game clients. Never put your Edgegap API token in the client.
4. Play a match
Build the Windows client:
python tools/build.py build windows --skip-gate
The same script builds Linux and macOS clients (clients builds all four), but only Windows clients were tested against Edgegap.
Start two clients and open FIND MATCH, the first tab of the connection screen. Press it in both. The status goes from "Searching for players…" to "Match found. Starting a server near you…", then both clients join the same Edgegap server and land in its lobby.
The match starts when both are in, with 2 NPC pilots to make 4 ships. After the final results, the server waits 20 seconds and stops its deployment on its own. A rematch request still ends it: queue again for the next match.
For a test, EDGEGAP_FIND_MATCH=1 makes a client press FIND MATCH at launch.
5. Add it to your own Godot game
The fork is a working reference: your coding agent can copy its tested files instead of writing them from scratch. Edgegap's edgegap-godot skill also ships game-agnostic versions of the same scripts. Four changes take a Godot game with a dedicated server to Edgegap with matchmaking:
The server runs the match on its own. On an Edgegap deployment it reads the matched player count, starts the match when they're in (or after a grace period), and fills empty seats with bots if your game has them (
src/shared/edgegap/edgegap_server.gd).The server stops itself. When the match ends, or nobody joins, it sends
DELETEto theARBITRIUM_DELETE_URLEdgegap injects, so billing stops.The client has a Find Match button. It posts a matchmaker ticket, checks it until a server is assigned, then fills in and runs the game's existing join screen with the address (
src/client/edgegap/edgegap_find_match.gd,edgegap_settings.gd).New scripts are exported. The game's export presets use an allowlist, so the fork lists the three Edgegap scripts in
export_presets.cfg. Without that, the exported build silently drops them.
Then containerize the server with the fork's edgegap/Dockerfile as a model, and create the app version and matchmaker as in steps 2 and 3.
With your agent:
"Load the edgegap skill, then edgegap-godot. Using github.com/edgegap/game-sample-godot-arena-shooter as the reference, add a server lifecycle that waits for the matched players and stops its own Edgegap deployment, and a Find Match button that queues on the Edgegap matchmaker and joins the assigned server through my game's existing join code."
For each step in detail, by hand, see the Godot Engine integration guide.
6. How matchmaking and self-stop work
The sample's matchmaker config has one profile, casual: one team of 2 to 4 players. After 30 seconds the minimum drops to 1, so a lone player gets a server too. There's no latency rule.
The client talks to the matchmaker with a few HTTP calls, using the Auth Token:
POST {API URL}/ticketswith{"profile": "casual", "attributes": {}}GET {API URL}/tickets/{id}every 2 seconds, until the status isHOST_ASSIGNED, with the server's host name and the external port ofgameportDELETE {API URL}/tickets/{id}if the player cancels
The server asks Edgegap to stop its deployment, which ends billing:
20 seconds after the final results (one match per deployment);
when nobody joins within 120 seconds;
when everyone has left for 30 seconds.
To size your own matches, set min_team_size and max_team_size in the config, and EDGEGAP_NPC_FILL on the app version. When you ship a new server build, create a new app version and update application.version in the matchmaker (Stop, Edit, Start). The Godot Engine integration guide covers matchmaking for your own game.
Known limits
4 ships per Edgegap match by default. The game supports up to 32 pilots, but the sample's matchmaker matches 2 to 4 players and fills up to 4 ships with NPCs. Bigger Edgegap matches need a larger
max_team_sizeandEDGEGAP_NPC_FILL; they should work but were not tested on Edgegap.One match per deployment. A rematch ends the deployment, and players queue again.
Joining is protected by the address, not by tickets. Only matched players get the server's host name, which also carries the lobby password. The server doesn't check each player's ticket ID.
Desktop only. The fork has no web export. The game already uses WebSocket, so a web build should be possible, but it's written but not tested. It would also need
allowed_cors_originsin the matchmaker config.No music or studio logo. The upstream asset licence reserves them. Sound effects are generated in code and still play.
What was tested
Tested on 20 October 2026, with Godot 4.7.2 and Edgegap matchmaker 3.3.2:
Local Docker image with simulated Edgegap variables and two bot clients: the match started on its own with 2 NPCs, and the server stopped after the final results.
Direct deployment (Newark): two bot clients over
wss://played a 3-round match, and the deployment stopped itself after 5.4 minutes.Matchmaker: two Windows clients pressed FIND MATCH, were assigned the same server, joined, and the match started with 2 NPCs.
Join timeout: deployments nobody joined stopped themselves after 120 seconds.
Outside an Edgegap deployment, the server behaves exactly like the original, so LAN and direct-connect play still work.
netfox guide →, for prediction and rollback in your own Godot game
Frequently Asked Questions
Questions about running the Godot Arena Shooter sample with Edgegap matchmaking and dedicated servers.
How do I add matchmaking to a Godot game?
Create an Edgegap matchmaker from a JSON config, then add a Find Match button that posts a ticket with HTTPRequest, checks it until a server is assigned, and joins that address. The Arena Shooter sample does this in one GDScript file, reusing the game's own join screen.
Can a Godot game use WebSocket on Edgegap dedicated servers?
Yes. The sample's server listens for WebSocket on port 7000. On the app version, set the port to WS with TLS Upgrade on, and clients connect with wss:// to the server's host name.
What happens when only one player presses Find Match?
After 30 seconds the matchmaker matches them alone, and NPC pilots fill the other seats up to 4 ships. Set EDGEGAP_NPC_FILL to 0 on the app version to turn bots off.
Do Edgegap servers keep running after the match?
Not in this sample. The server stops its own deployment 20 seconds after the final results, or if nobody joins within 120 seconds, so you're only billed while a match runs.

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.









