One C++20 core  ·  every engine

Engine-agnostic multiplayer netcode — and the platform to run it.

Photon-Fusion-class prediction & rollback, a custom encrypted UDP transport, and both authority models — wrapped idiomatically for Unity, Unreal, Godot and the web. Write your simulation once and ship it self-hosted native or on our managed WASM hosting.

  • 60 Hz fixed sim tick
  • ~100 ms interpolation buffer
  • 4 reliability channels
  • X25519 + ChaCha20 encrypted wire
Idiomatic bindings for
Unity P/Invoke Unreal UE module Godot GDExtension Web WASM · WebTransport

Why Lattice

Production netcode, decoupled from your engine and your backend.

Prediction, rollback, congestion control and serialization are subtle and expensive to get right. Lattice implements them once, in a portable C++20 core behind a stable C ABI — then hands you natural per-engine concepts on top.

Prediction & rollback

Client-side prediction, server reconciliation with rollback & re-simulate, snapshot interpolation and lag compensation — the headline of competitive netcode, built in.

Both authority models

Server/host-authoritative and shared/distributed authority are first-class — per-object ownership and authority transfer in the same data model. Objects can even mix modes in one session.

Engine-agnostic

One core, idiomatic wrappers: Unity via P/Invoke, Unreal as a UE module, Godot as a GDExtension, web as WASM. Your gameplay engineers never touch a raw pointer.

You own the wire

A custom UDP transport with four reliability/ordering channels, congestion control, fragmentation and X25519 + ChaCha20-Poly1305 encryption. Sub-MTU packets, tuned for tick-rate traffic — not bulk throughput.

NAT traversal & relay

STUN-style reflexive discovery and UDP hole punching connect most peers directly; our own TURN-like relay guarantees connectivity when it fails — the backbone of P2P hosting and host migration.

Server-side anti-cheat

Server authority and Ed25519-signed session tokens raise the bar. Violations flagged by the anti-cheat core are forwarded to the platform and surface live in your dev portal.

Write once, dual-target

The same simulation runs native or in managed WASM.

Your game-sim is a shared library compiled into both the dedicated server and the client. A client can act as a P2P host with byte-for-byte identical logic. Topology is injected at runtime — dedicated, listen-server or P2P-relayed all run the same tick.

Ship it your way: self-host the native binary for cost, data-residency or control — or push the exact same module to our managed WASM hosting and let us run the fleet.

Write-once guide →
game-sim your shared simulation
Self-hosted native lattice-gameserver
Managed WASM we run the fleet

Batteries-included platform

An integrated, hosted platform — or fully self-hostable.

A lightweight .NET control plane handles authentication, matchmaking & fleet orchestration, and social. A global friends & presence graph spans your titles with per-game visibility controls; analytics and a live-ops debug console come built in.

  • Auth with Ed25519-signed tokens
  • Matchmaking, session directory & fleet placement
  • Global social graph: friends, presence, parties
  • Analytics dashboards + in-portal anti-cheat feed
  • Live-ops console: inspect networked objects on a running lobby
Open the developer portal →

At a glance

How Lattice compares.

Headline differentiators that motivate the design — not a point-in-time feature audit.

Dimension Lattice Photon Fusion Mirror FishNet
Engines Unity, Unreal, Godot, Web UnityUnityUnity
Core language C++20 core + C ABI C#C#C#
Authority models Server/host and shared, per-object Host/server + sharedServerServer (+ client-auth)
Prediction / rollback Yes + lag comp Yes Limited Yes
Transport Custom encrypted UDP (4 ch) + QUIC/WebTransport ProprietaryPluggablePluggable
Relay / NAT traversal Own relay + STUN + hole punching Photon Cloud 3rd-party 3rd-party
Social & auth Built-in Separate products DIY DIY
Self-hostable Fully — source-available core Hosted-leaning Open source Yes

A networked object

Replicated state and an RPC — that's the shape of it.

Declare what replicates, decide who has authority, send an RPC over the right channel. The core handles prediction, delta-compression and the wire.

using Lattice;

// A networked player: predicted locally, reconciled against the server.
public class Player : NetworkBehaviour
{
    // Replicated, delta-compressed, quantized on the wire.
    [Networked] public Vector3 Position { get; set; }
    [Networked, OnChanged(nameof(OnHealthChanged))]
    public int Health { get; set; }

    // Runs every fixed tick (60 Hz). Prediction + rollback are automatic.
    public override void OnNetworkTick()
    {
        if (!HasInputAuthority) return;
        Position += ReadInput<MoveInput>().Move * Runner.TickDelta;
    }

    // Server-authoritative RPC, routed over a reliable channel.
    [Rpc(LatticeRpcTarget.Server)]
    public void RpcFire(Vector3 dir) => SpawnProjectile(dir);
}
// The same logic compiles into the dedicated server AND the P2P host.
struct Player {
    Vec3 position;   // replicated & quantized
    int32_t health;  // delta-compressed against last ack
};

// Fixed 60 Hz tick — authoritative on server, predicted on the owning client.
void player_tick(Player* p, const MoveInput* in, float dt) {
    p->position = vec3_add(p->position, vec3_scale(in->move, dt));
}

// Register the type so replication knows its POD layout.
lattice_register_type(runner, "Player", sizeof(Player), &player_tick);

Illustrative of the intended idiom — see the API reference for the exact shipped surface.

Coming from Photon Fusion?

Migrate with a tool that does the mechanical work — and tells you the rest.

fusion2lattice is a Roslyn-based codemod that rewrites the high-confidence parts of the Fusion 2.1 API surface to Lattice and produces a precise, per-file to-do list for everything that needs a human. On an idiomatic project it mechanically handles around 75–80% of detected constructs — honestly flagging the hard parts (spawn model, input routing, RPC payloads) rather than guessing.

Ship multiplayer that feels instant.

Register a game in the developer portal, drop in the binding for your engine, and run it self-hosted or on managed WASM.