UnityTransport. Unity Netcode then drives it through the standard
INetworkInterface surface. You configure it in the inspector (or in C#).
The public method surface is UTP’s own. The package forwards it to the
QUIC + MoQT substrate.
Install (UPM git URL)
Add the package to your Unity project via Package Manager → Add package from git URL:The package depends on
com.unity.transport (it implements UTP’s
INetworkInterface). It works with both Netcode for GameObjects and
Netcode for Entities. Pin Netcode to a version compatible with your Unity
editor. The transport tracks UTP’s stable interface, not a specific Netcode
release.Swap the transport
In your network manager prefab, removeUnityTransport and add
ClutchCallTransport as the transport component. Unity Netcode discovers
it the same way that it discovers UTP. No other wiring changes are necessary.
1
Select the NetworkManager
Open the prefab (or scene object) that holds your
NetworkManager.2
Replace the transport component
Remove the existing
UnityTransport component. Add
ClutchCallTransport. If NetworkManager.NetworkConfig.NetworkTransport
referenced the old component, point it at the new component.3
Configure relay host + token
Set the relay host and an auth token in the inspector. This is the same
way that you configure a relay endpoint for UTP.
Component: ClutchCallTransport
ClutchCallTransport is a NetworkTransport (Netcode) that implements UTP’s
INetworkInterface. It is the only type that you reference directly.
Everything else is standard Netcode.
Inspector fields
string
required
The FirstByte relay endpoint, e.g.
relay.firstbyte.fast. Players dial the
nearest POP behind this host.string
required
The FirstByte auth token that authorizes the QUIC session. Mint a
short-lived, room-scoped token from your control-plane API. Do not ship a
static secret in the build.
string
The room / match namespace that this player joins. The host and the clients
of the same match share one
Room Id.string
Optional pinned certificate hash for the relay’s TLS 1.3 certificate. Use it
in environments that pin the certificate instead of the public trust store.
int
default:"path MTU"
Upper bound for the unreliable (QUIC datagram) channel.
MaxPayloadSize()
reads it back. The transport rejects payloads larger than this. It does not
fragment them.Configure from C#
You can set the same fields in code beforeStartHost / StartClient:
UTP method surface
The package implementsINetworkInterface. Thus the methods that you call are
Unity Netcode / UTP methods. The transport forwards each one to the
QUIC + MoQT substrate. These methods matter most for porting:
NetworkDelivery → lane mapping
Unity’sNetworkDelivery enum selects the lane:
Events
The transport shows the connection lifecycle through Netcode’s standard callbacks. You do not subscribe to transport-specific events:Non-Unity engines
The Unity component is a thin wrapper over a shared C++ star session (host + N peers with reliable + unreliable + discovery). To integrate a non-Unity engine, you implement a small set of engine-side hooks: discovery, RTT, max-datagram, capture-time telemetry, and the datagram-lane mapping. You reuse the rest of the session machinery. For a fully typed, language-native surface (TypeScript / Python / Go / Rust / Java / C#) without Unity, use the Games SDK. It exposes the samestate / input / event channels directly.
- TypeScript
- Python
Related
Cookbook
This page has copy-paste snippets for the common porting tasks.
Games SDK
This is the typed, non-Unity surface for the same wire model.