PurrNet's Incremental sample is a small multiplayer Unity game: dash through trees, vacuum up the loot, bring it back to your base and buy upgrades. Edgegap's fork runs it on dedicated game servers, so no player hosts.
The game itself doesn't change: scenes, prefabs and gameplay code stay as PurrNet wrote them, apart from one line. Everything Edgegap-specific lives in its own Assets/Edgegap/ folder and adds itself when the game starts. In the Editor, play mode keeps PurrNet's usual host and ParrelSync clone flow.
What's new in the fork:
Optional matchmaking. Off by default: clients connect to an address and port. Turn on the Edgegap Matchmaker, and players click Find Match instead.
Servers that stop when players leave. Each server stops its own deployment 30 seconds after the last player leaves, or after 120 seconds if nobody joins. Idle servers don't cost money.
Edgegap's network spans 615+ Edge Cloud locations (learn more). With the matchmaker on, each server starts at the best available location for its players and is billed only while it runs.
Clone the sample: Incremental sample fork on GitHub
Full guide: add Edgegap to your own PurrNet game with the PurrNet integration guide
Platforms: Windows, macOS and Linux desktop builds (UDP). Original game by PurrNet, MIT licence; art by Kenney.nl.
How it works
The Linux dedicated server starts PurrNet’s server on UDP port 7777 and waits for players.
Direct connection (default): each client enters the server's host and port and clicks Connect.
Matchmaker (optional): each client clicks Find Match and sends a ticket. The Edgegap Matchmaker groups 2 to 4 players, starts a server near them and sends every client its address.
Players chop trees, collect wood and buy upgrades on the same server.
When everyone has left, the server waits 30 seconds, then stops its own deployment.
What the fork changed:
Path | What it does |
|---|---|
| Runs before the scene loads. In builds, turns off PurrNet's auto start and adds the components below. |
| Server builds: starts the server on |
| Client builds: address and port, or Find Match. Reloads the scene when the connection drops. |
| Matchmaker mode: creates a ticket, waits for its server, connects. |
| All settings: mode, ports, matchmaker URL and Auth Token. |
| Runs the Edgegap Unity plugin’s Build server from the command line, for scripted tests and CI. |
| Server image and matchmaker configuration. |
| The one upstream change: |

Incremental Sample from Purrnet, where the player chop trees and returns the loot to its base, using Edgegap's dedicated server hosting and orchestration.
1. Before you start
A free Edgegap account. No credit card is needed to test.
Unity 6 (
6000.3.x) with Linux Build Support (Mono) and Linux Dedicated Server Build Support, plus the module for your client platform.Docker Desktop, running.
Clone the fork and open it in Unity.
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. Play locally first
Open the project in Unity 6, then Tools → Edgegap Server Hosting. Sign in with Edgegap (or paste a token from Get token) and Validate, then Build server. It lands in Builds/EdgegapServer/.
Containerize with Docker: image name purrnet-incremental, tag left empty (the plugin uses the current UTC time), default Dockerfile.
Test Your Server Locally: set Optional Docker Run Parameters to -p 7777:7777/udp, then Deploy local container.
The log shows Edgegap Server | Starting server on 0.0.0.0:7777. The plugin passes mock Edgegap variables, so the server exits 120 seconds after start if nobody joins, or 30 seconds after the last player leaves. Click Terminate before the next local run.
Build the client (File → Build Profiles, any desktop platform) and start it twice. Each window shows the connect panel with 127.0.0.1 and 7777. Click Connect in both. The server logs Edgegap Server | 2 player(s) connected.
3. Put the server on Edgegap
Still in the plugin window, select Upload to Edgegap:
Enter an Application Name, for example purrnet-incremental, then Upload image and Create app version.
The plugin pushes the image to your Edgegap registry, creates the application if needed, and opens the dashboard’s version form with the image and tag filled in.
Keep the version name the plugin proposes (the image tag).
Every build gets a new tag, never latest.
On the version form:
One port: replace the form’s default port with name
gameport, 7777, UDP.If the form asks for registry credentials, use the username and token from the Container Registry page, or deployments can’t pull the image.
4. Play on an Edgegap server
Select Deploy to cloud in the plugin (or Deploy on the version page). When the deployment is ready, note its host (<id>.pr.edgegap.net) and the external port of gameport. It changes on every deployment.
Start two clients, enter that host and port, and click Connect. Once both players leave, the server stops its own deployment after 30 seconds. Stop last deployment in the plugin stops it right away.
For scripted tests, clients can connect straight away from the command line:
Game.exe -screen-fullscreen 0 -edgegapAddress <id>.pr.edgegap.net -edgegapPort <external port> -edgegapConnect
5. Add it to your own PurrNet game
The fork is a working reference: your coding agent can copy its tested files instead of writing them from scratch. Four changes make a PurrNet game run on Edgegap:
The Edgegap Unity SDK.
Packages/manifest.jsonaddscom.edgegap.unity-sdkfrom its Git repository.A server that starts and stops on its own.
Assets/Edgegap/EdgegapBootstrap.csturns off PurrNet’s auto start in builds;EdgegapServerLifecycle.csstarts the server on port 7777 and stops the deployment when it’s empty.A client that connects to an address it gets at runtime.
EdgegapConnectPanel.csfor direct connection,EdgegapMatchmakingClient.csfor Find Match. Or callFindMatch()from your own Play button.Server logic that doesn't need a host. An
[ObserversRpc]that sets up server state needsrunLocally: true. Without it, the Incremental sample's server never spawned a tree.
Then build, containerize and upload the server with the Edgegap Unity plugin, and create the app version as in step 3.
With your agent:
"Load the edgegap skill, then edgegap-purrnet. Using github.com/edgegap/netcode-game-sample-unity-purrnet-incremental as the reference, add the Edgegap bootstrap, server lifecycle, connect panel and matchmaking client to my PurrNet project, fix any ObserversRpc that sets up server state, and check it works locally with one server and two clients."
For each step in detail, by hand, see the PurrNet integration guide.
6. Turn on matchmaking (optional)
The matchmaker is off by default. Turn it on once direct connection works:
In
matchmaker-config.json, setapplication.nameandversionto your application and version.Dashboard → Matchmaker → Create Matchmaker → upload the file → Create and Start.
In
Assets/Edgegap/Resources/EdgegapSettings.asset, tick Use Edgegap Matchmaker, and paste the matchmaker's API URL and Auth Token. The Auth Token only allows matchmaking calls, so it's safe in the game client.Rebuild the client, start it twice and click Find Match in both. The status goes from searching to match found to joining to connected, both on the same server.
The casual profile matches 2 to 4 players. After 20 seconds it also accepts a single player, and tickets expire after 30 seconds. The lone-player case wasn’t tested: if no server comes in time, the panel shows “No match found in time, try again.” Test with two clients, or play alone by direct connection.
Shipping a new server build? In the plugin, Upload to Edgegap → Rebuild from Source builds, containerizes and pushes with a fresh tag; save the new app version, then in the matchmaker Stop → Edit application.version → Start. For CI, edgegap/deploy-action creates the new version from an existing one, smoke-tests it and promotes it.
To add matchmaking to your own PurrNet game, follow the PurrNet integration guide.
Known limits
Desktop only. The sample uses UDP, which browsers can't open. WebGL would need PurrNet's
WebTransportand a WebSocket port with TLS Upgrade. Not tested.Clients are trusted. As upstream, movement and harvesting are owned by the clients (PurrNet's permissive network rules). A competitive game should use stricter rules.
No join in progress. Players who arrive after a match starts aren't added to it (no backfill), and the server doesn't check the client's matchmaker ticket (
MM_TICKET_IDS).Free tier: one deployment at a time, and the matchmaker restarts every 3 hours (its URL and token stay the same).
What was tested
Tested end to end on Edgegap on 15 October 2026 with Unity 6000.3.11f1, PurrNet v1.22.0-beta.11 (commit a311c06), the PurrNet UDPTransport and Edgegap Unity SDK 3.5.5. The fork pins both packages to these versions, so every clone builds the same code. On 29 October 2026 the server moved to port 7777 and to the Edgegap Unity plugin 3.2.1; the plugin build was checked in a local container, not yet on Edgegap with clients.
Direct connection: two players connected and played on the same Edgegap server.
Matchmaker: both players were matched onto the same server about 35 seconds after clicking Find Match.
Self-stop: each time, the server stopped its own deployment after the players left.
Frequently Asked Questions
Questions about running PurrNet's Incremental sample on Edgegap.
Do I need matchmaking to run the PurrNet Incremental sample on Edgegap?
No. It's off by default: clients connect to a server's host and port. Turn on the Edgegap Matchmaker in the sample's settings asset when you want players to click Find Match instead.
Does the Edgegap fork change PurrNet's sample?
Only one line. ResourceSpawner.InitSeed gets runLocally: true, so a dedicated server spawns trees. Everything else lives in Assets/Edgegap/ and adds itself at runtime, so the scene isn't modified.
When does the sample's game server stop?
It stops its own Edgegap deployment 30 seconds after the last player leaves, or 120 seconds after it starts if nobody joins. You only pay while players are on it.
Can the PurrNet Incremental sample run in a browser?
Not yet. It uses UDP, which browsers can't open. A WebGL build would need PurrNet's WebTransport and a WebSocket port with TLS Upgrade on Edgegap, which hasn't been tested.

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.









