このクラスは、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, ClientState > | StateChanged |
このクライアントのClientStateが設定されたときに呼び出されるメソッドを登録します。 More... | |
Action< EventData > | EventReceived |
イベントがディスパッチされたときに呼び出されるメソッドを登録します。 LoadBalancingClientが最初に内部イベントを処理した後に呼び出されます。 More... | |
Action< OperationResponse > | OpResponseReceived |
操作の応答を受信したときに呼び出されるメソッドを登録します。 More... | |
このクラスは、LoadBalancingPeerを使用してPhoton LoadBalancingワークフローを実装します。 状態を保持し、マスターサーバーとゲームサーバー間の移行を自動的に実行します。
このクラス(およびPlayerクラス)は、独自のゲームロジックを実装するために拡張する必要があります。 CreatePlayerをプレイヤーの「ファクトリ」メソッドとしてオーバーライドし、独自のプレイヤーインスタンスを返すことができます。 このクラスの状態は、クライアントがロビー(または単にマスター)にいるときと、 実際のゲームプレイが行われるゲーム内にいるときを把握するために不可欠です。 拡張ノート: このクラスの拡張は、状態が変化したときに呼び出されるため、IPhotonPeerListenerのメソッドを オーバーライドする必要があります。 最初にbase.methodを呼び出してから、 反応する操作または状態を選択し、スイッチケースに入れます。 このAPIを使用できる各プラットフォームにデモを提供するので、それらに注意してください。
LoadBalancingClient | ( | ConnectionProtocol | protocol = ConnectionProtocol.Udp | ) |
UDPプロトコルまたは指定されたプロトコルでLoadBalancingClientを作成します。
protocol | 接続に使用するネットワークプロトコルを指定します。 |
LoadBalancingClient | ( | string | masterAddress, |
string | appId, | ||
string | gameVersion, | ||
ConnectionProtocol | protocol = ConnectionProtocol.Udp |
||
) |
接続する前に必要なさまざまな値を設定して、LoadBalancingClientを作成します。
masterAddress | 接続するマスターサーバーのアドレス。Connectで使用されます。 |
appId | このタイトルのAppId。Photon Cloudに必要です。ダッシュボードにあります。 |
gameVersion | このクライアント/ビルドのバージョン。Photon Cloudでは、プレイヤーはAppId、GameVersion、およびRegionで区切られています。 |
protocol | 接続に使用するネットワークプロトコルを指定します。 |
void AddCallbackTarget | ( | object | target | ) |
実装されたコールバックインターフェイスのコールバックのオブジェクトを登録します。
コールバックターゲットの追加と削除は、実行中のコールバックを混乱させないためにキューに入れられます。 内部的には、これは、LoadBalancingClientが次のコールバックを呼び出す前に追加/削除が行われることを意味します。 この詳細は、ゲームのワークフローに影響を与えません。
対象となるコールバックインターフェイスは、IConnectionCallbacks、IMatchmakingCallbacks、 ILobbyCallbacks、IInRoomCallbacks、IOnEventCallback、およびIWebRpcCallbackです。
void ChangeLocalID | ( | int | newID | ) |
LocalPlayerのIDを設定するために内部的に使用されます(-1から実際のルーム内IDまで)。
newID | ルームへの参加時に割り当てられる新しいアクターID(a.k.a actorNr)。 |
|
virtual |
MasterServerAddressおよびAppIdプロパティを使用して、マスターサーバーに接続するための「プロセス」を開始します。
Photon Cloudに接続するには、ConnectUsingSettings()またはConnectToRegionMaster()を使用します。
接続プロセスには、実際の接続、暗号化の確立、(アプリと任意でユーザーの)認証、 およびマスターサーバーへの接続といういくつかの手順が含まれます。
ユーザーは匿名で接続するか、「カスタム認証」を使用して各プレイヤーのログインを確認できます。 Photonのカスタム認証は、外部サービスとコミュニティを使用してユーザーを検証します。クライアントはユーザーの情報を提供しますが、 サービスのセットアップはPhoton Cloudダッシュボードで行われます。 パラメーターauthValuesはthis.AuthValuesを設定し、接続プロセスで使用します。
Photon Cloudへの接続は、次の理由で失敗する場合があります:
bool ConnectToNameServer | ( | ) |
bool ConnectToRegionMaster | ( | string | region | ) |
ネームサーバーを使用してIPを検索し、特定のリージョンのマスターサーバーに接続します。
リージョンがヌルまたは空の場合、接続は行われません。 指定されたリージョン(コード)が利用できない場合、接続プロセスはネームサーバーで失敗します。 このメソッドは、定義されたリージョンにのみ接続します。「ベストリージョン」のpingは実行されません。
リージョン文字列に「/」が含まれていない場合、これは特定のクラスターが要求されていないことを意味します。 「シャーディング」に対応するために、この場合、リージョンは「/*」の接尾辞を取得して、ランダムなクラスターを選択します。
|
virtual |
低レベルAPI(およびこのクライアント)のデバッグ出力。
このメソッドは、LoadBalancingClientの状態を維持するものではありません。オーバーライドでbase.DebugReturnを呼び出すかどうかは任意です。
void Disconnect | ( | DisconnectCause | cause = DisconnectCause.DisconnectByClientLogic | ) |
このクライアントをサーバーから切断し、接続が正常に閉じられた場合にthis.Stateを設定します。
|
virtual |
サーバーによって提供されるphotonEventを使用して、内部状態を進め、必要に応じてopsを呼び出します。
このメソッドは、LoadBalancingClientの内部状態を更新するために不可欠です。 オーバーライドするメソッドはbase.OnEventを呼び出す必要があります。
|
virtual |
Photon 4では、「生のメッセージ」はインターフェースで独自のコールバックメソッドを取得します。 まだ使用されていません。
|
virtual |
サーバーが提供するOperationResponsesを使用して、内部状態を進め、必要に応じてopsを呼び出します。
このメソッドが完了すると、OnOpResponseAction(存在する場合)が呼び出されます。 これにより、このクラスをオーバーライドすることなく、操作の応答を取得できます。
より複雑なゲーム/アプリロジックを実装するには、LoadBalancingClientを継承する独自のクラスを実装する必要があります。 独自の操作応答を簡単に使用するには、このメソッドをオーバーライドします。
このメソッドはLoadBalancingClientの内部状態を更新するために不可欠なので、 オーバーライドするメソッドはbase.OnOperationResponse()を呼び出す必要があります。
operationResponse | このピアによって呼び出された操作に対するサーバーの応答が含まれます。 |
|
virtual |
接続のstatusCodeを使用して、内部状態を進め、必要に応じて操作を呼び出します。
このメソッドは、LoadBalancingClientの内部状態を更新するために不可欠です。 オーバーライドするメソッドはbase.OnStatusChangedを呼び出す必要があります。
|
virtual |
このクライアントのインタレストグループを処理する操作(ルームのイベント用)。
nullとbyte [0]を渡すことの違いに注意してください: nullの場合はグループを追加/削除しません。 byte [0]の場合はすべての(既存の)グループを追加/削除します。 最初に、グループの削除が実行されます。この方法では、すべてのグループを離れ、提供されたグループのみに参加できます。
変更はすぐにアクティブになるのではなく、サーバーがこの操作を実行するとアクティブになります(約RTT/2)。
groupsToRemove | インタレストから削除するグループ。Nullは削除しません。byte [0]はすべてを削除します。 |
groupsToAdd | インタレストに追加するグループ。Nullは追加しません。byte [0]は現在のすべてを追加します。 |
bool OpCreateRoom | ( | EnterRoomParams | enterRoomParams | ) |
新しいルームを作成します。コールバック:OnCreatedRoomおよびOnJoinedRoomまたはOnCreateRoomFailed。
成功すると、クライアントは指定されたルームに入り、OnCreatedRoomとOnJoinedRoomの両方をコールバックします。 すべてのエラーの場合、OnCreateRoomFailedが呼び出されます。
ルーム名がすでに使用されている場合、またはRoomOptionsが互いに競合している場合、ルームの作成は失敗します。 さまざまなルーム作成オプションについては、EnterRoomParamsリファレンスを確認してください。
このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。
ルームにいるとき、このクライアントの状態はClientState.Joinedになります。
ルームに入ると、このクライアントのプレーヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときにも消去されないことに注意してください。
expectedUsersの配列を定義して、これらのユーザーのルームのプレイヤースロットをブロックできます。 Photonの対応する機能は「スロット予約」と呼ばれ、ドキュメントページで見つけることができます。
enterRoomParams | 作成するルームのプロパティの定義。 |
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[](ルームにない場合は空の文字列)
これらのオプションを使用して、ルームに戻るために一致させる必要がある状態を定義できます。
friendsToFind | 友達の名前の配列(一意であることを確認してください)。 |
options | FindFriends操作の結果に影響するオプション。 |
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
typedLobby | 照会するロビー。SqlLobby型である必要があります。 |
sqlLobbyFilter | SQLクエリステートメント。 |
bool OpJoinLobby | ( | TypedLobby | lobby | ) |
マスターサーバーに既に接続されている場合、これは指定されたロビーに参加します。この要求は、OnOperationResponse()呼び出しとコールバックOnJoinedLobby()をトリガーします。
lobby | 参加するロビー。デフォルトのロビーにはnullを使用します。 |
bool OpJoinOrCreateRoom | ( | EnterRoomParams | enterRoomParams | ) |
名前で特定のルームに参加し、オンデマンドで作成します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。
プレイヤーが会うためにルーム名を作るときに便利です: 関係するすべてのクライアントが同じメソッドを呼び出し、最初のクライアントがルームを作成します。
成功すると、クライアントは指定されたルームに入ります。 ルームを作成するクライアントは、OnCreatedRoomとOnJoinedRoomの両方をコールバックします。 既存のルームに参加するクライアントは、OnJoinedRoomのみをコールバックします。 すべてのエラーの場合、OnJoinRoomFailedが呼び出されます。
ルームがいっぱいであるか、閉じている場合、またはユーザーが既にルームに存在している場合(userIdでチェック)、 ルームへの参加は失敗します。
ルームに戻るには、OpRejoinRoomを使用します。
このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。
このクライアントの状態は、操作が呼び出されるとすぐにClientState.Joiningに設定されます。 バックグラウンドで、クライアントはサーバーを切り替え、さまざまな関連操作を呼び出します。
ルーム内にいるとき、このクライアントの状態はClientState.Joinedになります。
roomOptionsでルームのプロパティを設定すると、ルームが既に存在する場合は無視されます。 これにより、プレイヤーの参加が遅れてルームのプロパティが変更されるのを防ぎます。
ルームに入ると、このクライアントのプレイヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときに消去されないことに注意してください。
expectedUsersの配列を定義して、これらのユーザーのルームのプレイヤースロットをブロックできます。 Photonの対応する機能は「スロット予約」と呼ばれ、ドキュメントページで見つけることができます。
enterRoomParams | 作成または参加するルームのプロパティの定義。 |
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を返した場合、コールバックはありません。
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の対応する機能は「スロット予約」と呼ばれます。ドキュメントページをご確認ください。
opJoinRandomRoomParams | ランダムなマッチメイキングでルームをフィルタリングするプロパティの任意の定義。 |
bool OpJoinRoom | ( | EnterRoomParams | enterRoomParams | ) |
名前でルームに参加します。コールバック:OnJoinedRoomまたはOnJoinRoomFailed。
ロビーを使用するとき、またはプレイヤーが友達をフォローするとき、または互いに招待するときに便利です。
成功すると、クライアントは指定されたルームに入り、OnJoinedRoom経由でコールバックします。 すべてのエラーの場合、OnJoinRoomFailedが呼び出されます。
ルームがいっぱいで、閉じていて、存在していない場合、またはユーザーが 既にルームに存在している場合(userIdでチェック)、ルームへの参加は失敗します。
ルームに戻るには、OpRejoinRoomを使用します。 プレイヤーがお互いを招待し、誰が最初に応答するか不明な場合は、代わりにOpJoinOrCreateRoomを使用してください。
このメソッドは、クライアントがマスターサーバーに接続しているときにのみ呼び出すことができるため、 OnConnectedToMasterコールバックを実装する必要があります。 戻り値をチェックして、サーバーで操作が呼び出されることを確認します。 注:このメソッドがfalseを返した場合、コールバックはありません。
ルームの名前は一意である必要があります(リージョン、appid、gameversionごと)。 タイトルにグローバルマッチメイキングや招待状(外部ソリューションなど)を使用する場合は、 ルームに参加するために地域とゲームバージョンを念頭に置いてください。
このクライアントの状態は、操作が呼び出されるとすぐにClientState.Joiningに設定されます。 バックグラウンドで、クライアントはサーバーを切り替え、さまざまな関連操作を呼び出します。
ルームにいるとき、このクライアントの状態はClientState.Joinedになります。
ルームに入ると、このクライアントのプレイヤーのカスタムプロパティがルームに送信されます。 LocalPlayer.SetCustomPropertiesを使用して、まだルームにいなくてもそれらを設定します。 プレイヤーのプロパティはローカルにキャッシュされ、ルームを出るときに消去されないことに注意してください。
expectedUsersの配列を定義して、ルーム内のプレイヤースロットを友達またはパーティーメンバー用に予約できます。 Photonの対応する機能は「スロット予約」と呼ばれています。ドキュメントページをご確認ください。
enterRoomParams | 参加するルームのプロパティの定義。 |
bool OpLeaveLobby | ( | ) |
ロビーに参加する反対。別のロビーに参加するために明示的にロビーを離れる必要はありません(クライアントはいつでも最大1人まで参加できます)。
bool OpLeaveRoom | ( | bool | becomeInactive, |
bool | sendAuthCookie = false |
||
) |
オプションで、ユーザーが非アクティブになっていることをサーバーに通知して、現在のルームから退出します。コールバック:OnLeftRoom。
OpLeaveRoomは、ルームがnullの場合、サーバーがGameServerでない場合、またはクライアントが既にGSから切断している場合、実行をスキップします。 これらの場合、OpLeaveRoomはfalseを返し、状態を変更しないため、このメソッドの戻りを確認します。
場合によっては、このメソッドはOpLeave呼び出しをスキップし、Disconnect()を呼び出すだけです。 これにより、ルームだけでなくサーバーも離れます。切断も休暇をトリガーするため、ワークフローがより速くなります。
becomeInactive | trueの場合、このプレイヤーはゲーム内で非アクティブになり、後で戻ることができます(ルームのPlayerTTLが!= 0の場合)。 |
sendAuthCookie | WebFlag:利用可能な場合、暗号化されたオブジェクトAuthCookieをPathLeave webhookのWebサービスに安全に送信します |
|
virtual |
同じルームの他のプレイヤーに、カスタムコード/タイプとコンテンツを含むイベントを送信します。
eventCode | このタイプのイベント(およびコンテンツ)を識別します。ゲームのイベントコードは0から開始できます。 |
customEventContent | シリアル化可能なデータ型(他のOpRaiseEventオーバーロードのようなHashtableを含む)。 |
raiseEventOptions | 使用される送信オプションが含まれます。nullを渡すと、デフォルトのオプションが使用されます。 |
sendOptions | 信頼性の高い暗号化などの送信オプション |
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を使用)で保存されます。
actorNr | カスタムプロパティが属するプレイヤーを定義します。プレイヤーのActorID。 |
propertiesToSet | 変更されるカスタムプロパティのハッシュテーブル。 |
expectedProperties | 新しい値を設定するための条件として使用するキー/値をいくつか提供します。クライアントはルームにいなければなりません。 |
webFlags | 設定されたプロパティをWebHookに転送するかどうかを定義します。クライアントはルームにいなければなりません。 |
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を使用)で保存されます。
propertiesToSet | 変更されるカスタムプロパティのハッシュテーブル。 |
expectedProperties | 新しい値を設定するための条件として使用するキー/値をいくつか提供します。 |
webFlags | 任意のPathProperties webhookのWebフラグを定義します。 |
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... } } }
uriPath | Photonのサーバー側で設定されたbaseUrlを基準とした、呼び出すURLパス。 |
parameters | Webサービスメソッドに送信するパラメーター。 |
sendAuthCookie | 認証CookieがWebHookに送信されるかどうかを定義します(設定された場合)。 |
bool ReconnectAndRejoin | ( | ) |
ゲームサーバーに直接再接続してルームに再び参加することにより、ルームにすばやく戻るために使用できます。
ルームに再入室しても、プレーヤーのプロパティは送信されません。 代わりに、クライアントはサーバーから最新のものを受け取ります。 新しいプレーヤープロパティを設定する場合は、再入室してから設定してください。
bool ReconnectToMaster | ( | ) |
切断後にマスターサーバーに再接続するために使用できます。
一般的な使用例:iOSデバイスのロックボタンを押すと、すぐに切断されます。
void RemoveCallbackTarget | ( | object | target | ) |
実装されたコールバックインターフェイスのコールバックからオブジェクトを登録解除します。
コールバックターゲットの追加と削除は、実行中のコールバックを混乱させないためにキューに入れられます。 内部的には、これは、LoadBalancingClientが次のコールバックを呼び出す前に追加/削除が行われることを意味します。 この詳細は、ゲームのワークフローに影響を与えません。
対象となるコールバックインターフェイスは、IConnectionCallbacks、IMatchmakingCallbacks、 ILobbyCallbacks、IInRoomCallbacks、IOnEventCallback、およびIWebRpcCallbackです。
target | コールバックの取得を登録解除するオブジェクト。 |
void Service | ( | ) |
このメソッドは、使用可能なすべての着信コマンドをディスパッチし、このクライアントの発信コマンドを送信します。 それを行うためにDispatchIncomingCommandsとSendOutgoingCommandsを使用します。
Photonクライアントライブラリは、ゲームやアプリケーションに簡単に適合するように 設計されています。アプリケーションは、着信イベントと応答が実行される コンテキスト(スレッド)を制御し、UDP / TCPパッケージの作成を完全に制御します。
パッケージの送信と受信したメッセージのディスパッチは、2つの別個のタスクです。サービスは、制御を犠牲にして それらを1つの方法に結合します。DispatchIncomingCommandsおよびSendOutgoingCommandsを呼び出します。
このメソッドを定期的に呼び出します(1秒あたり10..50回)。
これにより、受信したすべてのコマンド(順序どおりの信頼できるコマンドがまだ欠落していない場合)とイベントがディスパッチされ キューに入れられた発信コマンドが送信されます。デバイスが1秒あたりに複数のパケットを送信できない場合、 複数の操作が1つのパッケージに結合される可能性があるため、呼び出しが少ない方が効果的です。
次でServiceを置き換えることができます。
(DispatchIncomingCommands()); の間//すべてがディスパッチされるまでディスパッチします... SendOutgoingCommands(); //送信メッセージを含むUDP / TCPパッケージを送信する
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を使用)して、意図的にサーバータイムアウトを実行することができます。
simulateTimeout | trueの場合、接続損失がシミュレートされます。 falseの場合、シミュレーションは終了します。 |
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が行われたときに設定します。
|
getset |
Photon Cloudから割り当てられたAppID。 自分自身をホストしている場合、これは「通常の」Photon Serverアプリケーション名(ほとんどの場合「LoadBalancing」)です。
|
getset |
クライアントのバージョン。 新しいバージョンでは、プレイヤーを古いクライアントバージョンから分離するための新しい「仮想アプリ」も作成されます。
|
getset |
接続直後にPhotonサーバーに送信されるユーザー認証値。
このプロパティを設定するか、Connect(...、authValues)によってAuthenticationValuesを渡します。
|
get |
このクライアントが接続するクラウドリージョン。ConnectToRegionMaster()によって設定されます。NameServerを使用しない場合は設定しないでください!
|
get |
ネームサーバーによって提供されるクラスター名。
値は、OpAuthenticate / OpAuthenticateOnceのOpResponseによって提供されます。 デフォルト:null。 この値は、ネームサーバー認証応答からのみ更新されます。
|
getset |
このクライアントが現在使用しているロビー。 ロビーへの参加時またはルームの作成時に定義されます
|
get |
このクライアントが接続している現在のルーム(空いている場合はnull)。
|
get |
現在使用されているサーバーアドレス(存在する場合)。サーバーのタイプは、サーバープロパティによって定義されます。
|
getprotected set |
クライアントの切断のさまざまな原因を要約(集約)します。
切断の原因としては、ネットワーク接続のエラーまたは重要な操作の失敗(「高レベル」と見なされる)が考えられます。 操作は常にOnOperationResponseの呼び出しをトリガーしますが、 接続関連の変更はOnStatusChangedで処理されます。 DisconnectCauseはどちらの場合でも設定され、切断の原因を表示(またはデバッグ)するために 使用できる単一の状態値で切断の原因を要約します。
|
getset |
特定のルームのゲームサーバーのアドレス。マスターによって割り当てられた一時的に使用中。
|
get |
クライアントがロビーにいる場合の内部値。
これは、ルームへの参加/作成が失敗したときにthis.Stateをリセットするために使用されます。
|
get |
ルームにいる間はtrueです(this.state == ClientState.Joined)。
この値のポーリングは別として、ゲームロジックはIMatchmakingCallbacksをいくつかのクラスに実装し、 それが呼び出されたときに反応する必要があります。
OpRaiseEvent、OpLeave、およびその他の操作は、クライアントがルームにいる場合にのみ(正常に)使用できます。
|
get |
このクライアントが現在接続されているか、何らかのサーバーに接続されているかどうかを返します。
これは、サーバーの切り替え中にも当てはまります。 IsConnectedAndReadyを使用して、Operationsを送信できる状態のみを確認します。
|
get |
接続が操作を送信する準備ができている場合にのみ当てはまるIsConnectedの洗練されたバージョン。
すべてのタイプのサーバーですべての操作を呼び出すことができるわけではありません。 現在接続されているサーバーで操作が利用できない場合、ErrorCode!= 0のOperationResponseが発生します。
例:NameServerは、他ではどこでも利用できないOpGetRegionsを許可します。 MasterServerでは、イベント(OpRaiseEvent)を送信できません。GameServerでは、ロビーに参加できません(OpJoinLobby)。
現在使用しているサーバーを確認するには、次を使用します:Server.
|
get |
クライアントが現在フレンドリストを取得しているかどうかを知るための内部フラグ。
|
getset |
このクライアントがNameServerを使用してマスターサーバーアドレスを取得する場合はtrue。
この値は、このクライアントによってのみ設定される内部値であるにもかかわらず、パブリックです。
クライアントは、LoadBalancingPeerをAPIとして使用してサーバーと通信します。 これは使いやすさのために公開されています。OpRaiseEventのような一部のメソッドは接続状態に関係なく、オーバーライドする必要はありません。
|
getset |
ローカルプレーヤーは決してnullではありませんが、クライアントもルームにいない限り無効です。IDはルームの外では-1になります。
|
getset |
|
get |
Photon Cloudのネームサーバーアドレス(現在のプロトコルに基づく)。 デフォルト値を使用でき、通常はこの値を設定する必要はありません。
|
getset |
プレイヤーのニックネーム(他のユーザーと同期)。client.LocalPlayer.NickNameと同じです。
|
getset |
マスターサーバーで利用可能な統計値:ルームのプレイヤー(プレイ)。
|
getset |
マスターサーバーで利用可能な統計値:マスターのプレーヤー(ゲームを探しています)。
|
getset |
マスターサーバーで使用可能な統計値:現在作成されているルーム。
|
getset |
このクライアントが使用するバイナリプロトコルバージョンを取得または設定します
LoadBalancingClient.LoadBalancingPeerから直接設定するのではなく、必ずこちらを使用してください (PhotonPeer.SerializationProtocolType)。 特にWSSプロトコルが使用される場合。
|
get |
このクライアントが現在接続または接続しているサーバー。
各サーバー(ネームサーバー、マスターサーバー、ゲームサーバー)は、一部の操作を許可し、他の操作を拒否します。
|
getset |
このクライアントの現在の状態。注意:いくつかの状態は、他の状態につながる「遷移」です。
|
getset |
パブリッククラウド(27000〜27003)でUDP接続に代替ポートを使用します。
これは、プレイヤーが接続の安定性に問題がある場合に使用する必要があります。 一部のプレイヤーは、Steamゲームの接続性が向上したと報告しています。 効果は異なる場合があります。そのため、代替ポートは新しいデフォルトではありません。
代替(サーバー)ポートは27000〜27003です。
着信サーバーアドレス文字列を適宜置換することにより、値が適用されます。 これをtrueに設定するだけです。
この値は、TCPまたはWebSocket接続には影響しません。
|
getset |
このユーザーのID。接続時にOpAuthenticateで送信されます。設定されていない場合、接続中にPlayerNameが適用されます。
接続時に、UserIdがnullまたは空の場合、クライアントはPlayNameをUserIdにコピーします。 PlayerNameが設定されていない場合(接続前)、サーバーはこのクライアントと他のクライアントに不明のままの一時IDを適用します。
UserIdは、FindFriendsで使用され、アカウントのデータを取得するために使用されます(WebHooksなどを使用)。
慣例により、接続中ではなく、接続前にこのIDを設定します。 エラーはありませんが、接続中にIDは変更されません。
Action<EventData> EventReceived |
イベントがディスパッチされたときに呼び出されるメソッドを登録します。 LoadBalancingClientが最初に内部イベントを処理した後に呼び出されます。
これは、LoadBalancingClientを拡張してOnEvent()をオーバーライドする代わりになります。
OnEventは、内部イベントを最初に処理した後にEventReceivedを呼び出しています。 つまり、たとえば、参加しているプレイヤーは既にプレイヤーリストに含まれていますが、 残っているプレイヤーは既にルームから削除されます。
Action<OperationResponse> OpResponseReceived |
操作の応答を受信したときに呼び出されるメソッドを登録します。
これは、LoadBalancingClientを拡張してOnOperationResponse()をオーバーライドする代わりになります。
OnOperationResponseは、アクションが呼び出される前に実行されます。 つまり、たとえば、OpJoinLobby応答はすでに状態を「JoinedLobby」に設定しており、 OpLeaveへの応答は、これが呼び出される前にすでに切断をトリガーしています。
Action<ClientState, ClientState> StateChanged |
このクライアントのClientStateが設定されたときに呼び出されるメソッドを登録します。
これは、接続、ルームへの参加などに反応するのに役立ちます。