ユーザーIDと友達

ユーザーID

Photonでは、プレイヤーは一意のユーザーIDを使用して識別されます。

同じユーザーIDを使用して、複数のクライアントからPhotonチャネルへの連携が可能です。 この場合には各クライアント上で、同じメッセージを受信します。 また、同じユーザーIDで接続したクライアントはすべて、同一のチャネルに連携され、いつでも同じ友達を持つことができます。

Back To Top

一意のユーザーID

一般的に、ユーザーIDは表示されることを前提としていません。 この点は、ユーザー名、表示名やニックネームと異なります。 ユーザーIDは人間が読解可能である必要はなく、また人間に非常に分かりやすくする必要はありません。 つまり、たとえばGUIDをユーザーIDとして使用することも可能です。

プレイヤーごとに一意のユーザーIDを保持することの利点は以下のとおりです: - ゲームセッション間や複数のデバイス間で、データを保持します。 ルームへの再参加や、中断した時点からのプレイの再開が可能です。

  • 会ったことのあるプレイヤー全員に存在を把握され、またそれらのプレイヤーから容易に識別されるようになります。 招待や挑戦を送ったり、オンラインパーティーを開催したり、チームやギルドを作るなどして友達とプレイできます。

ユーザープロファイル(例:経験、統計、実績、レベルなど)を追加して、ゲームをさらに難しくすることができます(トーナメントやスコアボードの使用も可能です)。 - PhotonのユーザーIDを外部の一意の識別子にひもづけて、別のサービスを使用することができます。 たとえばFacebookのID、GoogleのID、SteamのID、PlayFabのIDなどをPhtonのユーザーに設定可能です。 - 対象となるユーザーIDのブラックリストを保持したり、 を使用して、悪意のあるユーザーが接続しないようにすることができます。

Back To Top

ユーザーIDの設定

一旦認証されると、切断されるまでPhotonクライアントは同じユーザーIDを保持します。 クライアントのユーザーIDは3つの方法で設定されます:

  1. クライアントは、接続前にAuthenticationValues.UserIdを設定してユーザーIDを送信します。 このオプションは、 を使用せずに、ユーザーIDを設定したい場合に役立ちます。
  2. 認証が成功すると、外部認証プロバイダはユーザーIDを返します。 クライアントから送信された値はすべて上書きされます。
  3. Photon Serverは、上記の1または2でユーザーIDを取得しないユーザーに対して、IDとしてGUIDを割り当てます。このため、匿名ユーザーもユーザーIDを持つことになります。

Back To Top

マッチメイキングスロットの予約

プレイヤーは友達も同様に参加することを分かった上でルームに入る場合があります。 スロット予約を使用すると、Photonは特定のユーザー用にスロットをブロックし、マッチメイキングの際に考慮します。 スロットを予約するには、ルームに参加する際のメソッド(JoinRoomJoinOrCreateRoomJoinRandomRoomおよびCreateRoom)で取得するexpectedUsersパラメータがあります。

誰かが参加すると分かっている場合は、UserIDの配列を渡します。 JoinRandomRoomの場合、サーバーはあなたと参加を予定しているプレイヤー(また、既にルームにいるアクティブなプレイヤーや予測されるプレイヤー)のために十分なスロットのあるルームを探そうとします。 現在のexpectedUsersが変更された場合、サーバーはルーム内のクライアントに対してそれを更新します。 スロット予約に対応するには、ルーム内のUserIDのパブリッシュを有効化する必要があります。

Back To Top

使用例:チームマッチメイキング

これは、マッチメイキングでチームをサポートする際に使用できます。 チームのリーダーが実際のマッチメイキングをおこないます。 リーダーがルームに参加し、すべてのメンバーにスロットを予約できます:

ランダムルームを検索するには:

なにも見つからない場合には、新規作成します:

他のプレイヤーはマッチメイキングをする必要はありませんが、以下を繰り返し呼ぶ必要があります:

リーダーがルームに到着すると、FindFriends オペレーションによってルーム名が明らかになり、すべてのプレイヤーがそのルームに参加可能となります:

Back To Top

友達

同じAppIDや同じPhoton Cloudのリージョンに接続した友達、または同じPhotonアプリケーションのバージョンでプレイする友達のみが、使用しているデバイスやプラットフォームに関わらず、互いに検索することができます。

Photon Chatは、接続中のみ友達リストをメモリに保持します。 しかし、このリストはセッション間では保持されません。 セッション間でリストを保持するには、外部サービスが必要です。

Back To Top

友達の追加と削除

友達をPhoton Chatに追加し、その友達のステータスアップデートを受信することが可能です。 Photon Chatに友達を追加した場合には、その友達がステータスを変更するたび、またはオフラインになるたびにイベントを受信します。

最大で、一度に512人の友達を追加または削除できます。

Photon Chatに友達を追加するには:

chatClient.AddFriends(friendsUserIds);

これらのイベントの情報が不要な場合には、その友達を削除でき、その友達のステータスアップデートを受信する必要がなくなります。

Photon Chatから友達を削除するには:

chatClient.RemoveFriends(friendsUserIds);

友達からステータスアップデートを受信するには、以下を実装する必要があります:

void IChatClientListener.OnStatusUpdate(string user, int status, bool gotMessage, object message);

Back To Top

ステータスのアップデート

Photon Chatでは自分のステータスをアップデートし、すべての友達に配信することが可能です。

以下に手順を示します:

chatClient.SetOnlineStatus(statusCode);

あらかじめ定義されたオンラインステータスコードのリストは、ChatUserStatusクラスにあります。

オンラインステータスをChatUserStatus.Invisibleに設定すると、すべての友達はあなたを ChatUserStatus.Offline とみなします。 このリストにカスタムのコードを追加し、アプリケーションで使用することが可能です。

設計上、接続時にPhoton Chatは非明示的にChatUserStatus.Onlineまたはその他のステータスを送信することはありません。 このため、この挙動を実現するには、接続したらすぐにオンラインである点を明示的に設定する必要があります。

任意で、アップデートされたステータスコードとともにメッセージを追加可能です。 このメッセージは2つの特殊なステータスコード、ChatUserStatus.OfflineChatUserStatus.Invisibleの場合には送信されません。 この場合、2つのパラメータをともなう負荷メソッドを使用してください:

chatClient.SetOnlineStatus(statusCode, statusMessage);

ステータスアップデート機能を使用すると、すべての型のデータ(Photonがシリアル化可能なもの)を友達とやりとりできます。 これは文字列のみに限定されません。

ドキュメントのトップへ戻る