Android Studio を使用して Android プロジェクトで EOS SDK を実装する方法を説明します。
Epic Online Services (EOS) SDK を実行するには、ターゲット プラットフォームで EOS ランタイムを確実にロードして実行するために、プロジェクトの関連付け、パッケージ化、ロードのプロセスにおいて、前提条件となる複数の手順に従う必要があります。このページでは、上記のプロセスに関する一般的な情報を提供し、「プラットフォーム別のドキュメント」ではプラットフォームごとの要件についてより具体的な情報を提供します。また、このページでは EOS SDK で Unreal Build System を使用する方法についても扱います。
EOS SDK とコンソール (PlayStation、Xbox、Nintendo Switch など) に関するドキュメントについては、組織アクセスを設定 すると、ファーストパーティ認証後にドキュメントが SDK の中に含まれます。
スレッド セーフ
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 を使用している場合、「<Project>.Build.cs
」ファイルで以下の手順に従うと Unreal Build Tool でライブラリのリンクとパッキングを管理できます。
ライブラリのリンクタイム名を
PublicAdditionalLibraries
に追加します。ライブラリのリンクタイム ファイルを
RuntimeDependencies
に追加します。
たとえば、「<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 は malloc
、free
、realloc
などの標準アロケータを使用します。
ただしコンソールは例外で、カスタム アロケータが必要となります。コンソールでのメモリ管理は複雑であり、プラットフォーム依存の高いプロセスです。予期せぬ挙動を防ぐため、コンソールではすべてのメモリ管理が確実にアプリケーションから行われるように、これらのカスタム アロケータの提供が必要とされています。現在のプラットフォームにおけるメモリ管理機能の詳細については、SDK ドキュメントの冒頭の部分を参照してください。
Unreal でのメモリ関数
Unreal Engine で EOS SDK を使用する場合、EOS_InitializeOptions
に提供されるアロケータを FMemory::Malloc
、FMemory::Realloc
、FMemory::Release
にマップすることができます。
プラットフォーム別のドキュメント
以下のリンクは、ここまでのプロセスを各プラットフォームで行うためのガイドラインです。