Quick answer: Construct 3 Photon Multiplayer events firing before initialization complete? Default event subscription happens at object create; Photon init is async - await connection state.

Player joins; instantly tries to send RPC; fails because client hadn't connected to room yet.

Await connected state

Check Photon.PlayerCount > 0 before sending. Or subscribe to OnJoinedRoom.

Or use a state machine

States: Disconnected, Connecting, InRoom, Playing. Each state defines allowed actions.

Default-disable RPC

RPC button disabled until connected. UX gates the bug.

“Async initialization completes asynchronously. Code after init runs without it.”

For multiplayer, the connection state machine is the foundation. Build it; everything else is correct.

Related reading