Owner Auth

Owner Auth is a setting found across PurrNet that determines whether the owning player or the server has authority over a networked value or component.

When owner auth is enabled, the owning client is the one responsible for controlling and updating the value. This means only the owner can modify it, and changes are sent from the owner to everyone else. If the object has no owner, the server automatically takes over as the controller.

When owner auth is disabled, only the server can control the value, regardless of who owns the object.

Where you'll see it

Owner auth shows up in two main places:

Sync types have it as a constructor parameter:

// Server authed (default)
private SyncVar<int> health = new(100);

// Owner authed
private SyncVar<int> health = new(100, ownerAuth: true);

This works the same for SyncList, SyncDictionary, SyncEvent and other sync types.

Plug n' play components like Network Transform and Network Rigidbody expose it as a toggle in the inspector. Enabling it lets the owning player directly control the object's movement, while disabling it means the server is in charge.

When to use it

Owner auth is great for things the owning player should directly control, such as player movement, camera-related values or personal settings. It gives the owner immediate responsiveness since they don't have to go through the server first.

For anything gameplay-critical like scoring, health in competitive games, or shared world state, you're better off keeping owner auth disabled and letting the server be the authority. See Server Auth (Safe) and Client Auth/Everyone (Unsafe) for more on that.

  • Controller - How PurrNet decides who is "in control" of an object

  • Ownership - How ownership itself works

  • Network Rules - Configuring authorization at a broader level

Last updated