アプリケーションとロビーの統計
Photon Serverはアプリケーションとロビー統計をクライアントにブロードキャストできます。
このデータを利用して、複雑なカスタムマッチメイキングシステムの実装が可能です。
またゲーム内でこれらの統計情報を表示して、ゲームの人気をアピールすることもできます。
アプリケーションの統計
Photonマスターサーバに接続すると、Photonクライアントはアプリケーションの統計を受信します。
クライアントがロビーに参加しているかどうかに関わらず、クライアントはAppStatsイベントを受信します。
アプリケーションの統計はリージョンごとです。
アプリケーションの統計には以下が含まれます:
稼働しているルーム数:
C#
loadBalancingClient.RoomsCountC++
Client::getCountGamesRunning()ルームに参加していないプレイヤー数:
C#
loadBalancingClient.PlayersOnMasterCountC++
Client::getCountPlayersOnline() - Client::getCountPlayersIngame()ルーム内のプレイヤー数::
C#
loadBalancingClient.PlayersInRoomsCountC++
Client::getCountPlayersIngame()接続しているプレイヤーの合計数::
C#
loadBalancingClient.PlayersOnMasterCount + loadBalancingClient.PlayersInRoomsCountC++
Client::getCountPlayersOnline()AppStatsイベントは、クライアントに5秒ごとに送信されます。
ネイティブ C++ SDKでは
Listenerクラスが常にコールバックを提供するため、統計が最新の状態にアップデートされていることが分かります:C++
virtual void onAppStatsUpdate(void) {}
ロビーの統計
ロビーの統計は、複数のロビーを使用するゲームでアクティビティを表示したい場合に役立ちます。
ロビーの統計はリージョンごとです。
ロビーの型(名前と型)ごとに以下の情報を取得できます:
- 稼動しているルーム数
- ロビーに参加しているプレイヤーの合計数、またはロビーのルームに参加しているプレイヤーの合計数
ロビーの統計を自動的に取得
ロビー統計イベントは、クライアントがマスターサーバーに認証されるとすぐに送信されます。
その後、これらのイベントは毎分送信されます。
ロビー統計イベントは、デフォルトでは有効化されていません。
C#
接続前にロビーの統計を有効化するには::
C#
loadBalancingClient.EnableLobbyStatistics = true;統計は
ILobbyCallbacks.OnLobbyStatisticsUpdateコールバックから取得してください。このコールバックはUIのアップデートにも活用できます。C++
ロビーの統計を有効化するには、 クラス
ClientのコンストラクターへのパラメータautoLobbyStatsにtrueを渡す必要があります:C++
Client(LoadBalancing::Listener& listener, const Common::JString& applicationID, const Common::JString& appVersion, nByte connectionProtocol=Photon::ConnectionProtocol::DEFAULT, bool autoLobbyStats=false, nByte regionSelectionMode=RegionSelectionMode::DEFAULT);Listenerクラスは、ロビー統計イベントを受信すると常に以下のオプションのコールバックを提供します(有効化されている場合)::C++
virtual void onLobbyStatsUpdate(const Common::JVector<LobbyStatsResponse>& lobbyStats) {}
明示的にロビーの統計を取得
ルームに参加していない場合、オペレーションコールを使用して明示的にロビーの統計をリクエストできます:
C#
この機能は、現在実装されていません。
C++
C++
Client::opLobbyStats()Listenerクラスは、レスポンスを受信すると以下のオプションのコールバックを提供します:C++
virtual void onLobbyStatsResponse(const Common::JVector<LobbyStatsResponse>& lobbyStats) {}