Headless Server

A headless server is a game server process that runs without any graphics rendering, display output, or audio — only the game logic and network stack, making it far cheaper and faster to run at scale.

When you ship a multiplayer game, you build two separate binaries from the same codebase: a client build (with rendering, UI, audio, and input handling) and a server build with all of that stripped out. The server build is headless. It never draws a frame — it just simulates the game world, processes player inputs, and sends state updates over the network.

Why headless matters for infrastructure cost

Graphics rendering is expensive. A GPU capable of running a modern game at 60fps costs significantly more — in both hardware and electricity — than a CPU-only machine. Because headless servers need no GPU, you can run dozens of game server instances on a single bare-metal machine that would otherwise render one game client.

This is why game server orchestration platforms like Gameye use CPU-only infrastructure for session hosting. A single physical node can run many concurrent game sessions at a fraction of the cost of running equivalent client hardware.

Headless vs. dedicated vs. authoritative

These three terms describe overlapping but distinct properties of a server:

  • Headless — no rendering or display output (a property of the build)
  • Dedicated — no player is attached to the machine; it exists solely to run the game (a property of the deployment)
  • Authoritative — the single source of truth for game state; clients cannot override it (a property of the architecture)

Most production game servers are all three. When developers say “dedicated server”, they almost always mean a headless, authoritative server running on dedicated infrastructure.

How to build a headless server

Most major engines support headless server builds natively:

  • Unreal Engine — compile with -server target; disable UGameViewportClient, ensure DEDICATED_SERVER preprocessor macro is set
  • Unity — enable the Dedicated Server build target introduced in Unity 2021 LTS; the editor strips client-only assemblies automatically
  • Godot — export with --headless flag; the engine skips the rendering tree entirely

Once built, a headless server binary is typically packaged into a Docker container — a self-contained image that includes the binary, its runtime dependencies, and any configuration. This container is what orchestrators like Gameye deploy and manage across global infrastructure.

Frequently asked questions

What is a headless server? A game server process that runs with no graphics rendering, display output, or audio — only the game logic and network stack. It simulates the world, processes inputs, and sends state updates, but never draws a frame.

Why use a headless server? Cost and density. With no GPU and no rendering work, a headless server uses far less hardware and power, so a single machine can host many concurrent game sessions instead of running one graphical client.

What’s the difference between a headless server and a dedicated server? Headless describes the build (no rendering); dedicated describes the deployment (a machine that exists only to run the game, with no player attached). Most dedicated game servers are also headless, but the terms describe different properties.

How do you run a headless game server? Build the server target in your engine (Unreal -server, Unity Dedicated Server target, Godot --headless), package the binary into a Docker container, and deploy that container — an orchestrator like Gameye then runs and scales it across global infrastructure.

See also: Dedicated server · Authoritative server · Containers · Docker · How Gameye runs containerised game servers globally

Back to Glossary