Gamebase Unreal SDKの使用環境および初期設定の説明を行います。
[参考]
Unrealサポートバージョン
- UE 4.27~UE 5.7
- 他のバージョンのサポートが必要な場合はサポートへお問い合わせください。
選択したプラットフォームでサポートしないGamebase APIを呼び出す時は、下記のエラーがコールバックで返り、コールバックがない場合はWarningログが出力されます。
各APIでサポートするプラットフォームは、下記のアイコンで区別します。
API
Supported Platforms ■ UNREAL_ANDROID ■ UNREAL_IOS ■ UNREAL_WINDOWS
Pluginsフォルダを作成し、ダウンロードしたSDK内部 NHNCloudフォルダを追加します。UnrealエディタでSettings > Pluginsウィンドウを開き、Project > NHN Cloud > Gamebase Pluginプラグインを探して有効にします。
PrivateDependencyModuleNames.AddRange(
new[]
{
"Gamebase",
}
);

Google Playサービスに認証と決済を行うには、Distributionの設定が必要です。 詳細な内容は、以下の文書を参照してください。
Sign in with Apple使用時、プロジェクトで/Config/Android/AndroidEngine.iniファイルに下記の内容を追加してGPGSのApplication IDを入力します。
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
GamesAppID=
<gradleProperties>
<insert>
android.useAndroidX=true
android.enableJetifier=true
</insert>
</gradleProperties>
<buildGradleAdditions>
<insert>
android {
defaultConfig {
multiDexEnabled true
}
}
</insert>
</buildGradleAdditions>
<androidManifestUpdates>
<addAttribute tag="application" name="android:name" value="androidx.multidex.MultiDexApplication"/>
</androidManifestUpdates>
Gamebase SDK for Unrealを使用するにはUE4 Githubソースコードを使用する必要があり、Epic gamesに会員登録した後、Githubアカウントを接続するとUnrealEngine repositoryが表示されます。
See below for relevant guides.
!重要このプロセスを無視すると、以下のガイドリンクが正常に動作しなかったりGamebase SDK for Unrealを使用できません。

AdditionalPlistDataでInfo.plistを直接管理する場合は有効化してください。
* IdP別の設定項目は、Game > Gamebase > iOS SDK使用ガイド > はじめに > IdP Settingsを参照してください。
* Enable Contact (Privacy Permissions):カスタマーセンターで添付ファイルを使用するためのカメラ、写真ライブラリ、マイクの権限説明をInfo.plistに追加します。
* Enable Tracking Description:App Tracking Transparency権限リクエストのためのNSUserTrackingUsageDescriptionをInfo.plistに追加します。FacebookAppId, FacebookClientToken, FacebookDisplayName
* Google: GoogleClientId, GoogleReservedClientId
* Weibo: WeiboAppKeyGamebase Unreal SDK及び外部認証SDKでswiftで開発されたフレームワークをコンパイルするには、Engine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSToolChain.csファイルで下記のコードを追加してください。
// need to tell where to load Framework dylibs
Result += " -rpath /usr/lib/swift"; // 追加コード
Result += " -rpath @executable_path/Frameworks";
Sign in with Appleを使う時、プロジェクトで /Config/IOS/IOSEngine.ini ファイルに下記の内容を追加します。
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableSignInWithAppleSupport=True
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
// Received notification while app is in the foreground
HandleReceivedNotification(notification);
completionHandler(UNNotificationPresentationOptionNone);
}
次のように修正する必要があります。
// AS-IS
completionHandler(UNNotificationPresentationOptionNone);
// TO-BE
completionHandler(UNNotificationPresentationOptionAlert);
次のようなイシューによりRich Push Notification機能を使用できません。
iOS SDKで発生するWarningメッセージがUnrealビルド時、エラーに変換されてビルドに失敗する現象が発生する場合はEngine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSToolChain.csファイルのclangコンパイルオプションコードをコメント処理してください。
// Result += " -Wall -Werror";
UE4で使用中のPLCrashReporterがarm64e architectureをサポートしておらず、該当architectureを使用するデバイスでメモリアドレス値を取得できないイシューがあります。
NHN Cloud Log & Crash Searchでクラッシュ分析を行うゲーム開発会社は、次のガイドを参照してUE4内部PLCrashReporterを修正する必要があります。

[注意]
NHNWebViewプラグインとWeb Browserプラグインは同時に使用することができず、両方のプラグインが有効になっている場合、ビルド時にエラーが発生します。
[注意]
Online Subsystem Steamを使用せずにSteamworksのみを使用する場合、Gamebase内部でSteamworksを使用した認証情報を受け取る作業のみを行い、Steamworks SDKプロセスは行われません。 Steamworks SDKを直接適用する場合、初期化、アップデート、終了などの必須的な処理については直接実装する必要があります。
Online Subsystem EOSプラグインが有効であり、Engine.iniのOnlineSubsystemEOSセクション内のbEnabledが有効になっている場合、Online Subsystem EOSを使用していると見なします。
[OnlineSubsystemEOS]
bEnabled=True
EOS SDKはエンジンパス内のEngine/Source/ThirdParty/EOSSDKモジュールを使用します。
Online Subsystem EOSでログイン認証タイプのPersistentAuthタイプをサポートするには、UE 4.27ではコードの修正が必要です。
FUserManagerEOS::Loginメソッド内のAccountCredentials.Typeの文字列を比較する条件文を探し、PersistentAuthログイン用のコードを追加する必要があります。else if (AccountCredentials.Type == TEXT("persistentauth"))
{
// Use locally stored token managed by EOSSDK keyring to attempt login.
Credentials.Type = EOS_ELoginCredentialType::EOS_LCT_PersistentAuth;
Credentials.Id = nullptr;
Credentials.Token = nullptr;
}
UE 4.27でOnline Subsystem EOSを使用する場合、ビルドエラーが発生するため修正が必要です。
EOS SDKのハンドルを取得するために
OnlineSubsystemEOS.hヘッダーをインクルードするとビルドエラーが発生するため、OnlineSubsystemEOSプラグインのPrivateフォルダ内のヘッダーファイルをPublicフォルダへ移動する必要があります。 (参考: EOSエラーに関するお問い合わせ) - SocketSubsystemEOS.h - EOSSettings.h - EOSHelpers.h - [Platform]/[Platform]EOSHelpers.h
Online Subsystem EOSを使用しない場合、EOSSDKモジュールを使用して別途EOSの初期化を行い、EOS SDKのプラットフォームハンドルを設定する必要があります。
プラットフォームハンドル設定用のモジュール追加
PrivateDependencyModuleNames.AddRange(
new[]
{
"GamebaseSharedEOS"
}
);
プラットフォームハンドル設定
#include "GamebaseSharedEOS.h"
void USample::SetEosPlatformHandle(UGameInstance* GameInstance, EOS_HPlatform PlatformHandle)
{
if (const auto GamebaseSharedEOS = UGameInstance::GetSubsystem<UGamebaseSharedEOS>(GameInstance))
{
// EOS SDK初期化後、プラットフォームハンドルを取得し、Gamebase SDKに渡す
GamebaseSharedEOS->SetPlatformHandle(PlatformHandle);
}
}
Androidサポート時、ログインレスポンスを受け取るため、EOS SDKガイドを参考にしてエンジン内のEOSSDKモジュール内のEOSSDK_strings.xmlファイルに該当する値を登録する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- EOS SDK requires the Client ID to be in lowercase. -->
<string name="eos_login_protocol_scheme">eos.yourclientidhere</string>
</resources>
GamebaseでサポートしないAPIはDeprecate処理します。 DeprecatedされたAPIは、次の条件を満たすと、事前告知を行わずに削除される場合があります。
5回以上のマイナーバージョンアップデート
5か月経過