Learn GONet

Everything you need to go from zero to multiplayer — video tutorials, core class references, and practical patterns for building networked games with GONet.

Video Tutorials

Watch step-by-step walkthroughs on our YouTube channel. The start-to-finish tutorial takes you from an empty Unity project to a fully networked multiplayer game.

GONet YouTube Channel

Start-to-finish tutorial covering installation, setup, state synchronization, events, and deployment. New videos added regularly.

Watch on YouTube

Core Classes Reference

The building blocks of every GONet multiplayer project. Understand these classes and you can network anything.

GONetParticipant (GNP)

The core networking component. Add it to any GameObject to make that object automatically networked. GNP handles identity, ownership, and lifecycle across all connected clients.

  • Automatically syncs Transform data (position, rotation, scale)
  • Must be in the scene hierarchy or placed in a /Resources folder for dynamic spawning
  • Inspector shows all synced properties and their current network status

GONetAutoMagicalSyncAttribute

Decorate public fields or properties with [GONetAutoMagicalSync] to replicate their values across the network automatically. Similar in concept to [SyncVar] but more powerful and flexible.

Supported types:

bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, double, Vector2, Vector3, Vector4, Quaternion

GONetBehaviour

A convenience base class that extends MonoBehaviour with GONet-aware lifecycle methods. Provides a clean entry point for networked object logic.

  • Override OnGONetParticipantStarted() to run logic when a networked object spawns and is ready
  • Optional — you can use GONetParticipant directly without this base class

GONetParticipantCompanionBehaviour

Attach alongside a GONetParticipant to add custom logic that references the networked object. Provides convenient access to ownership and authority state.

  • Use the IsMine property to run owner-only logic (e.g., input handling, camera control)
  • Automatically linked to the GONetParticipant on the same GameObject

GONetMain (Static API)

The global static entry point for GONet. Provides server/client detection, network-synced time, and the event bus for publish/subscribe messaging.

  • GONetMain.IsServer / GONetMain.IsClient — check the current role at runtime
  • GONetMain.Time — network-synced time property, consistent across all connected peers
  • GONetMain.EventBus — publish and subscribe to custom events across the network

Events and RPCs

Send custom events across the network using GONet's event bus system. Events are serialized with MemoryPack for high-performance binary serialization.

Creating Custom Events

  1. Create a class or struct that implements IGONetEvent
  2. Decorate it with [MemoryPackable] attributes for binary serialization
  3. Publish via GONetMain.EventBus.Publish() and subscribe with GONetMain.EventBus.Subscribe<T>()

MemoryPack Serialization

GONet uses MemoryPack for event serialization — a high-performance, zero-allocation binary serializer for C#. It provides faster serialization than MessagePack and JSON with minimal GC pressure.

MemoryPack Documentation

Next Steps

Ready to build? Pick up where you left off.

Install GONet

Get GONet into your Unity project in minutes. Step-by-step installation guide.

Feature Comparison

Compare GONet free and GONet Legendary. See the full feature breakdown.

Dajimo Showcase

See GONet in a real multiplayer FPS. Study the source code and patterns.

GONet v1.5 (Free) disclosure

GONet v1.5 (free) includes a legacy license/EULA remittance mechanism that may transmit a local GONet-generated file to unitygo.net. This behavior is not present in GONet Legendary (v1.6+), the paid version available on the Unity Asset Store.

Learn GONet | GONet