Unity Netcode Integration

Gameye + FishNet

Run your FishNet (Fish-Networking) dedicated servers on Gameye's global infrastructure. Containerize your headless Unity server — no plugin, no SDK, no DevOps.

Unity FishNet Dedicated Server No SDK

FishNet (Fish-Networking) is a free, open-source networking library for Unity built for performance — with built-in client-side prediction, lag compensation, and a flexible observer system. You build with NetworkManager, [ServerRpc] / [ObserversRpc], and SyncTypes; FishNet handles authoritative server logic.

FishNet ships no hosting platform of its own. A FishNet dedicated server is simply your Unity project built as a headless Linux server. Gameye runs that server as a container across its global network, so there is nothing FishNet-specific to integrate. If it exports to Linux and runs in Docker, it runs on Gameye.

How it works
  1. Build your Unity project as a Dedicated Server / headless Linux build with FishNet
  2. Start the server with ServerManager.StartConnection() on its fixed transport port
  3. Wrap the build in a Docker container and push it to a registry
  4. Call the Gameye Session API with your image name and target region
  5. Gameye returns an IP and port in ~0.5 seconds — players connect directly to your FishNet server

Start FishNet in server mode

On a Dedicated Server build, start FishNet's ServerManager as soon as the container boots. The transport (Tugboat by default) owns the listen port — bind a fixed internal port and let Gameye map an external one to it.

C# — ServerBootstrap.cs
using FishNet;
using UnityEngine;

// Attach to a bootstrap object in your server scene.
public class ServerBootstrap : MonoBehaviour
{
    void Start()
    {
        // Only auto-start in Dedicated Server / headless builds.
#if UNITY_SERVER
        // Tugboat (LiteNetLib / UDP) binds its Port field (default 7770).
        // Keep it fixed; Gameye maps an external port to it.
        InstanceFinder.ServerManager.StartConnection();
        Debug.Log("FishNet dedicated server started");
#endif
    }
}

Containerize the server

A FishNet server needs nothing beyond a Linux base. Copy the headless build in, expose the transport port, and set it as the entrypoint.

Dockerfile
FROM ubuntu:22.04

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

WORKDIR /app
COPY Build/ /app/
RUN chmod +x /app/MyGameServer.x86_64

# Tugboat's default UDP port
EXPOSE 7770/udp
ENTRYPOINT ["/app/MyGameServer.x86_64", "-batchmode", "-nographics"]

Start a session from your backend

When a match is ready, call the Gameye Session API with your image and a region. Gameye places the server near your players and returns the connection details.

cURL
curl -X POST https://api.gameye.io/session \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "location": "eu-west",
    "image": "your-fishnet-server",
    "args": ["-batchmode", "-nographics"],
    "labels": { "matchId": "abc123" },
    "ttl": 3600
  }'

The response returns the host IP and the external port in ~0.5 seconds. Pass those to your players — they connect straight to your FishNet server with no relay hop in the path.


Setup steps

1
Build a Linux dedicated server

In Unity, build for the Dedicated Server platform (or a headless Linux build) with FishNet's NetworkManager in your server scene. Test it locally with -batchmode -nographics before containerizing.

2
Create a Docker image

Wrap the build in a container (see the Dockerfile above) and push it to Docker Hub, GitLab Registry, or any OCI-compatible registry.

3
Get your API token

Start a free Developer Trial — self-serve, no sales call. You'll get an API token, your application name, and available regions.

4
Start sessions

Call POST /session from your backend or matchmaker. Gameye returns an IP and ports; pass them to players, who connect directly to the FishNet server.


Why run FishNet servers on Gameye

No SDK or plugin

Gameye orchestrates at the container level. Nothing goes inside your Unity project — your existing FishNet server build runs unchanged, prediction and all.

No egress fees

$0.07/vCPU/hr is the full compute bill. Bandwidth is included — no per-GB charges as your player count grows.

Sub-second allocation

Sessions start in ~0.5 seconds on average. Players don't wait between "match found" and "server ready".

Provider-agnostic

Servers run across bare metal and multiple cloud providers, placed near your players, with automatic failover between regions.

No DevOps required

No Kubernetes, no Terraform, no fleet provisioning. Push a Docker image and call an API. Your team stays on the game.

Self-serve trial

Get a token, push your image, and run your first FishNet session on Gameye before your next sprint ends.


Frequently asked questions

Do I need a FishNet plugin or SDK to use Gameye?

No. Gameye runs your server as a plain Linux container and manages it externally through a REST API. A FishNet dedicated server is a standard Unity headless build, so there's nothing engine- or library-specific to add. You containerize the build you already produce and call the Session API.

Which FishNet transport should I use?

Tugboat (LiteNetLib over UDP) is the default and the right choice for most games — low-latency reliable and unreliable channels. Bayou targets WebGL clients; Multipass lets a server accept several transports at once. Whichever you use, your server binds the transport's listen port inside the container (Tugboat defaults to 7770) and Gameye maps an external port to it.

Does client-side prediction and lag compensation still work?

Yes — completely. FishNet's prediction, reconciliation, and lag compensation live in your server and client code. Gameye only starts the server process and hands back a connection address; it never sits in the gameplay network path, so there's no added hop and your netcode behaves exactly as it does in the editor.

Can I run other Unity netcode on Gameye too?

Yes — Gameye is netcode-agnostic. FishNet, Mirror, PurrNet, Unity Netcode for GameObjects, and Photon Fusion all deploy the same way: build a Linux dedicated server, containerize it, and call the Session API. The orchestration layer doesn't care which library is inside.

Get started

Start your free trial today.

Sign up, push your FishNet server image, and run your first session before your next sprint ends.