Shared Mode Master Client
Overview
The SharedModeMasterClient is role given to one client in a Shared Mode session. A player with this role will have a few unique privileges that other clients will not have access to.
Assignment
By default, the role of SharedModeMasterClient will be assigned to the player who created a Shared Mode session. Players can determine if they are the SharedModeMasterClient by simply calling NetworkRunner.IsSharedModeMasterClient. This role will be reassigned if...
- The
SharedModeMasterClientleaves or is disconnected; a newSharedModeMasterClientwill be automatically assigned to one of the clients currently in the room. - The
SharedModeMasterClientexecutesNetworkRunner.SetMasterClient(PlayerRef player) - The
SharedModeMasterClientis unable to send network messages but not yet fully disconnect and another client sends a Master Client Reassign Request.
SharedModeMasterClient Privileges
As previously mentioned, the SharedModeMasterClient has a few unique privileges.
Scene Management
In Shared Mode, only the SharedModeMasterClient has the authority to manage scenes; this includes any method involved with scene management such as NetworkRunner.LoadScene.
Initial State Authority over Scene Objects
When a new scene is loaded, the SharedModeMasterClient will have StateAuthority over all NetworkObjects baked into the scene.
Is Master Client Object
In the Shared Mode Settings for NetworkObjects, if Is Master Client is set to true, the SharedModeMasterClient will always have State Authority over this NetworkObject. If a new SharedModeMasterClient is assigned, the State Authority for this NetworkObject will transfer to the new SharedModeMasterClient.
Despawning Objects With No State Authority
If a NetworkObject has Allow State Authority Override checked and Destroy When State Authority Leaves unchecked in its Shared Mode Settings, the NetworkObject will not be destroyed if the player disconnects; however, the SharedModeMasterClient can despawn this object despite not having StateAuthority over it.

Master Client Reassign Request
Master Client Reassign Request is available starting with Fusion 2.1.
Clients can manually request a master client reassignment in case the master client becomes unresponsive but does not fully disconnect. This allows for much faster switching of the master client.
AllowMasterClientReassignRequest needs to be enabled in the NetworkProjectConfig. By default, there is a 2-second reassignment threshold. This is the time in seconds in which the current master client has not been responsive (No messages received by the Photon Cloud). This threshold is adjustable in the NetworkProjectConfig via the MasterClientReassignRequestThreshold value.
Setting MasterClientReassignRequestThreshold to 0 allows any client at any time to take over as the master client even if the current master is still responsive. This can be abused by malicious clients (hackers) to take over an existing session.
Master clients switching does not happen automatically when the master client becomes unresponsive (only on a full disconnect). A manual request from another client is needed. A request can be sent by any client using:
C#
NetworkRunner.RequestMasterClientReassign();
Example
To detect the master being inactive clients can check whether networked properties are being updated by the master client. If there are no existing properties that are being updated each tick a custom tracker can be added.
C#
using Fusion;
public class MasterClientWatchdog : NetworkBehaviour
{
// Last tick stamped by the master client.
[Networked] public int Heartbeat { get; set; }
// Only runs on the master client (state authority of this object).
public override void FixedUpdateNetwork()
{
Heartbeat = Runner.Tick;
}
// Runs on every client. The non-master clients watch how stale the heartbeat is.
// Instead of every client running this it is recommended to designate a single "vice master client".
private void FixedUpdate()
{
if (Runner == null || Runner.IsSharedModeMasterClient)
return;
float secondsBehind = (Runner.Tick - Heartbeat) * Runner.DeltaTime;
if (secondsBehind >= Runner.Config.MasterClientReassignRequestThreshold)
Runner.RequestMasterClientReassign();
}
}
Tracking the Shared Mode Master Client
GetMasterClient() is available starting with Fusion 2.1.
In Shared Mode NetworkRunner.GetMasterClient() can be used to obtain the current maser client. Alternatively it can be checked by tracking the NetworkObject.StateAuthority property of an object that has the IsMasterClientObjec flag set.