Create a Photon application in the Photon dashboard and note the App ID; select the Realtime product type.
Add the Photon Realtime SDK to your project and initialize a LoadBalancingClient with your App ID, game version string, and the appropriate region (or 'best' for auto-select).
Connect to Photon with client.ConnectUsingSettings() or ConnectToRegionMaster(); implement IConnectionCallbacks to handle OnConnected and OnConnectedToMaster before proceeding.
From the master server connection, join or create a room: client.JoinOrCreateRoom(roomName, new RoomOptions { MaxPlayers = 4 }, TypedLobby.Default) — handle IMatchmakingCallbacks.OnJoinedRoom for success.
Send events between players using client.OpRaiseEvent(eventCode, data, raiseOptions, sendOptions); implement IOnEventCallback.OnEvent to receive events from other players in the same room.
For random matchmaking (no specific room name), use client.OpJoinRandomRoom() and fall back to creating a room in the OnJoinRandomFailed callback.
Known gotchas
Photon's LoadBalancingClient requires regular calls to client.Service() on a background thread or game loop tick to process incoming events and callbacks — without this, OnEvent and other callbacks never fire.
Room properties set in RoomOptions are not automatically visible in the lobby for matchmaking filters; you must explicitly add keys to CustomRoomPropertiesForLobby when creating the room.
The free Photon plan has a concurrent connection limit; exceeding it causes new connections to be refused silently from the client perspective — monitor your dashboard usage and plan accordingly.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp