Extend Codegen CLIを使用してExtend Service ExtensionのUnreal SDKプラグインを生成する
注釈:本資料はAI技術を用いて翻訳されています。
概要
この記事では、Extend Codegen CLIテンプレートパックを使用して、AccelByte Unreal SDK用のカスタムサービスプラグインを生成する方法を段階的に説明します。
カスタムサービスモジュールを使用すると、開発者はAccelByte Unreal SDKを活用してカスタムサービスAPIと対話できます。これには、Extend Service Extensionで作成されたサービスや、OpenAPI 2.0仕様を提供するその他のカスタムサービスが含まれます。
Extend Codegen CLIテンプレートパックは、MakefileといくつかのJinjaテンプレートファイルで構成されています。必要なコードを生成するには、単一のmakeコマンドを実行するだけです。このコマンドは、Extend Codegen CLIをトリガーして、カスタムサービスAPIを定義するOpenAPI 2.0 JSONファイルと共にJinjaテンプレートファイルを処理し、対応するコードを生成します。
前提条件
-
以下のツールがインストールされたWindows 11 WSL2またはLinux Ubuntu 22.04。
a. Bash
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
...b. Make
- Ubuntuリポジトリからインストールするには、次を実行します:
sudo apt update && sudo apt install make。
make --version
GNU Make 4.3
...c. Docker (Docker Engine v23.0+)
- Ubuntuリポジトリからインストールするには、次を実行します:
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトして再度ログインします。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
... - Ubuntuリポジトリからインストールするには、次を実行します:
-
AccelByte Unreal SDK用のExtend Codegen CLIテンプレートパックzip。
-
カスタムサービス用の有効なOpenAPI 2.0 JSONファイル。
備考カスタムサービスがExtend Service Extensionを使用している場合、アプリがAccelByte Gaming Services(AGS)にデプロイされると、OpenAPI 2.0 JSONファイルが自動的に生成されます。アクセスするには、AGS
管理ポータルを開き、アプリのアプリ詳細ページに移動し、Open APIドキュメントをクリックして、Swagger UIページの上部にあるJSONファイルのリンクを見つけます。または、AGSにアプリをデプロイする前にOpenAPI 2.0 JSONファイルを取得する必要がある場合は、こちらを参照してください。
Extend Service Extension用のUnreal SDKプラグインを生成する
-
カスタムサービス用のOpenAPI 2.0 JSONファイルを
my-unreal-project/specフォルダに配置します。この例では、ファイル名はguild.jsonです。次に、guild.jsonファイルを次の3つのフォルダにコピーします:Client、GameServer、およびModels。/path/to/my-unreal-project/
|__ ...
|__ MyAwesomeGame.uproject
|__ Config
|__ Content
|__ Plugins
|__ Source
|__ spec/
|__ Client/
| |__ guild.json <
|__ GameServer/
| |__ guild.json <
|__ Models/
| |__ guild.json <
|__ guild.jsonimportantExtend Codegen CLIテンプレートパックは、OpenAPI 2.0 JSONファイル名をサービスの識別子として使用します: ファイル名は好みに応じて変更できますが、コード生成時の問題を避けるため、**すべて小文字のアルファベット(a-z)**を使用することをお勧めします。
注意複数のOpenAPI 2.0 JSONファイルを扱う場合、ファイル間で同一の
basePath値があると、生成されたコードで問題が発生する可能性があります: 各OpenAPI 2.0 JSONファイルが、サービスがデプロイされたときの実際のベースパスと一致する一意のbasePath値を持つようにすることをお勧めします。 -
ダウンロードしたExtend Codegen CLIテンプレートパックを解凍し、抽出されたフォルダに移動して、
makeコマンドを実行してコードを生成します。unzip accelbyte-unreal-sdk-template-pack.zipcd accelbyte-unreal-sdk-template-pack/make all \
CODEGEN_IMAGE_VERSION=x.x.x-alpha \
PROJECT_PATH=/path/to/my-unreal-project \
SPEC_PATH=/path/to/my-unreal-project/spec \
PACKAGE_TYPE=plugin \
ADMIN_API_PATH=/admin/備考CODEGEN_IMAGE_VERSIONはこちらで確認できます。新しいプロジェクトでは、利用可能な最新バージョンを使用することをお勧めします。PROJECT_PATHとSPEC_PATHは手順1から取得します。PACKAGE_TYPEには2つのオプションがあります:- module:
AccelByteUe4Sdkプラグイン内のモジュールとして生成します。 - plugin:
AccelByteUe4SdkCustomizationという名前のスタンドアロンプラグインとして生成します。
- module:
ADMIN_API_PATHが指定されている場合、ServerAPIには指定されたパスを持つエンドポイントが含まれ、ClientAPIには他のすべてのエンドポイントが含まれます。ADMIN_API_PATHが指定されていない場合、ServerAPIとClientAPIの両方に利用可能なすべてのエンドポイントが含まれます。- Unrealプロジェクトに
Pluginsフォルダが存在しない場合は、手動で作成する必要があります。
-
プロジェクトの
.Build.csファイルのPublicDependencyModuleNamesにAccelByteUe4SdkCustomizationを追加します。PublicDependencyModuleNames.AddRange(new string[] { ..., "AccelByteUe4SdkCustomization" }); -
[オプション]
PACKAGE_TYPEがmoduleに設定されている場合、AccelByteUe4Sdk.upluginファイルにAccelByteUe4SdkCustomizationモジュールを追加する必要があります。{
"Name": "AccelByteUe4SdkCustomization",
"Type": "Runtime",
"LoadingPhase": "PreDefault"
}
Extend Service Extension APIをUnrealプロジェクトに統合する
-
AccelByteUe4SdkCustomizationプラグインからAPIをインクルードします。// #include "Api/AccelByte<ApiName>Api.h"
#include "Api/AccelByteGuildApi.h" -
API関数を呼び出します。
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
// ApiClient->GetApiPtr<AccelByte::Api::<ApiName>>()->SomeFunction(...);ヒントカスタムサービスの
ServerUrlやbasePathをオーバーライドする必要がある場合は、Unrealの環境切り替えを有効にするガイドを参照してください。