EOS Online Subsytem (OSS) プラグイン

Epic Online Services プラグインの概要。

Windows
MacOS
Linux

Epic Online Services (EOS) は、アチーブメント、リーダーボードなどのプレイヤー中心の機能、ゲーム内アイテムの購入機能などの商業的な機能、音声通信、フレンド リストなどのソーシャル機能をはじめとする、さまざまなクロスプラットフォームのオンライン機能を提供する、エンジンに依存しないシステムです。

Unreal Engine では、EOS SDK を直接使用してコードを書く必要なく、Online Subsystem (OSS) プラグインを使用して、プロジェクトに EOS を実装することができます。Online Subsystem プラグインでは、Unreal Engine で公開されているすべてのオンライン サービスに共通のインターフェースを提供します。この機能を使用するには、デベロッパーは Epic アカウント サービス (EAS) で製品を登録および設定してから、いくつかのプラグインを有効にして、設定し、OSS インターフェースを介して EOS 機能を公開する必要があります。

EAS および EOS の詳細については、「Epic Online Services に関するデベロッパー ドキュメント」を参照してください。

設定

プロジェクトで EOS の活用を開始するには、まず EOS OSS プラグインを有効にする必要があります。EOS OSS プラグインは、[Edit (編集)] メニューに移動して [Plugins (プラグイン)] メニューを選択し、プラグイン ブラウザ を開くと見つかります。

プラグイン ブラウザ で、Online Subsystem EOS および EOS Shared を見つけて有効にします。EOS によるボイス チャット サポートを追加する場合は、EOS RTC IVoiceChat プラグインも有効にします。

プラグインを有効にしたら、プラグインを設定する必要があります。次の設定手順の一部では、製品関連の設定や、製品を EOS に登録した後に受け取った識別子が必要です。

EOS に製品を登録していない場合は、 Epic Developer Portal登録 できます。

EOS Settings (EOS 設定)

次の設定は、EOS のプラットフォーム固有の設定に関するものです。詳細については、「EOS API Reference」の「EOS_Platform_Options」データ構造体に関するページを参照してください。

  • Cache Dir (キャッシュ ディレクトリ): EOS が一時データを格納する場所です。

  • Default Artifact Name (デフォルト アーティファクト名): Epic Games ストア でシッピングされ、Epic Games Launcher を介して実行されるゲームでは、設定データの検索にアーティファクト名を使用します。このフィールドでは、デフォルトの名前を指定します。

  • Tick Budget in Milliseconds (ティック割り当て (ミリ秒単位)): この設定では、EOS の操作に対してティックごとの時間制限を設定します。この値をゼロに設定すると、制限を解除できます。

  • Enable Overlay (オーバーレイを有効化): すべてのオーバーレイを有効化または無効化するために使用します。一部のオーバーレイは、Epic Games ストアでシッピングされるタイトルでのみ有効な e コマース用オーバーレイなど、プラットフォーム固有である場合があります。

  • Enable Social Overlay (ソーシャル オーバーレイを有効化): ソーシャル オーバーレイでは、フレンド、アチーブメント、追加の認証ステップなどの情報が表示されます。他のオーバーレイを有効にしたまま、特定のオーバーレイを個別に無効にできます。この設定は、[Enable Overlay] がオフになっている場合には作用しません。

  • Require Being Launched by Epic Games Store (Epic Games ストアでの起動が必要): Epic Games ストアでシッピングされるタイトルでこの設定を有効にすると、ゲームを起動する前に所有権が確認され、Epic Games Launcher からの起動が必要になります。エンドユーザーが他の方法でゲームを起動しようとすると、ゲームのそのプロセスが終了して、ゲームが Epic Games Launcher で再起動されます。

  • アーティファクト: Epic Games ストアでは、1 つの製品に対して複数のアーティファクトをサポートしています。たとえば、開発用、テスト用、および顧客が使用するリリース バージョン用にそれぞれの内部アーティファクトを製品に設定できます。この配列には、それぞれ指定されたアーティファクトの設定が含まれています。この配列には 1 つ以上のアーティファクトが含まれており、[Default Artifact Name] の値が配列要素の 1 つの名前と一致している必要があります。これらの設定の詳細については、「アーティファクト設定」を参照してください。

アーティファクト設定

ここで設定するアーティファクト設定は、登録した製品の設定と一致している必要があります。製品の設定 は、Developer Portal (ログインが必要) で確認できます。

  • Artifact Name (アーティファクト名):これは、アーティファクトの名前です。たとえば、MyGameStaging または MyGameRelease です。

  • Client ID (クライアントID):この ID は、先頭の 3 文字が「xyz」である必要があります。

  • Client Secret (クライアント シークレット): クライアント ID を確認するために使用するパスワードです。

  • Product ID (製品 ID):EOS SDK はこの ID を使用して製品を識別します。

  • Sandbox ID (サンドボックス ID):アーティファクトは、この ID 値を持つサンドボックスに属します。通常、製品が持つサンドボックス ID は 1 つのみです。

  • Deployment ID (デプロイメント ID):デプロイメント ID は、アーティファクトごとに異なります。たとえば、MyGameStaging アーティファクトおよび MyGameRelease アーティファクトがある場合、それぞれが独自のデプロイメント ID を持ちます。

  • Encryption Key (暗号化キー):EOS サービスにデータをアップロードする際、この 64 バイトの 16 進数文字列がデータの暗号化に使用されます。他の設定とは異なり、EOS ではこの暗号化キーを管理しません。また、暗号化キーは製品の設定にも格納されません。このキーはゲームに対して一意であり、ユーザーのデータ プライバシーを保護するため、このキーが Epic Games に知らされることはありません。

EOS Plus プラグインの設定

EOS Plus は実験段階の OSS プラグインで、EOS SDK の機能と他のオンライン プラットフォーム (Xbox Live、PlayStation、Steam など) の機能をクロスプレイに対応した単一の Online Subsystem に結合します。

このプラグインを使用するには、まずサポートする プラットフォーム ごとに Developer Portal で 製品 の登録と設定を行う必要があります。EOS SDK のプラットフォーム固有のバージョンには、サポートしているプラットフォームの機能を使用するための詳細な説明が含まれています。

このプラグインを使用する前に、次の設定を行う必要があります。

  • Use Epic Account Services (Epic アカウント サービスを使用):この設定が有効な場合、EOS OSS プラグインがプラットフォーム固有の認証トークンを使用して、ユーザーが Epic アカウントに自動的にサインインします。自動的にサインインするには、ユーザーが自分の Epic アカウントを他のプラットフォームのアカウントにリンクしている必要があります。リンクしていない場合は、ログがこのイベントをエラーとして報告します。このプロセスを完了させるために、ユーザーを アカウントのリンク ページ にリダイレクトすることができます。このページで、ユーザーは、[Accounts (アカウント)] タブからログインして、自分でアカウントのリンク プロセスを完了することができます。

  • User Cross-platform User IDs (ユーザーのクロスプラットフォーム ユーザー ID):この設定では、プラットフォーム固有の認証トークンを使用して EOS Connect の機能を有効にします。

  • Mirror Stats to EOS (統計情報を EOS に反映する):このオプションが有効な場合、EOS Plus ではすべての 統計 情報の複製を EOS OSS プラグインに送信します。

  • Mirror Achievements to EOS (アチーブメントを EOS に反映する):このオプションが有効な場合、EOS Plus ではすべての アチーブメント データの複製を EOS OSS プラグインに送信します。

  • Use Crossplay Sessions (クロスプレイ セッションを使用):この設定は、クロスプラットフォームのネットワーク ゲームをプレイするために必要です。また、EOS の Sessions インターフェイス を主要なセッション インターフェースにします。

  • Mirror Presence to EAS (プレゼンスを EAS に反映する):このオプションでは、EOS Plus プラグインが プレゼンス データを EOS OSS プラグインにも送信するかどうかを決定します。プレゼンス データは、Epic アカウント サービスを使用する場合にのみ利用できます。

プロジェクト設定

Developer Portal で製品を設定して、プラグインを設定したら、プロジェクトの「DefaultEngine.ini」ファイルでいくつかの設定を行う必要があります。

エンジンの設定

次の手順を実行して、Online Subsystem EOS プラグインを使用するようにプロジェクトを設定します。

  1. Online Subsystem EOS を有効にするため、[OnlineSubsystemEOS] セクションで次の行を確認または追加します。

    bEnabled=true
  2. EOS がデフォルトのプラットフォームであることを確認するため、[OnlineSubsystem] セクションで次の行を確認または追加します。

    DefaultPlatformService=EOS
  3. エンジンが EOS NetDriver を使用するように、[/Script/Engine.GameEngine] セクションで次の行を確認または追加します。

+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

  1. OS の P2P ソケット機能をプレイヤーがホストする対戦で使用する場合は、[/Script/OnlineSubsystemEOS.NetDriverEOS] セクションで次の行を確認または追加します。

    bIsUsingP2PSockets=true

これで、「DefaultEngine.ini」ファイルの各セクションには次の各行が含まれています。

    [OnlineSubsystemEOS]
    bEnabled=true

    [OnlineSubsystem]
    DefaultPlatformService=EOS

    [/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

    [/Script/OnlineSubsystemEOS.NetDriverEOS]
    bIsUsingP2PSockets=true

EOS Plus の設定 (オプション)

プロジェクトで、EOS と他のオンライン プラットフォームとの間でクロスプレイを実装するように設定するには、さらに次の変更を実行します。

  1. [OnlineSubsystemEOSPlus] セクションで次の行を特定して、EOS Plus プラグインが有効になっていることを確認します。

    bEnabled=true
  2. [OnlineSubsystem] セクションで、デフォルトのオンライン プラットフォームを EOS から EOSPlus に変更して、他のオンライン プラットフォームの名前を追加します。この例では、2 つ目のプラットフォームとして Steam を使用しています。変更が完了すると、次のような行になります。

    DefaultPlatformService=EOSPlus
    NativePlatformService=Steam
  3. プラットフォーム間のインタラクションを可能にするためには、エンジンが EOS および EOSPlus のネットワーク ID タイプに互換性があることを認識している必要があります。次の行を [/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl] セクションに追加します。

    +CompatibleUniqueNetIdTypes=EOS
    +CompatibleUniqueNetIdTypes=EOSPlus

これで、「DefaultEngine.ini」ファイルの各セクションに次の行が追加されています。また、Steam を別のオンライン プラットフォーム名に置き換える必要がある場合があります。

[OnlineSubsystemEOSPlus]
bEnabled=true

[OnlineSubsystem]
DefaultPlatformService=EOSPlus
NativePlatformService=Steam

[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
+CompatibleUniqueNetIdTypes=EOS
+CompatibleUniqueNetIdTypes=EOSPlus

[OnlineSubsystem] セクションの DefaultPlatformService 設定は、以前に設定した値を置き換えます。

EOS 音声通信

ロビー セッションを設定して、リンクしたボイス チャット ルームを作成することができます。ロビーに参加したユーザー (ロビー作成者を含む) は自動的にボイス チャット ルームに参加します。これを設定するには、FOnlineSessionSettings::bUseLobbiesIfAvailable および FOnlineSessionSettings::bUseLobbiesVoiceChatIfAvailable の両方の値を true に設定します。

個々のユーザーは、FOnlineSubsystemEOS::GetVoiceChatUserInterface を使用して取得できる IVoiceChatUser インターフェースを使用して、ボイス チャット ルームのインタラクションを制御できます。

IVoiceChatUser インターフェースを使用すると、ローカル ハードウェア、オンライン チャット ルーム、および他のボイス チャット ユーザーとのインタラクションが可能になります。入力/出力デバイスの選択、音量の変更、特定のユーザーのブロック/ミュート、さらには、プレイヤーのチャンネルへの参加/退出、会話の開始/停止などのイベントの登録を行うことができます。

FOnlineSubsystemEOS::GetVoiceChatUserInterface を使用すると、初期化、接続、ログインなどが自動的に処理されます。ただし、IVoiceChat の統合方法に応じて、引き続き、信頼済みサーバー チャンネルに手動で参加/退出することができます。詳細については、「EOSVoiceChat プラグイン」の「信頼済みサーバーの統合」セクションを参照してください。

ログイン

ユーザー認証を処理するメソッドは、基本となる OnlineSubsystemEOS プラグインの利用の有無や、このプラグインが OnlineSubsystemEOSPlus とともに使用されているかどうかによって異なります。オンラインの ID インターフェースでログイン処理を開始するメソッドは、2 つあります。

メソッド

説明

AutoLogin

ローカル ユーザー数を渡す必要があります。

Login

FOnlineAccountCredentials オブジェクトが必要です。

次のセクションでは、前述の 2 つのプラグインで両方のメソッドを使用し、ログイン済みユーザーを把握する方法について説明します。

OnlineSubsystemEOS を使用してログインする

有効なローカル ユーザー数を入力し、さらに Login メソッドでは FOnlineAccountCredentials オブジェクトを渡す必要があります。この構造体には、次の 3 つのフィールドがあります。

  • Type (タイプ)

  • Id

  • Token (トークン)

これら 3 つのフィールドは、その値に応じて OnlineSubsystemEOS プラグインで使用する認証メソッドを示します。さまざまな認証のタイプを設定する方法の例を、以下に示します。

Developer

  • Type:Developer

  • Id:localhost: (ここで は、Dev Auth ツールで指定された ポート)

  • Token:CredentialsName

このメソッドでは、EOS デベロッパー認証ツール (Dev Auth ツール) が実行されている必要があります。次の「デベロッパー認証ツール」を参照してください。

Dev Auth ツールの設定後、どの ポート および 資格情報の名前 を使用したかを覚えておいてください。これらのポートおよび認証情報の名前は、上記のとおり FOnlineAccountCredentials オブジェクトの Id フィールドおよび Token フィールドを入力する際に必要になるためです。

Login の呼び出しが実行されると、この Login メソッドが開かれ、ユーザーは Epic Games のアカウント情報を入力するよう求められます。

ユーザーがそのブラウザで Epic Games にすでにログイン済みの場合、対象となる製品のスコープに同意するよう求められます (このステップは、ユーザーの初回ログイン時にのみ発生します)。

これが、開発時にデスクトップ プラットフォームで OnlineSubsystemEOS を使用する場合に推奨されるメソッドです。

Exchange Code

  • Type:"ExchangeCode"

  • Id:

  • Token: "<exchange code>" (ここで <exchange code> は Epic Launcher によって提供される 交換コード)

この方法は、Epic Launcher によって提供される交換コードを必要とするため、Epic Launcher からアプリケーションが起動されている場合にのみ使用できます。この方法では Dev Auth ツールが実行されている必要はなく、ゲームの出荷時バージョンで使用できます。

ログイン成功

これらの方法のいずれかが正常に完了した場合、ログイン プロセスは必要なすべての EOS 通知サービス (ログイン ステータス、フレンド、自身のプレゼンスの更新、および認証の更新) を登録して終了し、次の登録済みデリゲートをトリガーします。

メソッド

説明

OnLoginComplete

ログインが正常に成功した場合、パラメータが含まれます。また、新規に認証されたユーザーの場合は UniqueNetId が含まれます。

OnLoginStatusChanged

パラメータは以前および現在のログイン ステータスに対応します。また、新規に認証されたユーザーの場合は UniqueNetId に対応します。

OnlineSubsystemEOS を使用した AutoLogin

AutoLogin メソッドが OnlineSubsystemEOS で動作するには、ゲームの実行においてコマンド ライン パラメータを追加する必要があります。このパラメータは、 FOnlineAccountCredentials オブジェクトの 3 つのフィールドに直接変換され、変換されない場合は Login メソッドに渡されます。

AutoLogin が動作するには、(アカウント ポータル内や交換コードの方法などで) 一部使われていないものがあるとしても、 3 つのパラメータすべてが設定されている必要 があります。パラメータは次のとおりです。

  • Type = AUTH_TYPE

  • Id = AUTH_LOGIN

  • Token = AUTH_PASSWORD

前のセクションで説明した 3 つのログイン方法に必要なパラメータの例の一部を、以下に示します。これらがゲームの実行コマンドに追加された場合、ログインは正常に処理されます。ただし、前のセクションで説明した 要件 に従っている必要があります (Dev Auth ツール、Epic Games Launcher)。

Developer

-AUTH_TYPE="Developer" 
-AUTH_LOGIN="localhost:<port>" 
-AUTH_PASSWORD="CredentialsName"

ExchangeCode

-AUTH_TYPE="ExchangeCode" 
-AUTH_LOGIN="Empty" 
-AUTH_PASSWORD="Exchange_Code_From_Launcher"

OnlineSubsystemEOSPlus を使用したログイン

OnlineSubsystemEOSPlus で AutoLogin を使用する場合と Login を使用する場合に違いはありません。さらに Login の場合、一部のいくつかのプラットフォームでは FOnlineAccountCredentials オブジェクトに特定の値があれば済みます。

Nintendo Id と Nintendo NSA Id

OnlineSubsystemEOSPlus を使用して Nintendo プラットフォームでログインを試行する場合、外部認証プロセスでデフォルトで使用される Nintendo NSA Id トークンの代わりに Nintendo Id トークンを使用するには、FOnlineAccountCredentials::Type を "NintendoAccount" に設定する必要があります。

EOS SDK には 2 つの異なる認証システムが用意されています。EAS と呼ばれる Epic Account Services (Epic アカウントを必要とするフレンド、プレゼンス、およびその他のソーシャル機能用) と EOS と呼ばれる Epic Online Services (Epic アカウントを必要としないセッション、ロビー、リーダーボード、およびその他のゲーム関連の機能) です。

プロジェクトでゲーム関連の機能を最大限活用するには、EOS 認証が正常に処理されている必要がありますが、一方で EAS 認証は任意です。プロジェクトでいずれかの認証を使用するよう指定するため、エディタの [Project Settings (プロジェクト設定)] の下にある [Online Subsystem EOS Plugin] セクションの [Crossplay Settings (クロスプレイ設定)] セクションには 2 つのオプションがあります。

設定

説明

Use Crossplatform User IDs (クロスプラットフォーム ユーザー ID を使用)

EOS 認証を有効にします。また、EOS 機能を利用する場合に必要です。

Use Epic Account Services (Epic アカウント サービスを使用)

EAS 認証を有効にします。また、Epic アカウントのフレンド機能およびプレゼンス機能を EOS サービスに追加します。一部のプラットフォームでは、この追加機能をオプトインする必要があります。

外部認証

OnlineSubsystemEOSPlus で EOS 認証処理に使用される Login メソッドは、OnlineSubsystemEOS で使用されるものとは異なります。

まず、Login メソッドに渡される FOnlineAccountCredentials オブジェクトのコピーが作成されます (オプション値が設定されている場合)。次に、システムによってネイティブ プラットフォームのユーザー ログイン プロセスが開始されます (この処理がそれまでに実行されていない場合)。これは、選択した Steam アカウントを使用してログインするか、Xbox オーバーレイでユーザーの選択をするよう求める処理です。この最初のプラットフォームのログインが正常に完了しない場合、ログイン プロセスは停止され、エラーに関する情報を使用し、登録済みの OnLoginComplete デリゲートがトリガーされます。

この最初のプラットフォームのログインが正常に完了すると、前のセクションで説明した 2 つの設定のいずれかが有効になっている場合、最初に保存した認証情報を使用して EOS ログインが開始されます。どちらが設定されているかにかかわらず、この新しいログイン プロセスの最初の部分は同じであり、ネイティブ プラットフォームのサブシステムに対して外部認証トークンのクエリが実行されます。

Xbox

一部のプラットフォームでは、外部認証のために何らかのバックエンドの設定が必要になる場合があります。たとえば Xbox では、こちらの 記事 に記載されているように、証明書利用者を構成し、有効なエンドポイントを作成することで、パートナー センターでシングル サインオンを構成する必要があります。エンドポイントのアドレスを作成したら、GDK 用に対応する Engine のコンフィギュレーション オプションにそのアドレスを設定する必要があります。

    `[OnlineSubsystemGDK]`
    LoginXSTSEndpoint="https://endpoint.address.com/endpoint/address/"
その他のプラットフォームに必要な追加の設定例は、Engine\Platforms\SelectedPlatform\Source\ThirdParty\EOSSDK\Documentation\ 配下の対応する PDF ドキュメント内に含まれている場合があります。

外部認証トークンが正常に取得されると、有効になっている設定に応じて、EOS ログインは異なる方法で処理されます。その処理方法を、次のセクションで説明します。

クロスプラットフォーム ユーザー ID を使用する

この設定が有効になっていて [Using Epic Account Services] が有効になっていない場合、外部認証トークンが Login メソッドに必要な認証情報のセットに追加されます。また、EOS は EOS_Connect_Login メソッドを呼び出すことで認証を試みます。

ここで、EOS プロジェクトのデベロッパー ポータルの追加設定がいくつか必要になります。EOS 認証を正常に完了するため、この記事で説明しているように ID プロバイダのリストに対象のプラットフォームが追加されている必要があります。ID プロバイダを正しく設定すれば、EOS 認証は正常に完了し、EOS のあらゆるゲーム機能にアクセスできるようになります。

Epic アカウント サービスを使用する

この設定が有効になっている場合、[Using Crossplatform User IDs] も有効になっているかのようにログイン プロセスが続行されます。外部認証トークンは Login メソッドに必要な認証情報のセットに追加されます。また、EOS は EOS_Auth_Login メソッドを呼び出すことで認証を試みます。このメソッドでは、EOS 認証に使用されるプラットフォーム アカウントに Epic Games アカウントがリンクされている必要があります。

現時点では、ログイン プロセス中の アカウント リンクSteam プラットフォームでのみ利用できます。また、その他のプラットフォームでログインを試行すると、ログに次の認証エラーが記録されます。

ログのエラー

LogEOSSDK:Warning:LogEOS:Error response received from backend.ServiceName=[OAuth], OperationName=[TokenGrant], Url=[<Redacted>], HttpStatus=[400], ErrorCode=[errors.com.epicgames.account.oauth.authorization_pending], NumericErrorCode=[1012], ErrorMessage=[The authorization server request is still pending as the end user has yet to visit and enter the verification code.], CorrId=[...]

この機能は、その他のプラットフォームでは将来のリリースで使用可能になる予定です。現時点では、Epic Games の [Account Settings (アカウント設定)] の [Connections (接続)] セクションにある [Accounts (アカウント)] タブから手動でアカウントをリンクできます。

リンク プロセスで使用した Epic アカウントでは、アプリケーション スコープに同意する必要があります (「OnlineSubsystemEOS を使用してログインする」に記載)。同意しないと、以下の他のエラーがログに記録されます。

ログのエラー

LogEOSSDK:Warning:LogEOS:Error response received from backend.ServiceName=[OAuth], OperationName=[TokenGrant], Url=[<Redacted>], HttpStatus=[400], ErrorCode=[errors.com.epicgames.oauth.scope_consent_required], NumericErrorCode=[58005], ErrorMessage=[The user has not consented to required scopes.], CorrId=[...]

アカウントのリンクが完了し、スコープに同意し、EOS 認証が適切に構成されていれば、ログインは正常に完了し、EAS のあらゆる追加機能をアプリケーションで使用できます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる