Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

Identity インターフェース

ゲーム セッションに接続し、インターネットを介して他のプレイヤーと交流するには、通常、サードパーティのオンライン サービスの登録アカウントにログインする必要があります。 これらのサービスは、ソーシャルメディア サイト、ハードウェア プラットフォームのオーナー、またはゲームサービスによって実行されることがあります。 Unreal Engine 4 (UE4) では、 Identity インターフェース でこれらのサービスとのアカウント関連のやり取りを処理し、ユーザーを認証してアクセス トークンを取得します。

認証関数

ログイン

Login 関数は、ローカル プレイヤーのアカウント資格情報 (FOnlineAccountCredentials) を受け取り、オンライン サービスへのログインを試みます。 アカウントの認証情報を生成について、自動的に行ったり、コマンドライン引数から行ったりするには、代わりに AutoLogin 関数を呼び出すことができます。 オンライン サービスが応答すると、ログインの試行の成否にかかわらず、FOnLoginCompleteDelegate が呼び出されます。 また、特定のローカル プレイヤーのログイン ステータスが変わるたびに FOnLoginStatusChangedDelegate が呼び出されます。

各ローカル ユーザーは別々にログインします。 これは、ローカルのマルチプレイヤーとのゲームで特に重要となります。これにより、プレイヤーは個々のアカウント名ごとに、オンラインで競い合ったり、Leaderboard (ランキング) のスコアを獲得したり、友達を招待したり、アチーブメントを達成したりすることが可能になります。

Login の呼び出しが失敗した場合は、ExternalUI インターフェースNEW! により、オンライン サービスにビルトインされているユーザー インターフェースを介して、ユーザーに手動でのログインを試す機会を与えることができます。 すべてのオンライン プラットフォームで認証プロセスの一部として FOnlineAccountCredentials を使用するわけではありません。場合によっては、サポートされているログイン方法が、ビルトインされているユーザー インターフェースのみであることもあります。

ログアウト

オンライン サービスからユーザーをログアウトさせるには、Logout 関数を使用します。 アクションが完了すると、FOnLogoutCompleteDelegate が呼び出されます。 また、特定のローカル プレイヤーのログイン ステータスが変わるたびに FOnLoginStatusChangedDelegate が呼び出されます。

現在のログイン ステータスを確認する

ローカル プレイヤーのステータスは、オンラインでログインしている、(オンラインでない状態で) ローカル プロファイルにログインしている、または完全にログインしていない状態がありえます。 プレイヤーの現在のステータスを調べるには、GetLoginStatus 関数を使います。 ログイン ステータスはオンライン サービスとの最新の通信に基づいて決定されるため、バインドするデリゲートはありません。 ただし、プレイヤーのログインなど特定のステータスの変更を待っているときに、この機能を定期的にポーリングしたくない場合は、FOnLoginStatusChangedDelegate のバインドが便利です。

一部のシステムでは、ユーザーは物理的な入力デバイスを異なるプレイヤーに再割り当てすることができます。これにより、Unreal Engine 内のローカル プレイヤーのインデックス値が変更されます。 これにより、実際にユーザーのログイン ステータスを変更することなく、ログイン ユーザーのローカル ユーザーのインデックス値を切り替えることができます。 この場合、OnControllerPairingChanged デリゲートが呼び出され、コントローラーのインデックスと、関係するユーザーの FUniqueNetId 値が提供されます。

プレイヤーの識別情報

識別システム間で変換する

Unreal Engine 4 のネットワーク環境内では、ログイン試行が成功すると、不透明型の FUniqueNetId 値が自動的にローカル プレイヤーに関連付けられます。 Unreal Engine 4 のネットワーキング コード全体で使用されるだけでなく、各オンライン サービスの独自の識別子のデータ型を抽象化するものとしても機能します。

ユーザーの FUniqueNetId をレプリケートする必要がある場合は、FUniqueNetIdReplFUniqueNetId を安全にレプリケートできる文字列に変換する ToString という方法があります。これは CreateUniquePlayerId で変換することができます。

Identity インターフェースには、これらの異なるシステムと Identity の型の間に存在するギャップを埋めることができる関数がいくつかあります。 プレイヤーのサービス固有の識別子を使用して CreateUniquePlayerId を呼び出すか、GetUniquePlayerId を介してプレイヤーのローカル ユーザー インデックスを使用して呼び出すことで、プレイヤーの FUniqueNetId を取得できます。 プレイヤーの FUniqueNetId を使用して、プレイヤーのサービス固有の識別子 (の FPlatformUserId 型) を取得するために GetPlatformUserIdFromUniqueNetId を呼び出すこともできますが、これはほとんどの場合必要ありません。 これらの関数はすべてローカルで利用可能な情報を使用するため、デリゲートやコールバックは関与しません。

GetSponsorUniquePlayerId はスポンサーであるプレイヤーの FUniqueNetId を返しますが、この機能は Xbox Live サービスにのみ実装されています。

ユーザーアカウント情報

抽象 (abstract) クラスである FOnlineUser は、任意のオンライン サブシステムに関連するユーザー アカウントの基本情報を表し、ローカル ユーザーまたはリモート ユーザーの公開情報にアクセスするための共通インターフェースとして機能します。 このクラスを拡張した FUserOnlineAccount は、ローカルのログイン ユーザーに利用可能なすべての情報へのアクセスを提供します。

場合によっては、特定のオンライン サービスのニーズに合わせて、オンライン システムの FOnlineUser の子クラスを拡張することもできます。 基本クラスは、ユーザーの FUniqueNetId、(使用されているオンライン サービスに応じて) 実名や表示名、およびユーザーに関連付けられている可能性がある文字列ベースの属性を返す機能をサポートしています。ただし、これらの属性の格納は子クラスで実装する必要があります。

FUserOnlineAccount も抽象クラスですが、ユーザー属性を設定し、サービス固有のアクセス トークンやその他のデータなどを含む、ローカルのログイン ユーザーに関するメタデータを格納するためのフレームワークを確立します。 一部のサブシステムでは、これらのトークンを使用して機能にアクセスします。それらを使用して RESTful の呼び出しを行ったり、独自のバックエンド サービスと連携したりすることができます。

ローカルで認識されているアカウントを取得する

多くのオンライン サービスでは、ローカル マシンからログインした (またはローカル マシンで作成された) ユーザー アカウントを追跡します。 これを行うサービスでは、これらの既知のアカウントをすべてリストした配列を返すために GetAllUserAccounts 関数が実装されます。 これらのアカウントは FUserOnlineAccount データとして返されます。 特定のプレイヤーがリストに載っているかどうかを確認するために、 GetUserAccount を呼び出すことができます。このプレイヤーがリストに存在する場合は、プレイヤーの FUniqueNetId を既知の FUserOnlineAccount にマップします。

プレイヤーの表示名

一部のオンライン サービスでは、ユーザーが自分のアカウントのログイン名とは異なる「表示名」または「ニックネーム」を入力することができます。 この名前は、ゲームのチャット、スコアボード、キャラクター ラベル、または同様のユーザー向けの表示に使用するアカウント名よりも優先される場合があります。 プレイヤーの FOnlineUser を使用して GetDisplayName を呼び出し、ローカルにキャッシュされたユーザー アカウント データから目的のプレイヤーの表示名またはニックネームを取得します。

ユーザー特権

オンライン サービスはゲートウェイとしても機能します。つまり、特定のオンライン機能、特に他のサービス ユーザーとオンラインでゲームをプレイする機能へのアクセスを許可または拒否することができます。 GetUserPrivilege 関数により、ユーザーが特定の特権 (EUserPrivileges で定義) を持っているかどうかが報告されます。 この関数ではオンライン サービスに問い合わせる必要があり、FOnGetUserPrivilegeCompleteDelegate を介してユーザーのリクエストに応答し、EPrivilegeResults 型の結果を返します。