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 four-step flow: configure, install the SDK, setup docker file and upload your game 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. You can change it later from game settings.
  • Tags, labels for filtering and grouping.

Engine​

  • Game engine, Unity, Unreal, Godot 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, the amount of CPU cores to assign to your game servers.
  • Memory, the amount of memory to assign to your game servers.

Regions​

Pick one or more regions where servers should run. See Regions and Finding the Best Region for a Player for more information about regions.

Scaling strategy​

Choose how servers are provisioned:

  • Standalone Servers, create standalone servers. No autoscaling or warm pools, you control when and how each server is created.

  • Intelligent Autoscaling, manage a group of servers with autoscaling and rollout policies. IA keeps servers warmed, scales them automatically, and applies updates consistently.

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 game server.
  • 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.
  • Track players, as they join and leave.
  • Shutdown, when the game session ends.

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.

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.