Photon Unity Networking 2 2.45

Classes | Public Member Functions | Public Attributes | Properties | List of all members
SupportLogger Class Reference

Helper class to debug log basic information about Photon client and vital traffic statistics. More...

Inherits IConnectionCallbacks, IInRoomCallbacks, IMatchmakingCallbacks, and ILobbyCallbacks.

Public Member Functions

void StartLogStats ()
 
void StopLogStats ()
 
void LogStats ()
 Debug logs vital traffic statistics about the attached Photon Client. More...
 
void OnConnected ()
 Called to signal that the "low level connection" got established but before the client can call operation on the server. More...
 
void OnConnectedToMaster ()
 Called when the client is connected to the Master Server and ready for matchmaking and other tasks. More...
 
void OnFriendListUpdate (List< FriendInfo > friendList)
 Called when the server sent the response to a FindFriends request. More...
 
void OnJoinedLobby ()
 Called on entering a lobby on the Master Server. The actual room-list updates will call OnRoomListUpdate. More...
 
void OnLeftLobby ()
 Called after leaving a lobby. More...
 
void OnCreateRoomFailed (short returnCode, string message)
 Called when the server couldn't create a room (OpCreateRoom failed). More...
 
void OnJoinedRoom ()
 Called when the LoadBalancingClient entered a room, no matter if this client created it or simply joined. More...
 
void OnJoinRoomFailed (short returnCode, string message)
 Called when a previous OpJoinRoom call failed on the server. More...
 
void OnJoinRandomFailed (short returnCode, string message)
 Called when a previous OpJoinRandom (or OpJoinRandomOrCreateRoom etc.) call failed on the server. More...
 
void OnCreatedRoom ()
 Called when this client created a room and entered it. OnJoinedRoom() will be called as well. More...
 
void OnLeftRoom ()
 Called when the local user/client left a room, so the game's logic can clean up it's internal state. More...
 
void OnDisconnected (DisconnectCause cause)
 Called after disconnecting from the Photon server. It could be a failure or an explicit disconnect call More...
 
void OnRegionListReceived (RegionHandler regionHandler)
 Called when the Name Server provided a list of regions for your title. More...
 
void OnRoomListUpdate (List< RoomInfo > roomList)
 Called for any update of the room-listing while in a lobby (InLobby) on the Master Server. More...
 
void OnPlayerEnteredRoom (Player newPlayer)
 Called when a remote player entered the room. This Player is already added to the playerlist. More...
 
void OnPlayerLeftRoom (Player otherPlayer)
 Called when a remote player left the room or became inactive. Check otherPlayer.IsInactive. More...
 
void OnRoomPropertiesUpdate (Hashtable propertiesThatChanged)
 Called when room properties changed. The propertiesThatChanged contain only the keys that changed. More...
 
void OnPlayerPropertiesUpdate (Player targetPlayer, Hashtable changedProps)
 Called when custom player-properties are changed. More...
 
void OnMasterClientSwitched (Player newMasterClient)
 Called after switching to a new MasterClient when the current one leaves. More...
 
void OnCustomAuthenticationResponse (Dictionary< string, object > data)
 Called when your Custom Authentication service responds with additional data. More...
 
void OnCustomAuthenticationFailed (string debugMessage)
 Called when the custom authentication failed. Followed by disconnect! More...
 
void OnLobbyStatisticsUpdate (List< TypedLobbyInfo > lobbyStatistics)
 Called when the Master Server sent an update for the Lobby Statistics. More...
 
void OnErrorInfo (ErrorInfo errorInfo)
 

Public Attributes

bool LogTrafficStats = true
 Toggle to enable or disable traffic statistics logging. More...
 

Properties

LoadBalancingClient Client [get, set]
 Photon client to log information and statistics from. More...
 

Detailed Description

Helper class to debug log basic information about Photon client and vital traffic statistics.

Set SupportLogger.Client for this to work.

Member Function Documentation

◆ LogStats()

void LogStats ( )

Debug logs vital traffic statistics about the attached Photon Client.

◆ OnConnected()

void OnConnected ( )

Called to signal that the "low level connection" got established but before the client can call operation on the server.

After the (low level transport) connection is established, the client will automatically send the Authentication operation, which needs to get a response before the client can call other operations.

Your logic should wait for either: OnRegionListReceived or OnConnectedToMaster.

This callback is useful to detect if the server can be reached at all (technically). Most often, it's enough to implement OnDisconnected(DisconnectCause cause) and check for the cause.

This is not called for transitions from the masterserver to game servers.

Implements IConnectionCallbacks.

◆ OnConnectedToMaster()

void OnConnectedToMaster ( )

Called when the client is connected to the Master Server and ready for matchmaking and other tasks.

The list of available rooms won't become available unless you join a lobby via LoadBalancingClient.OpJoinLobby. You can join rooms and create them even without being in a lobby. The default lobby is used in that case.

Implements IConnectionCallbacks.

◆ OnCreatedRoom()

void OnCreatedRoom ( )

Called when this client created a room and entered it. OnJoinedRoom() will be called as well.

This callback is only called on the client which created a room (see OpCreateRoom).

As any client might close (or drop connection) anytime, there is a chance that the creator of a room does not execute OnCreatedRoom.

If you need specific room properties or a "start signal", implement OnMasterClientSwitched() and make each new MasterClient check the room's state.

Implements IMatchmakingCallbacks.

◆ OnCreateRoomFailed()

void OnCreateRoomFailed ( short  returnCode,
string  message 
)

Called when the server couldn't create a room (OpCreateRoom failed).

Creating a room may fail for various reasons. Most often, the room already exists (roomname in use) or the RoomOptions clash and it's impossible to create the room.

When creating a room fails on a Game Server: The client will cache the failure internally and returns to the Master Server before it calls the fail-callback. This way, the client is ready to find/create a room at the moment of the callback. In this case, the client skips calling OnConnectedToMaster but returning to the Master Server will still call OnConnected. Treat callbacks of OnConnected as pure information that the client could connect.

Parameters
returnCodeOperation ReturnCode from the server.
messageDebug message for the error.

Implements IMatchmakingCallbacks.

◆ OnCustomAuthenticationFailed()

void OnCustomAuthenticationFailed ( string  debugMessage)

Called when the custom authentication failed. Followed by disconnect!

Custom Authentication can fail due to user-input, bad tokens/secrets. If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual).

During development of a game, it might also fail due to wrong configuration on the server side. In those cases, logging the debugMessage is very important.

Unless you setup a custom authentication service for your app (in the Dashboard), this won't be called!

Parameters
debugMessageContains a debug message why authentication failed. This has to be fixed during development.

Implements IConnectionCallbacks.

◆ OnCustomAuthenticationResponse()

void OnCustomAuthenticationResponse ( Dictionary< string, object >  data)

Called when your Custom Authentication service responds with additional data.

Custom Authentication services can include some custom data in their response. When present, that data is made available in this callback as Dictionary. While the keys of your data have to be strings, the values can be either string or a number (in Json). You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64.

Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... }

Implements IConnectionCallbacks.

◆ OnDisconnected()

void OnDisconnected ( DisconnectCause  cause)

Called after disconnecting from the Photon server. It could be a failure or an explicit disconnect call

The reason for this disconnect is provided as DisconnectCause.

Implements IConnectionCallbacks.

◆ OnFriendListUpdate()

void OnFriendListUpdate ( List< FriendInfo friendList)

Called when the server sent the response to a FindFriends request.

After calling OpFindFriends, the Master Server will cache the friend list and send updates to the friend list. The friends includes the name, userId, online state and the room (if any) for each requested user/friend.

Use the friendList to update your UI and store it, if the UI should highlight changes.

Implements IMatchmakingCallbacks.

◆ OnJoinedLobby()

void OnJoinedLobby ( )

Called on entering a lobby on the Master Server. The actual room-list updates will call OnRoomListUpdate.

While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify in the public cloud). The room list gets available via OnRoomListUpdate.

Implements ILobbyCallbacks.

◆ OnJoinedRoom()

void OnJoinedRoom ( )

Called when the LoadBalancingClient entered a room, no matter if this client created it or simply joined.

When this is called, you can access the existing players in Room.Players, their custom properties and Room.CustomProperties.

In this callback, you could create player objects. For example in Unity, instantiate a prefab for the player.

If you want a match to be started "actively", enable the user to signal "ready" (using OpRaiseEvent or a Custom Property).

Implements IMatchmakingCallbacks.

◆ OnJoinRandomFailed()

void OnJoinRandomFailed ( short  returnCode,
string  message 
)

Called when a previous OpJoinRandom (or OpJoinRandomOrCreateRoom etc.) call failed on the server.

The most common causes are that a room is full or does not exist (due to someone else being faster or closing the room).

This operation is only ever sent to the Master Server. Once a room is found by the Master Server, the client will head off to the designated Game Server and use the operation Join on the Game Server.

When using multiple lobbies (via OpJoinLobby or a TypedLobby parameter), another lobby might have more/fitting rooms.

Parameters
returnCodeOperation ReturnCode from the server.
messageDebug message for the error.

Implements IMatchmakingCallbacks.

◆ OnJoinRoomFailed()

void OnJoinRoomFailed ( short  returnCode,
string  message 
)

Called when a previous OpJoinRoom call failed on the server.

Joining a room may fail for various reasons. Most often, the room is full or does not exist anymore (due to someone else being faster or closing the room).

When joining a room fails on a Game Server: The client will cache the failure internally and returns to the Master Server before it calls the fail-callback. This way, the client is ready to find/create a room at the moment of the callback. In this case, the client skips calling OnConnectedToMaster but returning to the Master Server will still call OnConnected. Treat callbacks of OnConnected as pure information that the client could connect.

Parameters
returnCodeOperation ReturnCode from the server.
messageDebug message for the error.

Implements IMatchmakingCallbacks.

◆ OnLeftLobby()

void OnLeftLobby ( )

Called after leaving a lobby.

When you leave a lobby, OpCreateRoom and OpJoinRandomRoom automatically refer to the default lobby.

Implements ILobbyCallbacks.

◆ OnLeftRoom()

void OnLeftRoom ( )

Called when the local user/client left a room, so the game's logic can clean up it's internal state.

When leaving a room, the LoadBalancingClient will disconnect the Game Server and connect to the Master Server. This wraps up multiple internal actions.

Wait for the callback OnConnectedToMaster, before you use lobbies and join or create rooms.

OnLeftRoom also gets called, when the application quits. It makes sense to check static ConnectionHandler.AppQuits before loading scenes in OnLeftRoom().

Implements IMatchmakingCallbacks.

◆ OnLobbyStatisticsUpdate()

void OnLobbyStatisticsUpdate ( List< TypedLobbyInfo lobbyStatistics)

Called when the Master Server sent an update for the Lobby Statistics.

This callback has two preconditions: EnableLobbyStatistics must be set to true, before this client connects. And the client has to be connected to the Master Server, which is providing the info about lobbies.

Implements ILobbyCallbacks.

◆ OnMasterClientSwitched()

void OnMasterClientSwitched ( Player  newMasterClient)

Called after switching to a new MasterClient when the current one leaves.

This is not called when this client enters a room. The former MasterClient is still in the player list when this method get called.

Implements IInRoomCallbacks.

◆ OnPlayerEnteredRoom()

void OnPlayerEnteredRoom ( Player  newPlayer)

Called when a remote player entered the room. This Player is already added to the playerlist.

If your game starts with a certain number of players, this callback can be useful to check the Room.playerCount and find out if you can start.

Implements IInRoomCallbacks.

◆ OnPlayerLeftRoom()

void OnPlayerLeftRoom ( Player  otherPlayer)

Called when a remote player left the room or became inactive. Check otherPlayer.IsInactive.

If another player leaves the room or if the server detects a lost connection, this callback will be used to notify your game logic.

Depending on the room's setup, players may become inactive, which means they may return and retake their spot in the room. In such cases, the Player stays in the Room.Players dictionary.

If the player is not just inactive, it gets removed from the Room.Players dictionary, before the callback is called.

Implements IInRoomCallbacks.

◆ OnPlayerPropertiesUpdate()

void OnPlayerPropertiesUpdate ( Player  targetPlayer,
Hashtable  changedProps 
)

Called when custom player-properties are changed.

Changing properties must be done by Player.SetCustomProperties, which causes this callback locally, too.

Parameters
targetPlayerContains Player that changed.
changedPropsContains the properties that changed.

Implements IInRoomCallbacks.

◆ OnRegionListReceived()

void OnRegionListReceived ( RegionHandler  regionHandler)

Called when the Name Server provided a list of regions for your title.

This callback is called as soon as the list is available. No pings were sent for Best Region selection yet. If the client is set to connect to the Best Region (lowest ping), one or more regions get pinged. Not all regions are pinged. As soon as the results are final, the client will connect to the best region, so you can check the ping results when connected to the Master Server.

Check the RegionHandler class description, to make use of the provided values.

Parameters
regionHandlerThe currently used RegionHandler.

Implements IConnectionCallbacks.

◆ OnRoomListUpdate()

void OnRoomListUpdate ( List< RoomInfo roomList)

Called for any update of the room-listing while in a lobby (InLobby) on the Master Server.

Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking.

The list is sorted using two criteria: open or closed, full or not. So the list is composed of three groups, in this order:

first group: open and not full (joinable).
second group: full but not closed (not joinable).
third group: closed (not joinable, could be full or not).

In each group, entries do not have any particular order (random).

The list of rooms (or rooms' updates) is also limited in number, see Lobby Limits.

Implements ILobbyCallbacks.

◆ OnRoomPropertiesUpdate()

void OnRoomPropertiesUpdate ( Hashtable  propertiesThatChanged)

Called when room properties changed. The propertiesThatChanged contain only the keys that changed.

In most cases, this method gets called when some player changes the Room Properties. However, there are also "Well Known Properties" (which use byte keys) and this callback may include them. Especially when entering a room, the server will also send the required Well Known Properties and they are not filtered out for the OnRoomPropertiesUpdate callback.

You can safely ignore the byte typed keys in propertiesThatChanged.

Changing properties is usually done by Room.SetCustomProperties.

Parameters
propertiesThatChanged

Implements IInRoomCallbacks.

Member Data Documentation

◆ LogTrafficStats

bool LogTrafficStats = true

Toggle to enable or disable traffic statistics logging.

Property Documentation

◆ Client

LoadBalancingClient Client
getset

Photon client to log information and statistics from.