アプリケーションとロビーの統計
Photon Serverはアプリケーションとロビー統計をクライアントにブロードキャストできます。
このデータを利用して、複雑なカスタムマッチメイキングシステムの実装が可能です。
またゲーム内でこれらの統計情報を表示して、ゲームの人気をアピールすることもできます。
アプリケーションの統計
Photonマスターサーバに接続すると、Photonクライアントはアプリケーションの統計を受信します。
クライアントがロビーに参加しているかどうかに関わらず、クライアントはAppStatsイベントを受信します。
アプリケーションの統計はリージョンごとです。
アプリケーションの統計には以下が含まれます:
稼働しているルーム数:
C#
loadBalancingClient.RoomsCount
C++
Client::getCountGamesRunning()
ルームに参加していないプレイヤー数:
C#
loadBalancingClient.PlayersOnMasterCount
C++
Client::getCountPlayersOnline() - Client::getCountPlayersIngame()
ルーム内のプレイヤー数::
C#
loadBalancingClient.PlayersInRoomsCount
C++
Client::getCountPlayersIngame()
接続しているプレイヤーの合計数::
C#
loadBalancingClient.PlayersOnMasterCount + loadBalancingClient.PlayersInRoomsCount
C++
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) {}