Photon Unity Networking 2  v2.1
English | 日本語 | 한국
Classes | Public Member Functions | Public Attributes | Properties | Events | List of all members
LoadBalancingClient Class Reference

このクラスは、LoadBalancingPeerを使用してPhoton LoadBalancingワークフローを実装します。 状態を保持し、マスターサーバーとゲームサーバー間の移行を自動的に実行します。 More...

Inherits IPhotonPeerListener.

Public Member Functions

 LoadBalancingClient (ConnectionProtocol protocol=ConnectionProtocol.Udp)
 UDPプロトコルまたは指定されたプロトコルでLoadBalancingClientを作成します。 More...
 
 LoadBalancingClient (string masterAddress, string appId, string gameVersion, ConnectionProtocol protocol=ConnectionProtocol.Udp)
 接続する前に必要なさまざまな値を設定して、LoadBalancingClientを作成します。 More...
 
virtual bool ConnectUsingSettings (AppSettings appSettings)
 
bool Connect ()
 
virtual bool ConnectToMasterServer ()
 MasterServerAddressおよびAppIdプロパティを使用して、マスターサーバーに接続するための「プロセス」を開始します。 More...
 
bool ConnectToNameServer ()
 Photon CloudのNameServerに接続します。ここで、リージョンとサーバーリストを取得できます。 More...
 
bool ConnectToRegionMaster (string region)
 ネームサーバーを使用してIPを検索し、特定のリージョンのマスターサーバーに接続します。 More...
 
bool ReconnectToMaster ()
 切断後にマスターサーバーに再接続するために使用できます。 More...
 
bool ReconnectAndRejoin ()
 ゲームサーバーに直接再接続してルームに再び参加することにより、ルームにすばやく戻るために使用できます。 More...
 
void Disconnect (DisconnectCause cause=DisconnectCause.DisconnectByClientLogic)
 このクライアントをサーバーから切断し、接続が正常に閉じられた場合にthis.Stateを設定します。 More...
 
void SimulateConnectionLoss (bool simulateTimeout)
 クライアントのタイムアウトで終了する接続の損失をテストするのに役立ちます。 これにより、LoadBalancingPeer.NetworkSimulationSettingsが変更されます。 コメントを読んでください。 More...
 
void Service ()
 このメソッドは、使用可能なすべての着信コマンドをディスパッチし、このクライアントの発信コマンドを送信します。 それを行うためにDispatchIncomingCommandsとSendOutgoingCommandsを使用します。 More...
 
bool OpFindFriends (string[] friendsToFind, FindFriendsOptions options=null)
 友達のリストのルームとオンラインステータスをリクエストします。すべてのクライアントは、接続する前に一意のUserIdを設定する必要があります。結果はthis.FriendListにあります。 More...
 
bool OpJoinLobby (TypedLobby lobby)
 マスターサーバーに既に接続されている場合、これは指定されたロビーに参加します。この要求は、OnOperationResponse()呼び出しとコールバックOnJoinedLobby()をトリガーします。 More...
 
bool OpLeaveLobby ()
 ロビーに参加する反対。別のロビーに参加するために明示的にロビーを離れる必要はありません(クライアントはいつでも最大1人まで参加できます)。 More...
 
bool OpJoinRandomRoom (OpJoinRandomRoomParams opJoinRandomRoomParams=null)
 フィルターに一致するランダムルームに参加します。 コールバック:OnJoinedRoomまたはOnJoinRandomFailed。 More...
 
bool OpJoinRandomOrCreateRoom (OpJoinRandomRoomParams opJoinRandomRoomParams, EnterRoomParams createRoomParams)
 指定されたフィルターに一致するルームへの参加を試行し、見つからない場合はルームを作成します。 More...
 
bool OpCreateRoom (EnterRoomParams enterRoomParams)
 新しいルームを作成します。コールバック:OnCreatedRoomおよびOnJoinedRoomまたはOnCreateRoomFailed。 More...
 
bool OpJoinOrCreateRoom (EnterRoomParams enterRoomParams)
 名前で特定のルームに参加し、オンデマンドで作成します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。 More...
 
bool OpJoinRoom (EnterRoomParams enterRoomParams)
 名前でルームに参加します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。 More...
 
bool OpRejoinRoom (string roomName)
 roomNameによってルームに再参加します(内部でユーザーIDを使用して戻ります)。 コールバック:OnJoinedRoomまたはOnJoinRoomFailed。 More...
 
bool OpLeaveRoom (bool becomeInactive, bool sendAuthCookie=false)
 オプションで、ユーザーが非アクティブになっていることをサーバーに通知して、現在のルームから退出します。コールバック:OnLeftRoom。 More...
 
bool OpGetGameList (TypedLobby typedLobby, string sqlLobbyFilter)
 SQLのようなwhere句に一致するゲームのリストを取得します。 More...
 
bool OpSetCustomPropertiesOfActor (int actorNr, Hashtable propertiesToSet, Hashtable expectedProperties=null, WebFlags webFlags=null)
 プレイヤーのカスタムプロパティを更新および同期します。オプションで、expectedPropertiesを条件として提供できます。 More...
 
bool OpSetCustomPropertiesOfRoom (Hashtable propertiesToSet, Hashtable expectedProperties=null, WebFlags webFlags=null)
 このルームのカスタムプロパティを更新および同期します。任意で、expectedPropertiesを条件として提供できます。 More...
 
virtual bool OpRaiseEvent (byte eventCode, object customEventContent, RaiseEventOptions raiseEventOptions, SendOptions sendOptions)
 同じルームの他のプレイヤーに、カスタムコード/タイプとコンテンツを含むイベントを送信します。 More...
 
virtual bool OpChangeGroups (byte[] groupsToRemove, byte[] groupsToAdd)
 このクライアントのインタレストグループを処理する操作(ルームのイベント用)。 More...
 
void ChangeLocalID (int newID)
 LocalPlayerのIDを設定するために内部的に使用されます(-1から実際のルーム内IDまで)。 More...
 
virtual void DebugReturn (DebugLevel level, string message)
 低レベルAPI(およびこのクライアント)のデバッグ出力。 More...
 
virtual void OnOperationResponse (OperationResponse operationResponse)
 サーバーが提供するOperationResponsesを使用して、内部状態を進め、必要に応じてopsを呼び出します。 More...
 
virtual void OnStatusChanged (StatusCode statusCode)
 接続のstatusCodeを使用して、内部状態を進め、必要に応じて操作を呼び出します。 More...
 
virtual void OnEvent (EventData photonEvent)
 サーバーによって提供されるphotonEventを使用して、内部状態を進め、必要に応じてopsを呼び出します。 More...
 
virtual void OnMessage (object message)
 Photon 4では、「生のメッセージ」はインターフェースで独自のコールバックメソッドを取得します。 まだ使用されていません。 More...
 
bool OpWebRpc (string uriPath, object parameters, bool sendAuthCookie=false)
 この操作により、Photonは指定されたパラメーター(Jsonに変換)を使用してパス/名前でカスタムWebサービスを呼び出します。 More...
 
void AddCallbackTarget (object target)
 実装されたコールバックインターフェイスのコールバックのオブジェクトを登録します。 More...
 
void RemoveCallbackTarget (object target)
 実装されたコールバックインターフェイスのコールバックからオブジェクトを登録解除します。 More...
 

Public Attributes

AuthModeOption AuthMode = AuthModeOption.Auth
 新しい認証ワークフローを有効にします。 More...
 
EncryptionMode EncryptionMode = EncryptionMode.PayloadEncryption
 通信を暗号化する方法を定義します。 More...
 
ConnectionProtocol ExpectedProtocol = ConnectionProtocol.Udp
 MasterおよびGameServerで使用されるプロトコル。 More...
 
string NameServerHost = "ns.exitgames.com"
 Photon Cloudのネームサーバーホスト名。ポートおよびプレフィックスなし。 More...
 
string NameServerHttp = "http://ns.exitgames.com:80/photon/n"
 Photon CloudへのHTTP接続用のネームサーバー。 プレフィックスとポートが含まれます。 More...
 
ConnectionCallbacksContainer ConnectionCallbackTargets
 コールバックのグループのターゲットオブジェクトをまとめるので、それらを便利に呼び出すことができます。 More...
 
MatchMakingCallbacksContainer MatchMakingCallbackTargets
 コールバックのグループのターゲットオブジェクトをまとめるので、それらを便利に呼び出すことができます。 More...
 
bool EnableLobbyStatistics
 有効にすると、クライアントはマスターサーバーから利用可能なロビーのリストを取得します。 More...
 
RegionHandler RegionHandler
 このクライアントが使用できる有効なリージョンのリストが含まれています。 クライアントがOpGetRegionsへの応答を取得しない限り、Null。 More...
 
string SummaryToCache
 ベストリージョンのpingが行われたときに設定します。 More...
 

Properties

LoadBalancingPeer LoadBalancingPeer [get]
 クライアントは、LoadBalancingPeerをAPIとして使用してサーバーと通信します。 これは使いやすさのために公開されています。OpRaiseEventのような一部のメソッドは接続状態に関係なく、オーバーライドする必要はありません。 More...
 
SerializationProtocol SerializationProtocol [get, set]
 このクライアントが使用するバイナリプロトコルバージョンを取得または設定します More...
 
string AppVersion [get, set]
 クライアントのバージョン。 新しいバージョンでは、プレイヤーを古いクライアントバージョンから分離するための新しい「仮想アプリ」も作成されます。 More...
 
string AppId [get, set]
 Photon Cloudから割り当てられたAppID。 自分自身をホストしている場合、これは「通常の」Photon Serverアプリケーション名(ほとんどの場合「LoadBalancing」)です。 More...
 
AuthenticationValues AuthValues [get, set]
 接続直後にPhotonサーバーに送信されるユーザー認証値。 More...
 
bool IsUsingNameServer [get, set]
 このクライアントがNameServerを使用してマスターサーバーアドレスを取得する場合はtrue。 More...
 
string NameServerAddress [get]
 Photon Cloudのネームサーバーアドレス(現在のプロトコルに基づく)。 デフォルト値を使用でき、通常はこの値を設定する必要はありません。 More...
 
bool UseAlternativeUdpPorts [get, set]
 パブリッククラウド(27000〜27003)でUDP接続に代替ポートを使用します。 More...
 
string CurrentServerAddress [get]
 現在使用されているサーバーアドレス(存在する場合)。サーバーのタイプは、サーバープロパティによって定義されます。 More...
 
string MasterServerAddress [get, set]
 マスターサーバーのアドレス。PhotonCloudで、ConnectToRegionMaster()を呼び出してマスターサーバーを見つけます。 More...
 
string GameServerAddress [get, set]
 特定のルームのゲームサーバーのアドレス。マスターによって割り当てられた一時的に使用中。 More...
 
ServerConnection Server [get]
 このクライアントが現在接続または接続しているサーバー。 More...
 
ClientState State [get, set]
 このクライアントの現在の状態。注意:いくつかの状態は、他の状態につながる「遷移」です。 More...
 
bool IsConnected [get]
 このクライアントが現在接続されているか、何らかのサーバーに接続されているかどうかを返します。 More...
 
bool IsConnectedAndReady [get]
 接続が操作を送信する準備ができている場合にのみ当てはまるIsConnectedの洗練されたバージョン。 More...
 
DisconnectCause DisconnectedCause [get, protected set]
 クライアントの切断のさまざまな原因を要約(集約)します。 More...
 
bool InLobby [get]
 クライアントがロビーにいる場合の内部値。 More...
 
TypedLobby CurrentLobby [get, set]
 このクライアントが現在使用しているロビー。 ロビーへの参加時またはルームの作成時に定義されます More...
 
Player LocalPlayer [get, set]
 ローカルプレーヤーは決してnullではありませんが、クライアントもルームにいない限り無効です。IDはルームの外では-1になります。 More...
 
string NickName [get, set]
 プレイヤーのニックネーム(他のユーザーと同期)。client.LocalPlayer.NickNameと同じです。 More...
 
string UserId [get, set]
 このユーザーのID。接続時にOpAuthenticateで送信されます。設定されていない場合、接続中にPlayerNameが適用されます。 More...
 
Room CurrentRoom [get]
 このクライアントが接続している現在のルーム(空いている場合はnull)。 More...
 
bool InRoom [get]
 ルームにいる間はtrueです(this.state == ClientState.Joined)。 More...
 
int PlayersOnMasterCount [get, set]
 マスターサーバーで利用可能な統計値:マスターのプレーヤー(ゲームを探しています)。 More...
 
int PlayersInRoomsCount [get, set]
 マスターサーバーで利用可能な統計値:ルームのプレイヤー(プレイ)。 More...
 
int RoomsCount [get, set]
 マスターサーバーで使用可能な統計値:現在作成されているルーム。 More...
 
bool IsFetchingFriendList [get]
 クライアントが現在フレンドリストを取得しているかどうかを知るための内部フラグ。 More...
 
string CloudRegion [get]
 このクライアントが接続するクラウドリージョン。ConnectToRegionMaster()によって設定されます。NameServerを使用しない場合は設定しないでください! More...
 
string CurrentCluster [get]
 ネームサーバーによって提供されるクラスター名。 More...
 

Events

Action< ClientState, ClientStateStateChanged
 このクライアントのClientStateが設定されたときに呼び出されるメソッドを登録します。 More...
 
Action< EventData > EventReceived
 イベントがディスパッチされたときに呼び出されるメソッドを登録します。 LoadBalancingClientが最初に内部イベントを処理した後に呼び出されます。 More...
 
Action< OperationResponse > OpResponseReceived
 操作の応答を受信したときに呼び出されるメソッドを登録します。 More...
 

Detailed Description

このクラスは、LoadBalancingPeerを使用してPhoton LoadBalancingワークフローを実装します。 状態を保持し、マスターサーバーとゲームサーバー間の移行を自動的に実行します。

このクラス(およびPlayerクラス)は、独自のゲームロジックを実装するために拡張する必要があります。 CreatePlayerをプレイヤーの「ファクトリ」メソッドとしてオーバーライドし、独自のプレイヤーインスタンスを返すことができます。 このクラスの状態は、クライアントがロビー(または単にマスター)にいるときと、 実際のゲームプレイが行われるゲーム内にいるときを把握するために不可欠です。 拡張ノート: このクラスの拡張は、状態が変化したときに呼び出されるため、IPhotonPeerListenerのメソッドを オーバーライドする必要があります。 最初にbase.methodを呼び出してから、 反応する操作または状態を選択し、スイッチケースに入れます。 このAPIを使用できる各プラットフォームにデモを提供するので、それらに注意してください。

Constructor & Destructor Documentation

LoadBalancingClient ( ConnectionProtocol  protocol = ConnectionProtocol.Udp)

UDPプロトコルまたは指定されたプロトコルでLoadBalancingClientを作成します。

Parameters
protocol接続に使用するネットワークプロトコルを指定します。
LoadBalancingClient ( string  masterAddress,
string  appId,
string  gameVersion,
ConnectionProtocol  protocol = ConnectionProtocol.Udp 
)

接続する前に必要なさまざまな値を設定して、LoadBalancingClientを作成します。

Parameters
masterAddress接続するマスターサーバーのアドレス。Connectで使用されます。
appIdこのタイトルのAppId。Photon Cloudに必要です。ダッシュボードにあります。
gameVersionこのクライアント/ビルドのバージョン。Photon Cloudでは、プレイヤーはAppId、GameVersion、およびRegionで区切られています。
protocol接続に使用するネットワークプロトコルを指定します。

Member Function Documentation

void AddCallbackTarget ( object  target)

実装されたコールバックインターフェイスのコールバックのオブジェクトを登録します。

コールバックターゲットの追加と削除は、実行中のコールバックを混乱させないためにキューに入れられます。 内部的には、これは、LoadBalancingClientが次のコールバックを呼び出す前に追加/削除が行われることを意味します。 この詳細は、ゲームのワークフローに影響を与えません。

対象となるコールバックインターフェイスは、IConnectionCallbacks、IMatchmakingCallbacks、 ILobbyCallbacks、IInRoomCallbacks、IOnEventCallback、およびIWebRpcCallbackです。

参照: このクライアントからコールバックを取得するために登録するオブジェクト。

void ChangeLocalID ( int  newID)

LocalPlayerのIDを設定するために内部的に使用されます(-1から実際のルーム内IDまで)。

Parameters
newIDルームへの参加時に割り当てられる新しいアクターID(a.k.a actorNr)。
virtual bool ConnectToMasterServer ( )
virtual

MasterServerAddressおよびAppIdプロパティを使用して、マスターサーバーに接続するための「プロセス」を開始します。

Photon Cloudに接続するには、ConnectUsingSettings()またはConnectToRegionMaster()を使用します。

接続プロセスには、実際の接続、暗号化の確立、(アプリと任意でユーザーの)認証、 およびマスターサーバーへの接続といういくつかの手順が含まれます。

ユーザーは匿名で接続するか、「カスタム認証」を使用して各プレイヤーのログインを確認できます。 Photonのカスタム認証は、外部サービスとコミュニティを使用してユーザーを検証します。クライアントはユーザーの情報を提供しますが、 サービスのセットアップはPhoton Cloudダッシュボードで行われます。 パラメーターauthValuesはthis.AuthValuesを設定し、接続プロセスで使用します。

Photon Cloudへの接続は、次の理由で失敗する場合があります:

  • ネットワークの問題 (OnStatusChanged() StatusCode.ExceptionOnConnect)
  • 利用できないリージョン (ReturnCode == ErrorCode.InvalidRegionのOpAuthenticateのOnOperationResponse())
  • サブスクリプションCCUの制限に達しました(OpAuthenticate with ReturnCode == ErrorCode.MaxCcuReachedのOnOperationResponse())
bool ConnectToNameServer ( )

Photon CloudのNameServerに接続します。ここで、リージョンとサーバーリストを取得できます。

OpGetRegions

Returns
ワークフローがすぐに開始または失敗した場合。
bool ConnectToRegionMaster ( string  region)

ネームサーバーを使用してIPを検索し、特定のリージョンのマスターサーバーに接続します。

リージョンがヌルまたは空の場合、接続は行われません。 指定されたリージョン(コード)が利用できない場合、接続プロセスはネームサーバーで失敗します。 このメソッドは、定義されたリージョンにのみ接続します。「ベストリージョン」のpingは実行されません。

リージョン文字列に「/」が含まれていない場合、これは特定のクラスターが要求されていないことを意味します。 「シャーディング」に対応するために、この場合、リージョンは「/*」の接尾辞を取得して、ランダムなクラスターを選択します。

Returns
操作を送信できた場合。 falseの場合、操作は送信されませんでした。
virtual void DebugReturn ( DebugLevel  level,
string  message 
)
virtual

低レベルAPI(およびこのクライアント)のデバッグ出力。

このメソッドは、LoadBalancingClientの状態を維持するものではありません。オーバーライドでbase.DebugReturnを呼び出すかどうかは任意です。

void Disconnect ( DisconnectCause  cause = DisconnectCause.DisconnectByClientLogic)

このクライアントをサーバーから切断し、接続が正常に閉じられた場合にthis.Stateを設定します。

virtual void OnEvent ( EventData  photonEvent)
virtual

サーバーによって提供されるphotonEventを使用して、内部状態を進め、必要に応じてopsを呼び出します。

このメソッドは、LoadBalancingClientの内部状態を更新するために不可欠です。 オーバーライドするメソッドはbase.OnEventを呼び出す必要があります。

virtual void OnMessage ( object  message)
virtual

Photon 4では、「生のメッセージ」はインターフェースで独自のコールバックメソッドを取得します。 まだ使用されていません。

virtual void OnOperationResponse ( OperationResponse  operationResponse)
virtual

サーバーが提供するOperationResponsesを使用して、内部状態を進め、必要に応じてopsを呼び出します。

このメソッドが完了すると、OnOpResponseAction(存在する場合)が呼び出されます。 これにより、このクラスをオーバーライドすることなく、操作の応答を取得できます。

より複雑なゲーム/アプリロジックを実装するには、LoadBalancingClientを継承する独自のクラスを実装する必要があります。 独自の操作応答を簡単に使用するには、このメソッドをオーバーライドします。

このメソッドはLoadBalancingClientの内部状態を更新するために不可欠なので、 オーバーライドするメソッドはbase.OnOperationResponse()を呼び出す必要があります。

Parameters
operationResponseこのピアによって呼び出された操作に対するサーバーの応答が含まれます。
virtual void OnStatusChanged ( StatusCode  statusCode)
virtual

接続のstatusCodeを使用して、内部状態を進め、必要に応じて操作を呼び出します。

このメソッドは、LoadBalancingClientの内部状態を更新するために不可欠です。 オーバーライドするメソッドはbase.OnStatusChangedを呼び出す必要があります。

virtual bool OpChangeGroups ( byte[]  groupsToRemove,
byte[]  groupsToAdd 
)
virtual

このクライアントのインタレストグループを処理する操作(ルームのイベント用)。

nullとbyte [0]を渡すことの違いに注意してください: nullの場合はグループを追加/削除しません。 byte [0]の場合はすべての(既存の)グループを追加/削除します。 最初に、グループの削除が実行されます。この方法では、すべてのグループを離れ、提供されたグループのみに参加できます。

変更はすぐにアクティブになるのではなく、サーバーがこの操作を実行するとアクティブになります(約RTT/2)。

Parameters
groupsToRemoveインタレストから削除するグループ。Nullは削除しません。byte [0]はすべてを削除します。
groupsToAddインタレストに追加するグループ。Nullは追加しません。byte [0]は現在のすべてを追加します。
Returns
送信のために操作をキューに登録できる場合。呼び出し時に送信されます:ServiceまたはSendOutgoingCommands。
bool OpCreateRoom ( EnterRoomParams  enterRoomParams)

新しいルームを作成します。コールバック:OnCreatedRoomおよびOnJoinedRoomまたはOnCreateRoomFailed。

成功すると、クライアントは指定されたルームに入り、OnCreatedRoomとOnJoinedRoomの両方をコールバックします。 すべてのエラーの場合、OnCreateRoomFailedが呼び出されます。

ルーム名がすでに使用されている場合、またはRoomOptionsが互いに競合している場合、ルームの作成は失敗します。 さまざまなルーム作成オプションについては、EnterRoomParamsリファレンスを確認してください。

このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。

ルームにいるとき、このクライアントの状態はClientState.Joinedになります。

ルームに入ると、このクライアントのプレーヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときにも消去されないことに注意してください。

expectedUsersの配列を定義して、これらのユーザーのルームのプレイヤースロットをブロックできます。 Photonの対応する機能は「スロット予約」と呼ばれ、ドキュメントページで見つけることができます。

Parameters
enterRoomParams作成するルームのプロパティの定義。
Returns
操作を現在送信できる場合(マスターサーバーへの接続が必要)。
bool OpFindFriends ( string[]  friendsToFind,
FindFriendsOptions  options = null 
)

友達のリストのルームとオンラインステータスをリクエストします。すべてのクライアントは、接続する前に一意のUserIdを設定する必要があります。結果はthis.FriendListにあります。

Master Serverで使用され、選択されたユーザーのリストがプレイしているルームを見つけます。 結果はLoadBalancingClient.FriendListに保存されます。これは、最初のサーバー応答の前はnullです。

ユーザーは、LoadBalancingClientインスタンスにUserIdを設定することにより、自分自身を識別します。 これにより、接続中にOpMasterのIDが(マスターサーバーおよびゲームサーバーに)送信されます。 注:フレンドリストを使用している場合、プレイヤーの名前を変更しても意味がありません。

ユーザー名のリストは、他のソースから取得する必要があります(Photonでは提供されません)。

内部:
サーバーの応答には、情報の2つの配列が含まれます(各インデックスは、リクエストの友達をマッチします)。
オンライン状態のParameterCode.FindFriendsResponseOnlineList = bool[]
ルーム名のParameterCode.FindFriendsResponseRoomIdList = string[](ルームにない場合は空の文字列)

これらのオプションを使用して、ルームに戻るために一致させる必要がある状態を定義できます。

Parameters
friendsToFind友達の名前の配列(一意であることを確認してください)。
optionsFindFriends操作の結果に影響するオプション。
Returns
操作を送信できる場合(接続が必要)。
bool OpGetGameList ( TypedLobby  typedLobby,
string  sqlLobbyFilter 
)

SQLのようなwhere句に一致するゲームのリストを取得します。

操作は、SqlLobbyタイプのロビーでのみ使用できます。 これは、OnOperationResponse()呼び出しをトリガーする非同期要求です。

https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby::sql_lobby_type

Parameters
typedLobby照会するロビー。SqlLobby型である必要があります。
sqlLobbyFilterSQLクエリステートメント。
Returns
操作を送信できる場合(接続する必要があります)。
bool OpJoinLobby ( TypedLobby  lobby)

マスターサーバーに既に接続されている場合、これは指定されたロビーに参加します。この要求は、OnOperationResponse()呼び出しとコールバックOnJoinedLobby()をトリガーします。

Parameters
lobby参加するロビー。デフォルトのロビーにはnullを使用します。
Returns
操作を送信できた場合。クライアントがIsConnectedAndReadyでない場合、またはマスターサーバーに接続されていない場合はfalse。
bool OpJoinOrCreateRoom ( EnterRoomParams  enterRoomParams)

名前で特定のルームに参加し、オンデマンドで作成します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。

プレイヤーが会うためにルーム名を作るときに便利です: 関係するすべてのクライアントが同じメソッドを呼び出し、最初のクライアントがルームを作成します。

成功すると、クライアントは指定されたルームに入ります。 ルームを作成するクライアントは、OnCreatedRoomとOnJoinedRoomの両方をコールバックします。 既存のルームに参加するクライアントは、OnJoinedRoomのみをコールバックします。 すべてのエラーの場合、OnJoinRoomFailedが呼び出されます。

ルームがいっぱいであるか、閉じている場合、またはユーザーが既にルームに存在している場合(userIdでチェック)、 ルームへの参加は失敗します。

ルームに戻るには、OpRejoinRoomを使用します。

このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。

このクライアントの状態は、操作が呼び出されるとすぐにClientState.Joiningに設定されます。 バックグラウンドで、クライアントはサーバーを切り替え、さまざまな関連操作を呼び出します。

ルーム内にいるとき、このクライアントの状態はClientState.Joinedになります。

roomOptionsでルームのプロパティを設定すると、ルームが既に存在する場合は無視されます。 これにより、プレイヤーの参加が遅れてルームのプロパティが変更されるのを防ぎます。

ルームに入ると、このクライアントのプレイヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときに消去されないことに注意してください。

expectedUsersの配列を定義して、これらのユーザーのルームのプレイヤースロットをブロックできます。 Photonの対応する機能は「スロット予約」と呼ばれ、ドキュメントページで見つけることができます。

Parameters
enterRoomParams作成または参加するルームのプロパティの定義。
Returns
操作を現在送信できる場合(マスターサーバーへの接続が必要)。
bool OpJoinRandomOrCreateRoom ( OpJoinRandomRoomParams  opJoinRandomRoomParams,
EnterRoomParams  createRoomParams 
)

指定されたフィルターに一致するルームへの参加を試行し、見つからない場合はルームを作成します。

この操作は、フィッティングルームが存在しない場合、フィルターベースのランダムマッチメイキングと 新しいルームを作成する任意の組み合わせです。 その利点は、ルームの作成が同じ操作で行われ、ルームが次のクライアントによって見つけられ、 同様のルームを探すことができることです。

ルームへの参加と作成には、個別のパラメーターがあります。

このメソッドは、マスターサーバーに接続しているときにのみ呼び出すことができます。 このクライアントの状態はすぐにClientState.Joiningに設定されます。

IMatchmakingCallbacks.OnJoinedRoomまたはIMatchmakingCallbacks.OnCreatedRoomが呼び出されます。

マッチメイキングの詳細: https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby

戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。

Returns
操作が送信される場合(マスターサーバーへの接続が必要)。
bool OpJoinRandomRoom ( OpJoinRandomRoomParams  opJoinRandomRoomParams = null)

フィルターに一致するランダムルームに参加します。 コールバック:OnJoinedRoomまたはOnJoinRandomFailed。

ランダムなマッチメイキングに使用されます。opJoinRandomRoomParamsで定義された特定のプロパティを持つ任意のルームまたは任意のルームに参加できます。

expectedCustomRoomPropertiesおよびexpectedMaxPlayersを、ルームを受け入れるためのフィルターとして使用できます。 expectedCustomRoomPropertiesを設定する場合、ルームはCustom Propertiesで設定されたものとまったく同じキー値を持つ必要があります。 ルームを作成するときに、マッチメイキングに使用できるカスタムルームプロパティを定義する必要があります。 参照: OpCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby lobby)

適切なルームがない、または利用可能なルームがない場合(すべて満室、閉まっている、または非表示)、この操作は失敗します。 見つかったルームに実際に参加するときにも失敗する場合があります。ルームはいつでも閉まり、満室になるか、空になることがあります。

このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。

このクライアントの状態は、操作が呼び出されるとすぐにClientState.Joiningに設定されます。 バックグラウンドで、クライアントはサーバーを切り替え、さまざまな関連操作を呼び出します。

ルーム内にいるとき、このクライアントの状態はClientState.Joinedになります。

ルームに入ると、このクライアントのプレイヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときに消去されないことに注意してください。

マッチメイキングに関する詳細: https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby

expectedUsersの配列を定義して、これらのユーザーのルームのプレイヤースロットをブロックできます。 Photonの対応する機能は「スロット予約」と呼ばれます。ドキュメントページをご確認ください。

Parameters
opJoinRandomRoomParamsランダムなマッチメイキングでルームをフィルタリングするプロパティの任意の定義。
Returns
操作を現在送信できる場合(マスターサーバーへの接続が必要)。
bool OpJoinRoom ( EnterRoomParams  enterRoomParams)

名前でルームに参加します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。

ロビーを使用するとき、またはプレイヤーが友達をフォローするとき、または互いに招待するときに便利です。

成功すると、クライアントは指定されたルームに入り、OnJoinedRoom経由でコールバックします。 すべてのエラーの場合、OnJoinRoomFailedが呼び出されます。

ルームがいっぱいで、閉じていて、存在していない場合、またはユーザーが 既にルームに存在している場合(userIdでチェック)、ルームへの参加は失敗します。

ルームに戻るには、OpRejoinRoomを使用します。 プレイヤーがお互いを招待し、誰が最初に応答するか不明な場合は、代わりにOpJoinOrCreateRoomを使用してください。

このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。

ルームの名前は一意である必要があります(リージョン、appid、gameversionごと)。 タイトルにグローバルマッチメイキングや招待状(外部ソリューションなど)を使用する場合は、 ルームに参加するために地域とゲームバージョンを念頭に置いてください。

このクライアントの状態は、操作が呼び出されるとすぐにClientState.Joiningに設定されます。 バックグラウンドで、クライアントはサーバーを切り替え、さまざまな関連操作を呼び出します。

ルームにいるとき、このクライアントの状態はClientState.Joinedになります。

ルームに入ると、このクライアントのプレイヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときに消去されないことに注意してください。

expectedUsersの配列を定義して、ルーム内のプレイヤースロットを友達またはパーティーメンバー用に予約できます。 Photonの対応する機能は「スロット予約」と呼ばれています。ドキュメントページをご確認ください。

Parameters
enterRoomParams参加するルームのプロパティの定義。
Returns
操作を現在送信できる場合(マスターサーバーへの接続が必要)。
bool OpLeaveLobby ( )

ロビーに参加する反対。別のロビーに参加するために明示的にロビーを離れる必要はありません(クライアントはいつでも最大1人まで参加できます)。

Returns
操作を送信できる場合(接続する必要があります)。
bool OpLeaveRoom ( bool  becomeInactive,
bool  sendAuthCookie = false 
)

オプションで、ユーザーが非アクティブになっていることをサーバーに通知して、現在のルームから退出します。コールバック:OnLeftRoom。

OpLeaveRoomは、ルームがnullの場合、サーバーがGameServerでない場合、またはクライアントが既にGSから切断している場合、実行をスキップします。 これらの場合、OpLeaveRoomはfalseを返し、状態を変更しないため、このメソッドの戻りを確認します。

場合によっては、このメソッドはOpLeave呼び出しをスキップし、Disconnect()を呼び出すだけです。 これにより、ルームだけでなくサーバーも離れます。切断も休暇をトリガーするため、ワークフローがより速くなります。

Parameters
becomeInactivetrueの場合、このプレイヤーはゲーム内で非アクティブになり、後で戻ることができます(ルームのPlayerTTLが!= 0の場合)。
sendAuthCookieWebFlag:利用可能な場合、暗号化されたオブジェクトAuthCookieをPathLeave webhookのWebサービスに安全に送信します
Returns
現在のルームから出ることができる場合(ルームにいない間は不可能)。
virtual bool OpRaiseEvent ( byte  eventCode,
object  customEventContent,
RaiseEventOptions  raiseEventOptions,
SendOptions  sendOptions 
)
virtual

同じルームの他のプレイヤーに、カスタムコード/タイプとコンテンツを含むイベントを送信します。

Parameters
eventCodeこのタイプのイベント(およびコンテンツ)を識別します。ゲームのイベントコードは0から開始できます。
customEventContentシリアル化可能なデータ型(他のOpRaiseEventオーバーロードのようなHashtableを含む)。
raiseEventOptions使用される送信オプションが含まれます。nullを渡すと、デフォルトのオプションが使用されます。
sendOptions信頼性の高い暗号化などの送信オプション
Returns
送信のために操作をキューに登録できる場合。呼び出し時に送信されます:ServiceまたはSendOutgoingCommands。
bool OpRejoinRoom ( string  roomName)

roomNameによってルームに再参加します(内部でユーザーIDを使用して戻ります)。 コールバック:OnJoinedRoomまたはOnJoinRoomFailed。

このユーザーがプレイヤーリストから削除される前に、ルームに戻るために使用されました。 内部的には、ユーザーIDがサーバーによってチェックされ、このユーザーがルーム(アクティブまたは非アクティブ)にいることを確認します。

参加とは対照的に、この操作はプレイヤーをルームに追加しません。プレイヤーリストの既存のスポットを取り戻すか、失敗します。 これにより、ゲームロジックが既存のルームの既存のアクターを再アクティブ化することを 意図していた場合に、クライアントが誤ってルームに参加しないようにします。

このメソッドは、ルームが存在しない、読み込めない(永続ルーム)、またはuserIdがこのルームのプレイヤーリストにない場合、 サーバー上で失敗します。 これにより、コールバックOnJoinRoomFailedが発生します。

ルームに再参加しても、プレイヤーのプロパティは送信されません。代わりに、クライアントはサーバーから最新のものを受け取ります。 新しいプレイヤープロパティを設定する場合は、一度再参加してください。

bool OpSetCustomPropertiesOfActor ( int  actorNr,
Hashtable  propertiesToSet,
Hashtable  expectedProperties = null,
WebFlags  webFlags = null 
)

プレイヤーのカスタムプロパティを更新および同期します。オプションで、expectedPropertiesを条件として提供できます。

カスタムプロパティは、ルームのプレイヤーに対して同期される文字列キーと 任意の値のセットです。OpJoinとOpCreateの応答にあるように、 クライアントがルームに入るときに利用できます。

カスタムプロパティは、(現在の)ルームまたはプレーヤー(そのルーム内)に関連しています。

両方のクラスは、現在のキー/値をローカルにキャッシュし、プロパティとして使用可能にします:CustomProperties。 これはそれらを読むためだけに提供されています。 それらを設定/変更するには、メソッドSetCustomPropertiesを使用する必要があります。

クライアントはいつでも(ルームにいるとき)カスタムプロパティを設定できます。 最適な使用方法を整理するのはゲームロジック次第です。

SetCustomPropertiesは、新規または変更されたキー/値でのみ呼び出す必要があります。 これにより、トラフィックとパフォーマンスが低下します。

expectedPropertiesを定義しない限り、キー/値の設定は常に許可されます。 この場合、プロパティ設定クライアントはサーバーから新しい値を受信せず、 代わりにSetCustomPropertiesのローカルキャッシュを更新します。

expectedPropertiesを定義する場合、サーバープロパティキャッシュに同じ値を持つすべての expectedPropertiesが含まれていない場合、サーバーは更新をスキップします。 この場合、プロパティ設定クライアントはサーバーから更新を取得し、 キャッシュされたキー/値を他の全員とほぼ同時に更新します。

expectedPropertiesを使用する利点は、1つのクライアントのみが1つの既知の値から 別の値にキーを正常に設定できることです。 例:カスタムプロパティownedByでアイテムを所有するストア。 最初は0です。 複数のプレーヤーがアイテムに到達すると、全員が「ownedBy」を0からactorNumberに変更しようとします。 expectedProperties {"ownedBy", 0}を条件として使用すると、最初にアイテムを獲得した プレイヤーがアイテムを取得します(他のプレイヤーは所有権の設定に失敗します)。

プロパティは、ターンベースゲームのゲーム状態(IsPersistent = trueを使用)で保存されます。

Parameters
actorNrカスタムプロパティが属するプレイヤーを定義します。プレイヤーのActorID。
propertiesToSet変更されるカスタムプロパティのハッシュテーブル。
expectedProperties新しい値を設定するための条件として使用するキー/値をいくつか提供します。クライアントはルームにいなければなりません。
webFlags設定されたプロパティをWebHookに転送するかどうかを定義します。クライアントはルームにいなければなりません。
Returns
propertiesToSetがnullまたは空であるか、文字列キーがゼロの場合はfalse。 ルームにない場合、ローカルプレイヤーとexpectedPropertiesおよびwebFlagsがnullの場合、trueを返します。 actorNrがゼロ以下の場合はfalse。 それ以外の場合、操作をサーバーに送信できる場合は返します。
bool OpSetCustomPropertiesOfRoom ( Hashtable  propertiesToSet,
Hashtable  expectedProperties = null,
WebFlags  webFlags = null 
)

このルームのカスタムプロパティを更新および同期します。任意で、expectedPropertiesを条件として提供できます。

カスタムプロパティは、ルームのプレイヤーに対して同期される文字列キーと 任意の値のセットです。OpJoinとOpCreateの応答にあるように、 クライアントがルームに入るときに利用できます。

カスタムプロパティは、(現在の)ルームまたはプレーヤー(そのルーム内)に関連しています。

両方のクラスは、現在のキー/値をローカルにキャッシュし、プロパティとして使用可能にします:CustomProperties。 これはそれらを読むためだけに提供されています。 それらを設定/変更するには、メソッドSetCustomPropertiesを使用する必要があります。

クライアントはいつでも(ルームにいるとき)カスタムプロパティを設定できます。 最適な使用方法を整理するのはゲームロジック次第です。

SetCustomPropertiesは、新規または変更されたキー/値でのみ呼び出す必要があります。 これにより、トラフィックとパフォーマンスが低下します。

expectedPropertiesを定義しない限り、キー/値の設定は常に許可されます。 この場合、プロパティ設定クライアントはサーバーから新しい値を受信せず、 代わりにSetCustomPropertiesのローカルキャッシュを更新します。

expectedPropertiesを定義する場合、サーバープロパティキャッシュに同じ値を持つすべての expectedPropertiesが含まれていない場合、サーバーは更新をスキップします。 この場合、プロパティ設定クライアントはサーバーから更新を取得し、 キャッシュされたキー/値を他の全員とほぼ同時に更新します。

expectedPropertiesを使用する利点は、1つのクライアントのみが1つの既知の値から 別の値にキーを正常に設定できることです。 例:カスタムプロパティownedByでアイテムを所有するストア。 最初は0です。 複数のプレーヤーがアイテムに到達すると、全員が「ownedBy」を0からactorNumberに変更しようとします。 expectedProperties {"ownedBy", 0}を条件として使用すると、最初にアイテムを獲得した プレイヤーがアイテムを取得します(他のプレイヤーは所有権の設定に失敗します)。

プロパティは、ターンベースゲームのゲーム状態(IsPersistent = trueを使用)で保存されます。

Parameters
propertiesToSet変更されるカスタムプロパティのハッシュテーブル。
expectedProperties新しい値を設定するための条件として使用するキー/値をいくつか提供します。
webFlags任意のPathProperties webhookのWebフラグを定義します。
Returns
propertiesToSetがnullまたは空であるか、文字列キーがゼロの場合はfalse。 それ以外の場合、操作をサーバーに送信できるかどうかを返します。
bool OpWebRpc ( string  uriPath,
object  parameters,
bool  sendAuthCookie = false 
)

この操作により、Photonは指定されたパラメーター(Jsonに変換)を使用してパス/名前でカスタムWebサービスを呼び出します。

WebRPCは、指定したサーバー上でカスタムのHTTPベースの関数を呼び出します。uriPathは、 サーバー側で設定される「ベースパス」に関連しています。 送信されたパラメーターは、C::型からJsonに変換されます。 逆に、Webサービスの応答はC::タイプに変換され、通常の操作応答として返送されます。

この機能を使用するには、サーバーをセットアップする必要があります。

Photon Cloudアプリケーションの場合、ダッシュボードにアクセスし、WebHooksをセットアップします。 BaseUrlはWebRPCにも使用されます。

Photonによる応答は、コード:OperationCode.WebRpcでOnOperationResponse()を呼び出します。 この応答を取得するには、LoadBalancingClientを派生させるか、(はるかに簡単に)適切な OnOpResponseActionを呼び出すように設定します。

OperationResponseは、WebRPCを呼び出すことができるかどうかを通知しますが、 応答のコンテンツにはWebサービスが送信した値(存在する場合)が含まれることを理解することが重要です。 Webサービスが要求を実行できなかった場合、別のエラーとメッセージが返される場合があります。 これはOperationResponse内にあります。

クラスWebRpcResponseは、WebRPC応答から最も価値のある コンテンツを抽出するヘルパークラスです。

WebRPC応答を取得するには、OnOpResponseActionを設定します。

this.OnOpResponseAction = this.OpResponseHandler;

次のようになります:

public void OpResponseHandler(OperationResponse operationResponse)
{
    if (operationResponse.OperationCode == OperationCode.WebRpc)
    {
        if (operationResponse.ReturnCode != 0)
        {
            Console.WriteLine("WebRpc failed. Response: " + operationResponse.ToStringFull());
        }
        else
        {
            WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
            Console.WriteLine(webResponse.DebugMessage);    // message from the webserver

            // do something with the response...
        }
    }
}
Parameters
uriPathPhotonのサーバー側で設定されたbaseUrlを基準とした、呼び出すURLパス。
parametersWebサービスメソッドに送信するパラメーター。
sendAuthCookie認証CookieがWebHookに送信されるかどうかを定義します(設定された場合)。
bool ReconnectAndRejoin ( )

ゲームサーバーに直接再接続してルームに再び参加することにより、ルームにすばやく戻るために使用できます。

ルームに再入室しても、プレーヤーのプロパティは送信されません。 代わりに、クライアントはサーバーから最新のものを受け取ります。 新しいプレーヤープロパティを設定する場合は、再入室してから設定してください。

Returns
条件が満たされない場合はFalse。このクライアントはReconnectAndRejoinを試行しません。
bool ReconnectToMaster ( )

切断後にマスターサーバーに再接続するために使用できます。

一般的な使用例:iOSデバイスのロックボタンを押すと、すぐに切断されます。

void RemoveCallbackTarget ( object  target)

実装されたコールバックインターフェイスのコールバックからオブジェクトを登録解除します。

コールバックターゲットの追加と削除は、実行中のコールバックを混乱させないためにキューに入れられます。 内部的には、これは、LoadBalancingClientが次のコールバックを呼び出す前に追加/削除が行われることを意味します。 この詳細は、ゲームのワークフローに影響を与えません。

対象となるコールバックインターフェイスは、IConnectionCallbacks、IMatchmakingCallbacks、 ILobbyCallbacks、IInRoomCallbacks、IOnEventCallback、およびIWebRpcCallbackです。

参照:

Parameters
targetコールバックの取得を登録解除するオブジェクト。
void Service ( )

このメソッドは、使用可能なすべての着信コマンドをディスパッチし、このクライアントの発信コマンドを送信します。 それを行うためにDispatchIncomingCommandsとSendOutgoingCommandsを使用します。

Photonクライアントライブラリは、ゲームやアプリケーションに簡単に適合するように 設計されています。アプリケーションは、着信イベントと応答が実行される コンテキスト(スレッド)を制御し、UDP / TCPパッケージの作成を完全に制御します。

パッケージの送信と受信したメッセージのディスパッチは、2つの別個のタスクです。サービスは、制御を犠牲にして それらを1つの方法に結合します。DispatchIncomingCommandsおよびSendOutgoingCommandsを呼び出します。

このメソッドを定期的に呼び出します(1秒あたり10..50回)。

これにより、受信したすべてのコマンド(順序どおりの信頼できるコマンドがまだ欠落していない場合)とイベントがディスパッチされ キューに入れられた発信コマンドが送信されます。デバイスが1秒あたりに複数のパケットを送信できない場合、 複数の操作が1つのパッケージに結合される可能性があるため、呼び出しが少ない方が効果的です。

次でServiceを置き換えることができます。

(DispatchIncomingCommands()); の間//すべてがディスパッチされるまでディスパッチします...
SendOutgoingCommands(); //送信メッセージを含むUDP / TCPパッケージを送信する
See also
PhotonPeer.DispatchIncomingCommands, PhotonPeer.SendOutgoingCommands
void SimulateConnectionLoss ( bool  simulateTimeout)

クライアントのタイムアウトで終了する接続の損失をテストするのに役立ちます。 これにより、LoadBalancingPeer.NetworkSimulationSettingsが変更されます。 コメントを読んでください。

LoadBalancingPeer.IsSimulationEnabledが設定されるため、注意して使用してください。
LoadBalancingPeer.IsSimulationEnabledを読み取り、必要に応じてこれがオンかオフかを確認します。

SimulateTimeoutがtrueの場合、LoadBalancingPeer.NetworkSimulationSettings.IncomingLossPercentageおよび LoadBalancingPeer.NetworkSimulationSettings.OutgoingLossPercentageは100に設定されます。
これは以前に行われたネットワークシミュレーション設定を上書きします。

詳細なネットワークシミュレーション制御が必要な場合は、NetworkSimulationSettingsを使用します。

タイムアウトは、通常のクライアントタイムアウトのように、IConnectionCallbacks.OnDisconnectedの呼び出しにつながります。

OutgoingLossPercentage = 100およびIncomingLossPercentage = 0を設定するだけで、 このメソッドを変更(またはNetworkSimulationSettingsを使用)して、意図的にサーバータイムアウトを実行することができます。

Parameters
simulateTimeouttrueの場合、接続損失がシミュレートされます。 falseの場合、シミュレーションは終了します。

Member Data Documentation

AuthModeOption AuthMode = AuthModeOption.Auth

新しい認証ワークフローを有効にします。

ConnectionCallbacksContainer ConnectionCallbackTargets

コールバックのグループのターゲットオブジェクトをまとめるので、それらを便利に呼び出すことができます。

AddまたはRemoveを使用することにより、オブジェクトはこのグループのコールバックに対して「サブスクライブ」または「サブスクライブ解除」できます。

bool EnableLobbyStatistics

有効にすると、クライアントはマスターサーバーから利用可能なロビーのリストを取得します。

クライアントがマスターサーバーに接続する前にこの値を設定します。 マスターサーバーに接続している間、 変更は効果がありません。

OptionalInfoCallbacks.OnLobbyStatisticsUpdateを実装して、使用されているロビーのリストを取得します。

現在のプレイヤーのアクティビティなどに応じて、タイトルでロビーを動的に使用する場合、 ロビーの統計情報が役立ちます。 この場合、利用可能なロビー、ルーム数、プレイヤー数のリストを取得すると 役立つ情報になります。

ConnectUsingSettingsは、これをPhotonServerSettings値に設定します。

EncryptionMode EncryptionMode = EncryptionMode.PayloadEncryption

通信を暗号化する方法を定義します。

ConnectionProtocol ExpectedProtocol = ConnectionProtocol.Udp

MasterおよびGameServerで使用されるプロトコル。

AuthMode = AuthModeOption.AuthOnceWssを使用する場合、クライアントはNameServerではwss-connectionを使用しますが、他のサーバーでは別のプロトコルを使用します。 NameServerはプロトコルごとに異なるアドレスを送信するため、予想されるプロトコルを知る必要があります。

summary>この機能が有効になっている場合、接続/初期化リクエストのトークンの取得を簡素化します。

MatchMakingCallbacksContainer MatchMakingCallbackTargets

コールバックのグループのターゲットオブジェクトをまとめるので、それらを便利に呼び出すことができます。

AddまたはRemoveを使用することにより、オブジェクトはこのグループのコールバックに対して「サブスクライブ」または「サブスクライブ解除」できます。

string NameServerHost = "ns.exitgames.com"

Photon Cloudのネームサーバーホスト名。ポートおよびプレフィックスなし。

string NameServerHttp = "http://ns.exitgames.com:80/photon/n"

Photon CloudへのHTTP接続用のネームサーバー。 プレフィックスとポートが含まれます。

このクライアントが使用できる有効なリージョンのリストが含まれています。 クライアントがOpGetRegionsへの応答を取得しない限り、Null。

string SummaryToCache

ベストリージョンのpingが行われたときに設定します。

Property Documentation

string AppId
getset

Photon Cloudから割り当てられたAppID。 自分自身をホストしている場合、これは「通常の」Photon Serverアプリケーション名(ほとんどの場合「LoadBalancing」)です。

string AppVersion
getset

クライアントのバージョン。 新しいバージョンでは、プレイヤーを古いクライアントバージョンから分離するための新しい「仮想アプリ」も作成されます。

AuthenticationValues AuthValues
getset

接続直後にPhotonサーバーに送信されるユーザー認証値。

このプロパティを設定するか、Connect(...、authValues)によってAuthenticationValuesを渡します。

string CloudRegion
get

このクライアントが接続するクラウドリージョン。ConnectToRegionMaster()によって設定されます。NameServerを使用しない場合は設定しないでください!

string CurrentCluster
get

ネームサーバーによって提供されるクラスター名。

値は、OpAuthenticate / OpAuthenticateOnceのOpResponseによって提供されます。 デフォルト:null。 この値は、ネームサーバー認証応答からのみ更新されます。

TypedLobby CurrentLobby
getset

このクライアントが現在使用しているロビー。 ロビーへの参加時またはルームの作成時に定義されます

Room CurrentRoom
get

このクライアントが接続している現在のルーム(空いている場合はnull)。

string CurrentServerAddress
get

現在使用されているサーバーアドレス(存在する場合)。サーバーのタイプは、サーバープロパティによって定義されます。

DisconnectCause DisconnectedCause
getprotected set

クライアントの切断のさまざまな原因を要約(集約)します。

切断の原因としては、ネットワーク接続のエラーまたは重要な操作の失敗(「高レベル」と見なされる)が考えられます。 操作は常にOnOperationResponseの呼び出しをトリガーしますが、 接続関連の変更はOnStatusChangedで処理されます。 DisconnectCauseはどちらの場合でも設定され、切断の原因を表示(またはデバッグ)するために 使用できる単一の状態値で切断の原因を要約します。

string GameServerAddress
getset

特定のルームのゲームサーバーのアドレス。マスターによって割り当てられた一時的に使用中。

bool InLobby
get

クライアントがロビーにいる場合の内部値。

これは、ルームへの参加/作成が失敗したときにthis.Stateをリセットするために使用されます。

bool InRoom
get

ルームにいる間はtrueです(this.state == ClientState.Joined)。

この値のポーリングは別として、ゲームロジックはIMatchmakingCallbacksをいくつかのクラスに実装し、 それが呼び出されたときに反応する必要があります。
OpRaiseEvent、OpLeave、およびその他の操作は、クライアントがルームにいる場合にのみ(正常に)使用できます。

bool IsConnected
get

このクライアントが現在接続されているか、何らかのサーバーに接続されているかどうかを返します。

これは、サーバーの切り替え中にも当てはまります。 IsConnectedAndReadyを使用して、Operationsを送信できる状態のみを確認します。

bool IsConnectedAndReady
get

接続が操作を送信する準備ができている場合にのみ当てはまるIsConnectedの洗練されたバージョン。

すべてのタイプのサーバーですべての操作を呼び出すことができるわけではありません。 現在接続されているサーバーで操作が利用できない場合、ErrorCode!= 0のOperationResponseが発生します。

例:NameServerは、他ではどこでも利用できないOpGetRegionsを許可します。 MasterServerでは、イベント(OpRaiseEvent)を送信できません。GameServerでは、ロビーに参加できません(OpJoinLobby)。

現在使用しているサーバーを確認するには、次を使用します:Server.

bool IsFetchingFriendList
get

クライアントが現在フレンドリストを取得しているかどうかを知るための内部フラグ。

bool IsUsingNameServer
getset

このクライアントがNameServerを使用してマスターサーバーアドレスを取得する場合はtrue。

この値は、このクライアントによってのみ設定される内部値であるにもかかわらず、パブリックです。

クライアントは、LoadBalancingPeerをAPIとして使用してサーバーと通信します。 これは使いやすさのために公開されています。OpRaiseEventのような一部のメソッドは接続状態に関係なく、オーバーライドする必要はありません。

Player LocalPlayer
getset

ローカルプレーヤーは決してnullではありませんが、クライアントもルームにいない限り無効です。IDはルームの外では-1になります。

string MasterServerAddress
getset

マスターサーバーのアドレス。PhotonCloudで、ConnectToRegionMaster()を呼び出してマスターサーバーを見つけます。

Photon Cloudでは、マスターサーバーアドレスの明示的な定義はベストプラクティスではありません。 Photon Cloudには、クライアントを特定のマスターサーバー(リージョンおよびAppIdごと)にリダイレクトする「ネームサーバー」があります。

string NameServerAddress
get

Photon Cloudのネームサーバーアドレス(現在のプロトコルに基づく)。 デフォルト値を使用でき、通常はこの値を設定する必要はありません。

string NickName
getset

プレイヤーのニックネーム(他のユーザーと同期)。client.LocalPlayer.NickNameと同じです。

int PlayersInRoomsCount
getset

マスターサーバーで利用可能な統計値:ルームのプレイヤー(プレイ)。

int PlayersOnMasterCount
getset

マスターサーバーで利用可能な統計値:マスターのプレーヤー(ゲームを探しています)。

int RoomsCount
getset

マスターサーバーで使用可能な統計値:現在作成されているルーム。

SerializationProtocol SerializationProtocol
getset

このクライアントが使用するバイナリプロトコルバージョンを取得または設定します

LoadBalancingClient.LoadBalancingPeerから直接設定するのではなく、必ずこちらを使用してください (PhotonPeer.SerializationProtocolType)。 特にWSSプロトコルが使用される場合。

ServerConnection Server
get

このクライアントが現在接続または接続しているサーバー。

各サーバー(ネームサーバー、マスターサーバー、ゲームサーバー)は、一部の操作を許可し、他の操作を拒否します。

ClientState State
getset

このクライアントの現在の状態。注意:いくつかの状態は、他の状態につながる「遷移」です。

bool UseAlternativeUdpPorts
getset

パブリッククラウド(27000〜27003)でUDP接続に代替ポートを使用します。

これは、プレイヤーが接続の安定性に問題がある場合に使用する必要があります。 一部のプレイヤーは、Steamゲームの接続性が向上したと報告しています。 効果は異なる場合があります。そのため、代替ポートは新しいデフォルトではありません。

代替(サーバー)ポートは27000〜27003です。

着信サーバーアドレス文字列を適宜置換することにより、値が適用されます。 これをtrueに設定するだけです。

この値は、TCPまたはWebSocket接続には影響しません。

string UserId
getset

このユーザーのID。接続時にOpAuthenticateで送信されます。設定されていない場合、接続中にPlayerNameが適用されます。

接続時に、UserIdがnullまたは空の場合、クライアントはPlayNameをUserIdにコピーします。 PlayerNameが設定されていない場合(接続前)、サーバーはこのクライアントと他のクライアントに不明のままの一時IDを適用します。

UserIdは、FindFriendsで使用され、アカウントのデータを取得するために使用されます(WebHooksなどを使用)。

慣例により、接続中ではなく、接続前にこのIDを設定します。 エラーはありませんが、接続中にIDは変更されません。

Event Documentation

Action<EventData> EventReceived

イベントがディスパッチされたときに呼び出されるメソッドを登録します。 LoadBalancingClientが最初に内部イベントを処理した後に呼び出されます。

これは、LoadBalancingClientを拡張してOnEvent()をオーバーライドする代わりになります。

OnEventは、内部イベントを最初に処理した後にEventReceivedを呼び出しています。 つまり、たとえば、参加しているプレイヤーは既にプレイヤーリストに含まれていますが、 残っているプレイヤーは既にルームから削除されます。

Action<OperationResponse> OpResponseReceived

操作の応答を受信したときに呼び出されるメソッドを登録します。

これは、LoadBalancingClientを拡張してOnOperationResponse()をオーバーライドする代わりになります。

OnOperationResponseは、アクションが呼び出される前に実行されます。 つまり、たとえば、OpJoinLobby応答はすでに状態を「JoinedLobby」に設定しており、 OpLeaveへの応答は、これが呼び出される前にすでに切断をトリガーしています。

Action<ClientState, ClientState> StateChanged

このクライアントのClientStateが設定されたときに呼び出されるメソッドを登録します。

これは、接続、ルームへの参加などに反応するのに役立ちます。