Platform Implementation for EOS

コンソールで EOS SDK を実装するためのガイドラインと参考情報です。

5 分で読めます

Epic Online Services (EOS) SDK を実行するには、ターゲット プラットフォームで EOS ランタイムを確実にロードして実行するために、プロジェクトの関連付け、パッケージ化、ロードのプロセスにおいて、前提条件となる複数の手順に従う必要があります。このページでは、上記のプロセスに関する一般的な情報を提供し、「プラットフォーム別のドキュメント」ではプラットフォームごとの要件についてより具体的な情報を提供します。また、このページでは EOS SDK で Unreal Build System を使用する方法についても扱います。

EOS SDK とコンソール (PlayStation、Xbox、Nintendo Switch など) に関するドキュメントについては、組織アクセスを設定 すると、ファーストパーティ認証後にドキュメントが SDK の中に含まれます。

コンソール プラットフォーム バージョン

現在の EOS SDK は、以下のコンソール プラットフォーム バージョンをサポートしています。

コンソール プラットフォーム 最新バージョン 最小バージョン
PlayStation 4 Orbis v10.008.001 Orbis v9.508.001
PlayStation 5 Prospero v6.00.00.38 Prospero v5.00.00.33
Xbox GDK June 2022 QFE2 (220602) March 2022 QFE1 (220301)
Nintendo Switch 14.3.0 13.3.2_4.6.6

スレッド セーフ

SDK はスレッドセーフとはみなされません。

すべての呼び出しは同じスレッド上で行う必要があります。別のスレッドから呼び出した場合、一部の関数はアサートおよびクラッシュします。

ビルドする

すべての EOS SDK ヘッダは eos_base.h ヘッダをインクルードしますが、eos_base.h を呼び出すために追加設定が必要となるプラットフォームもあります。追加設定が必要な各プラットフォームは「プラットフォーム別のドキュメント」の中に記載されており、この追加設定用の <Platform>/eos_<Platform>_base.h があります。

eos_platform_prereqs.h を使用する

EOS SDK は、クロスプラットフォーム開発をサポートするために eos_platform_prereqs.h を提供しています。eos_platform_prereqs.h を使用するには、特定のプラットフォームを含むために必要なアプリケーションをビルドするときに EOS_BUILD_PLATFORM_NAME マクロを追加します。

その他の EOS SDK ヘッダの前に eos_platform_prereqs.h ヘッダをインクルードします。

たとえば、Unreal Build System を使用している場合は、<Project>.Build.cs ファイルに次のコードを追加します。

if (!Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Unix) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Apple) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Android))
{
AppendStringToPublicDefinition("EOS_BUILD_PLATFORM_NAME",
Target.Platform.ToString());
}

別の EOS インターフェースを使用するときは、次の #includes を追加します。

#include "eos_platform_prereqs.h"
#include "eos_sdk.h"
#include "eos_[interface]_types.h"

eos_[interface]_types.h の部分は、[interface] を使用するインターフェースに置き換えます。

#include "eos_friends_types.h"
#include "eos_auth_types.h"
#include "eos_lobby_types.h"

カスタム クロスプラットフォームの例

eos_platform_prereqs.h がプロジェクトのビルド システムに合わない場合は、カスタム コンパイラから提供されるマクロを参照することができます。以下はその例です。

#if defined(__THECOMPILER__)
#include "ThePlatform/eos_ThePlatform_base.h"
#elif defined(__SOMECOMPILER__)
#include "SomePlatform/eos_SomePlatform_base.h"
#endif
#include "eos_sdk.h"
#include "eos_friends_types.h"

単一プラットフォームの例

単一プラットフォームが EOS フレンド サービス用に追加の #includes が必要な場合は以下を使用します。

#include "ThePlatform/eos_ThePlatform_base.h"
#include "eos_sdk.h"
#include "eos_[interface]_types.h"

eos_[interface]_types.h の部分は、[interface] を使用するインターフェースに置き換えます。

#include "eos_friends_types.h"
#include "eos_auth_types.h"
#include "eos_lobby_types.h"

リンクする

プロジェクトをリンクする際は、EOS SDK のリンクタイム ライブラリを、プロジェクトのリンク コマンドに追加する必要があります。ほとんどのプラットフォームでは、ランタイム ライブラリの手動ロードも必要となります。

Unreal Build System とリンクする

Unreal Engine を使用している場合、「&lt;Project>.Build.cs」ファイルで以下の手順に従うと Unreal Build Tool でライブラリのリンクとパッキングを管理できます。

  1. ライブラリのリンクタイム名を PublicAdditionalLibraries に追加します。
  2. ライブラリのリンクタイム ファイルを RuntimeDependencies に追加します。

たとえば、「&lt;Project>.Build.cs」ファイルに以下のようなコードを追加します。

PublicAdditionalLibraries.Add(LibraryLinkName);
string RuntimeLibrarySourcePath = Path.Combine(SDKBinariesDir, RuntimeLibraryFileName);
string RuntimeLibraryTargetPath = Path.Combine(ProjectBinariesDir, RuntimeLibraryFileName);
RuntimeDependencies.Add(RuntimeLibraryTargetPath, RuntimeLibrarySourcePath, StagedFileType.NonUFS);

パッケージ化する

一般的には、ゲームの実行ファイルと同じディレクトリに EOS SDK のランタイム ライブラリを配置することで、ゲームの実行時にライブラリが確実に見つかるようになります。一部のプラットフォームでは、ライブラリを指定のディレクトリに配置する必要があります。詳細はプラットフォーム固有のページを確認してください。

ロードする

一部のプラットフォームでは、ランタイム時に EOS SDK のダイナミック モジュールを明示的にロードする必要があります。各プラットフォームでこれを行う詳しい方法については、プラットフォーム固有のページを参照してください。プロセスが示されていない場合は明示的なロードは必要ありません。

Unreal でロードする

Unreal Build Tool を使用してゲームのパッケージ化を設定する限り、すべてのプラットフォームで同じプロセスを使用できます。モジュールのロードは FPlatformProcess::GetDllHandle を使用し、モジュールのアンロードは FPlatformProcess::FreeDllHandle を使用します。

メモリ関数

EOS SDK では、EOS_InitializeOptions を介してカスタム アロケータを提供するときに、開発したメモリ管理システムを使用することができます。アロケータが提供されない場合は、EOS SDK は mallocfreerealloc などの標準アロケータを使用します。

ただしコンソールは例外で、カスタム アロケータが必要となります。コンソールでのメモリ管理は複雑であり、プラットフォーム依存の高いプロセスです。予期せぬ挙動を防ぐため、コンソールではすべてのメモリ管理が確実にアプリケーションから行われるように、これらのカスタム アロケータの提供が必要とされています。現在のプラットフォームにおけるメモリ管理機能の詳細については、SDK ドキュメントの冒頭の部分を参照してください。

Unreal でのメモリ関数

Unreal Engine で EOS SDK を使用する場合、EOS_InitializeOptions に提供されるアロケータを FMemory::MallocFMemory::ReallocFMemory::Release にマップすることができます。

プラットフォーム別のドキュメント

以下のリンクは、ここまでのプロセスを各プラットフォームで行うためのガイドラインです。

Android で EOS SDK を使用する

Android Studio を使用して Android プロジェクトで EOS SDK を実装する方法を説明します。

Android SDK サンプルを使用する

Android ログイン サンプルの概要です。

iOS で EOS SDK を使用する

Xcode を使用して iOS プロジェクトで EOS SDK を実装する方法

iOS SDK サンプルを使用する

iOS サンプルと Apple ログイン フローの概要

Linux で EOS SDK を使用する

Linux で EOS SDK を実装するための参考情報です。

Mac で EOS SDK を使用する

Mac で EOS SDK を実装するための参考情報です。

Windows で EOS SDK を使用する

Windows で EOS SDK を実装するための参考情報です。

Playstation 4 で EOS SDK を使用する

Playstation 4 で EOS SDK を実装するためのリファレンスです。

Playstation 5 で EOS SDK を使用する

Playstation 5 で EOS SDK を実装するためのリファレンスです。

Switch で EOS SDK を使用する

Nintendo Switch で EOS SDK を実装するための参考情報です。

Xbox XDK で Epic Online Services (EOS) を使用する

Xbox One で EOS SDK を実装するためのリファレンスです。

Xbox GDK で EOS SDK を使用する

Xbox GDK で EOS SDK を実装するためのリファレンスです。