Skip to main content

Creating a Game

A game is the top-level resource in GameFlow. It holds your server configuration, builds, regions, and fleet settings.

Creating a game in the dashboard is a three-step flow: configure, install the SDK, and upload your server build.

Step 1: Configure the game

From Home / Games, click Create Game and fill in the game form.

Basic info

  • Title, display name for your game.
  • Description, short description shown in the dashboard.
  • Cover image, optional. Uploaded to GameFlow's CDN; you can change it later from game settings.
  • Tags, free-form tags for filtering and grouping.

Engine

  • Game engine, Unity, Unreal, Godot, Colyseus, or Custom.
  • Engine version, the version your server is built against.

Networking

  • Primary port + protocol, the port your server listens on. Supported protocols:
    • TCP, reliable, ordered transport.
    • UDP, low-latency, connectionless transport. Common for realtime games.
    • TLS, TCP wrapped in TLS termination for clients that require a secure connection, such as web browsers (WSS, HTTPS).
  • Additional ports, optional named ports for extra protocols (e.g. a separate query port).

Resources

  • vCPU, defaults to 500m.
  • Memory, defaults to 512Mi.

Regions

Pick one or more regions where servers should run. See Regions and Best Region.

Scaling strategy

Choose how servers are provisioned:

  • On-demand (standalone), a fresh server starts each time you allocate.
  • Fleet, a warm pool of servers sized by buffer, minReplicas, and maxReplicas. Allocations are served from the pool.

For fleets you also choose a rollout strategy (RollingUpdate or Recreate) with maxSurge and maxUnavailable knobs.

Environment variables & launch options

  • Environment variables, key/value pairs passed to your container.
  • Launch options, extra arguments appended to your server's command.

See Environment Variables.

Step 2: Install the GameFlow SDK

Your server integrates the GameFlow Game Server SDK so GameFlow can manage its lifecycle. The SDK drives the full lifecycle for you:

  • Connect, on startup (sidecar mode on GameFlow, local mode off-platform).
  • Ready, once the server can accept players; health reporting then starts automatically.
  • Track players, as they join and leave.
  • Shutdown, when the game session ends.

There's no health loop to write yourself. The SDK Quickstart is the full per-language walkthrough; the short version per engine:

Engines

  • Unity, add gg.gameflow.gameserver via the Package Manager (git URL), create a GameFlowClient, call Start() then Ready().
  • Unreal, copy the GameFlow plugin from the SDK repo into Plugins/, enable it in your .uproject, add GameFlowUnreal to your module's Build.cs, then use UGameFlowSubsystem.
  • Godot, copy the gameflow addon from the SDK repo into your project's addons/, create a GameFlow instance, call start() and ready().
  • Colyseus, npm install @gameflow.gg/gameserver-sdk, connect before booting rooms, call shutdown() in onDispose.
  • Other engines, if there's no GameFlow SDK for your engine yet, see Custom Engine below.

Other languages

  • Go, go get github.com/GameFlowGG/gameflow-gameserver-sdk/sdk/go, gameflow.Connect(ctx), gf.Ready(ctx).
  • Rust, add gameflow-gameserver-sdk, GameFlow::connect().await, gf.ready().await.
  • Node.js, npm install @gameflow.gg/gameserver-sdk, GameFlow.connect(), ready().

Step 3: Upload your server build

Final step: upload a packaged build of your server. GameFlow builds it into a container image and stores it as the game's first build.

Accepted formats

Compressed archives only, max 2GB:

  • .zip
  • .tar
  • .tar.gz
  • .gz
  • .pck

The archive must contain a Dockerfile at the root.

Upload methods

Drag & drop the archive onto the upload zone in the dashboard, or browse to pick a file. Upload starts immediately.

CLI, for larger builds or CI pipelines, use the GameFlow CLI:

curl -fsSL https://install.gameflow.gg | sh && \
gameflow builds create --game-id=<GAME_ID> --version v1.0.0 --file server.zip

See GameFlow CLI.

What happens during upload

  1. Upload, archive is streamed to object storage.
  2. Build, GameFlow spins up a build container, pulls base images, installs dependencies, compiles, and pushes to the image registry.
  3. Ready, the build appears on the game's Builds page and is promoted to current automatically (since it's the first one).

You can watch live build logs in the dashboard. If a build fails, fix the issue and retry without re-uploading the archive.

After a successful build

You can immediately launch a test server in any of the game's configured regions, or head to the game's detail page to allocate servers via the API or dashboard.

Custom Engine

Selecting Custom gives you full control over your server's container image. Unlike the managed engines (Unity, Unreal, Godot, Colyseus), GameFlow does not apply a built-in Dockerfile template, you bring your own.

When to use Custom

  • Your server is built with an in-house or proprietary engine
  • You need a runtime not covered by managed engines (e.g. a C++ dedicated server, a Python simulation, a Rust game server)
  • You want to control the base image, OS dependencies, or build steps that the managed templates don't expose

Dockerfile requirements

Your uploaded archive must contain a Dockerfile at the root (detected case-insensitively). GameFlow uses it verbatim, no template is layered on top.

A minimal example for a compiled Linux binary:

FROM ubuntu:22.04

RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*

RUN useradd -u 1000 -m gameuser
WORKDIR /opt/game
COPY . /opt/game
RUN chmod +x /opt/game/server
RUN chown -R gameuser:gameuser /opt/game
USER 1000

EXPOSE 7777/udp

ENTRYPOINT ["/opt/game/server"]

A few things to keep in mind:

  • Run as UID 1000. GameFlow enforces non-root execution at runtime.
  • Expose the right port. Match the port you configured in the Networking step.
  • Keep the image lean. Larger images slow down cold starts and fleet rollouts.

SDK integration

Your server talks to GameFlow for its lifecycle and player tracking through the GameFlow Game Server SDK, which covers Unity, Unreal, Godot, Colyseus, Go, Rust, and Node.js. See Step 2 and the SDK Quickstart.

If your engine isn't covered by an SDK yet, contact GameFlow support for integration options.