Discover how Edgegap works

Discover how Edgegap works

/

Steam Lobbies

Steam Lobbies

Deploy to Edgegap

Published

Published

Published

Last reviewed for accuracy

Last reviewed for accuracy

Last reviewed for accuracy

Steam Lobbies: How to start Edgegap dedicated servers from your Steam lobbies

Steam Lobbies: How to start Edgegap dedicated servers from your Steam lobbies

This guide shows you how to keep Steam lobbies in your game, for friends and parties, and start an Edgegap dedicated game server for each match: when the lobby owner starts the match, your backend checks the players with Steam, deploys a server near them, and the lobby hands its address to every member.

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.

Steam groups the players; Edgegap hosts the match. Between them sits one small service on your backend, because starting a server needs your Edgegap API token, which never goes in a game client. Your game's traffic goes straight to the dedicated server, not through Steam's relay.

This guide covers:

  1. Preparing a working Edgegap app version and your Steamworks app

  2. Connecting your coding agent to Edgegap (optional)

  3. Setting up your Steam lobby

  4. Adding a deploy service to your backend, with Steam sign-in

  5. Requesting a server when the lobby is ready

  6. Sharing the server with the lobby, and ending the match

  7. 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 writes the deploy service and the lobby code, and checks your app version and deployments. You handle Steamworks, your Edgegap dashboard, the secrets, and playtest.

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

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.

  • A working Edgegap app version of your game server: a server you deployed and joined at least once. Your backend deploys that version for every match, so it needs a functional, containerized game server to work end to end. If you don't have one yet, use our guides: Unity Engine, Unreal Engine, Godot Engine or Custom Engine. Note its application name, version name and port name (usually gameport).

  • A Steamworks app with the Steamworks SDK in your game (or your engine's Steam integration), its App ID, and a Web API publisher key from the Steamworks partner site, for your backend.

  • A backend you control, for the deploy service: your existing game backend, or a small serverless function.

  • An Edgegap API token, from Dashboard → User Settings → Tokens, stored in your backend's secret manager. It is organization-wide, so never put it in your game client, your game server, your project files or a chat.

Unreal Engine: keep Steam for lobbies, friends and achievements, but connect to the server directly: use IpNetDriver and set bUseSteamNetworking=false. Our Unreal Engine guide covers the server build.

2. Connect your coding agent to Edgegap

Skip this step if you're doing everything by hand.

The Edgegap MCP server lets your agent check your apps and versions, deploy test servers and read their logs on your account. The edgegap-deployments-api agent skill gives it the tested rules for backends that start Edgegap servers: where the token lives, placing servers near players, webhooks, retries and cleanup.

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 and their versions, with each version's ports."

3. Set up your Steam lobby

The lobby carries the match. Two lobby data keys are enough: the server's address and its port. Everything else stays as your game already has it.

  • Players create and join lobbies as today, with Steamworks' ISteamMatchmaking (CreateLobby, invites, JoinLobby).

  • Add two lobby data keys, empty for now, for example server_host and server_port. Only the lobby owner can set lobby data (SetLobbyData); every member gets a LobbyDataUpdate_t callback when it changes.

  • Optionally, also set the lobby's game server with SetLobbyGameServer (IP and port): Steam then sends members a LobbyGameCreated_t callback, which Steam's own UI understands.

4. Add a deploy service to your backend, with Steam sign-in

Verify the player. Your backend needs to know who is calling. In the game, get a ticket with ISteamUser::GetAuthTicketForWebApi, wait for the GetTicketForWebApiResponse_t callback, and send the ticket (hex-encoded) to your backend. Your backend calls Steam's Web API ISteamUserAuth/AuthenticateUserTicket with your publisher key and gets the player's SteamID. It also records the public IP it sees on that request: Edgegap uses those IPs to start the server near all the players.

Start the server. One call: POST https://api.edgegap.com/v2/deployments, with the header Authorization: token <your API token>, and a body with:

  • application and version: your Edgegap app and the version to run, read from your config.

  • users: each player's public IP, as {"user_type": "ip_address", "user_data": {"ip_address": "..."}}. Edgegap picks the location with the best ping for the whole group.

  • tags: for example lobby-<id>, so you can find the server later.

  • webhook_on_ready (and webhook_on_error): your backend's URL, with an unguessable per-lobby token in it. Edgegap calls it with the server's fqdn, public_ip and ports.gameport.external once it starts.

Edgegap answers 202 with a request_id: store it with the lobby right away. If the call timed out, look for a deployment tagged lobby-<id> before deploying again. A 422 means no server could be allocated yet: retry with backoff. Webhooks aren't retried, so if none arrives in time, check GET https://api.edgegap.com/v1/status/<request_id>.

With your agent:

"Load the edgegap-deployments-api skill and add an Edgegap deploy service to my backend for Steam lobbies: a sign-in endpoint that verifies a Steam Web API ticket with ISteamUserAuth/AuthenticateUserTicket and records the player's IP, and a start-match endpoint the lobby owner calls with the lobby ID and member SteamIDs, which checks the caller owns the lobby, deploys my app version with POST /v2/deployments (tags, ready and error webhooks), stores the request_id and returns the server's address once ready. Read the API token and the Steam publisher key from my secret manager."

Prototype shortcut, not for release: calling Edgegap's API straight from the lobby owner's game puts your organization-wide API token inside your game build, where anyone can extract it. Use it only on your own machine.

5. Request a server when the lobby is ready

When the lobby owner starts the match:

  1. The lobby owner's game calls your deploy service with the lobby ID and the members' SteamIDs, signed in as that player.

  2. Your service checks the caller owns the lobby and that every member has signed in, deploys the server, and returns right away. The server takes a few seconds to start.

  3. The lobby owner's game waits for the address: it checks your service every few seconds, or your service notifies it, until the ready webhook has arrived.

Show players a "starting server" state meanwhile, and a retry if your service reports an error.

6. Share the server with the lobby, and end the match

  1. The lobby owner sets server_host and server_port with SetLobbyData. Steam notifies every member.

  2. Each member connects to that address and port. Ready means the container started; the game can need up to a minute more to load, so retry the connection every second for a while. Browser and WebSocket clients connect with wss:// to the host name.

  3. When the match ends, the lobby owner clears both keys, and members leave the server. The server stops its own deployment: on match end, it calls the ARBITRIUM_DELETE_URL Edgegap gives every deployment, with ARBITRIUM_DELETE_TOKEN. No API token needed.

Rematch with the same players? The lobby owner requests a new server, and the flow starts again.

Your deploy service stops anything left over, such as a lobby that broke up before the match started. Stop those by exact request_id (DELETE https://api.edgegap.com/v1/stop/<request_id>; a 410 means it already stopped), never with broad filters.

7. Test with two players

  1. Make sure no test deployment is still running: the free tier runs one deployment at a time.

  2. Launch two clients on two computers, each signed in to a different Steam account, and join the same lobby.

  3. Start the match as the lobby owner. Your service deploys the server; in the Edgegap dashboard, the deployment appears tagged with the lobby, in a location near you.

  4. Both clients get the lobby update and connect to the same server.

  5. End the match: the keys clear, the server stops itself, and it disappears from the dashboard.

If the lobby gets an address but nobody can connect, it's the server, not the lobby: deploy your version by hand and join it directly.

Next Steps

Next Steps

Going live? Ask your agent to run the edgegap-launch skill's checklist: version rollouts, restart policy, maximum duration, cost control. Matching strangers, not just friends? Add Edgegap's hosted matchmaker next to your lobbies.

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 starting Edgegap dedicated servers from Steam lobbies.

Can Steam lobbies use dedicated servers?

Yes. Keep your Steam lobbies for friends and parties. When the lobby owner starts the match, your backend deploys an Edgegap server near the players, and the owner shares its address through lobby data so every member connects.

Do I need a backend to start Edgegap servers from Steam lobbies?

Yes. Starting a server needs your Edgegap API token, which gives access to your whole Edgegap organization. In a game client, anyone could extract it. A backend keeps it secret and verifies players with Steam first.

How do I verify Steam players on my backend?

The game gets a ticket with GetAuthTicketForWebApi and sends it to your backend, which calls Steam's ISteamUserAuth/AuthenticateUserTicket Web API with your publisher key. Steam returns the player's SteamID.

Does Steam relay the traffic to an Edgegap server?

No. Players connect directly to the dedicated server's address and port. In Unreal Engine, use IpNetDriver and turn Steam networking off; Steam still handles lobbies, friends and achievements.

How do I stop the Edgegap server when the match ends?

The server stops its own deployment with the delete URL and token Edgegap injects into every deployment, with no API token needed. Your backend also stops leftovers by their exact request ID.

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.