Nakamaは、モダンなゲームやアプリを強化するために設計されたオープンソースサーバーです。機能には、ユーザーアカウント、チャット、ソーシャル、マッチメーカー、リアルタイムマルチプレイヤーなどが含まれます。
このクライアントは、サーバーを使用して完全なAPIおよびソケットオプションを実装します。 Unreal 4と5をサポートするために、最小限の依存関係を持つC ++で書かれています。
クライアントで問題が発生した場合、デバッグログを有効にして問題を開くと便利です。
完全なドキュメントはオンラインです-https://heroiclabs.com/docs
このプラグインは、C ++や青写真が好きなプログラマーにも使用できます。すべての変数と関数は、Unreal Engine(Uproperties、Ustruct、Ufunctionsなど)が使用するタイプにさらされます。
プラグインは、ニーズに応じて引き込むことができる3つのモジュールに分割されます。
NakamaUnreal UnrealengineでNakamaを使用するための推奨されるC ++ベースのモジュール。これは、UnrealのネイティブタイプおよびUobjectsと統合されます。NakamaBlueprints 。NakamaCore V2.6.0 Unrealクライアント以前から移行し、最小限の変更を加えたいユーザーの場合、または非現実的なタイプなしで低レベルのC ++ APIを使用したい:(https://github.com/heroiclabs/nakama-cpp)。
NakamaCore事前に構築されたライブラリを使用しているため、標準のC ++ツールチェーンとのUnrealのツールチェーンの違いにより、ビルドの問題に遭遇する可能性があります。これが、NakamaUnrealが推奨されるモジュールである理由です。
クライアントは、このドキュメントで、リアルタイムクライアントとデフォルトクライアントとして紹介されます。このクライアントは、リアルタイムクライアントがソケットであり、デフォルトのクライアントはrest APIを使用してnakamaと通信しています。
クライアントに接続する前に、サーバーとデータベースをセットアップする必要があります。最も簡単な方法は、Dockerを使用することですが、他のオプションのサーバードキュメントをご覧ください。
UnrealでNakamaの使用を開始するには、次のことが必要です。
また、UnrealプロジェクトがC ++プロジェクトであることを確認してください。 BluePrintのみである場合、「ファイル - >新しいC ++クラス」を介して、Unreal Editorで新しいC ++ファイルをプロジェクトに追加できます。プライベートに設定して、好きなものに名前を付けてください。プロジェクトにこのファイルを使用すると、プラグインを非現実的にコンパイルすることができます。
非現実的なプロジェクトでNakamaを使用するには、Unreal Marketplaceからプラグインをダウンロードするか、ダウンロードしたNakama-Unrealファイルを適切な場所にコピーする必要があります。後者を行うには:
C:\MyUnrealProject\ )を開きます。Pluginsフォルダーを作成します。Nakamaフォルダーをコピーして、 Pluginsフォルダに入れますオプション:プラグインをUnreal Engine Pluginフォルダー(たとえば、 C:Program FilesEpic GamesUE_4.26EnginePluginsMarketplace )内に配置して、複数のプロジェクトでプラグインを使用できます。
この時点で、あなたは完了です。非現実的な再起動。物事をコンパイルした後、編集 - >プラグインを開き、下部にスクロールします。すべてがうまくいった場合は、HeroIclabs.nakamaがプラグインとしてリストされているのを見る必要があります。
クライアント
これらのクライアントを作成して記録する場所を決定する必要があります。
セッション
セッションは、セッションポインターとセッションの実際のデータを含む構造体を含むポータブルUobjects、ユーザーデータ、そのような有効情報などです。また、特定の変数を取得したり、セッションを復元したりするなど、セッションオブジェクトに提供されるユーティリティ関数もあります。
チェックシステム
通常、C ++ベースでカチカチェを処理する必要があります。幸いなことに、これはクライアントを作成した後にこのプラグインのフードの下で自動的に行われます。クライアントを作成すると、ダニの間隔を定義できます。デフォルトでは、これは0に設定されます。つまり、50msごとにチェックする必要がある場合は、0.05に設定する必要があります。
以下は、デフォルトのクライアントのセットアップ、認証、リアルタイムクライアントのセットアップ、チャットルームに参加する簡単な例です。この例では、レベルに配置された空のAactorクラスにすべてを配置します。
Project build.csファイルの下で、nakamaunrealをプライベート依存関係に追加することを忘れないでください。例えば:
PrivateDependencyModuleNames . AddRange ( new string [ ] { "NakamaUnreal" } ) ;ヘッダーのパブリック変数から始めて、この例のシーンに配置される空白のアクターを使用しています。 Unreal Engineは、クラスについてメタデータを提供し、BluePrint/C ++通信、シリアル化などなどの高度な機能を可能にする反射システムを使用します。 Nakama Objects、またはUobject由来のクラスを使用する場合、非現実的な反射システムを使用してそれらをマークすることが重要です。これは、ufunction()やuproperty()などのマクロを使用して行われます。
UPROPERTY ()
UNakamaClient* NakamaClient;
UPROPERTY ()
UNakamaRealtimeClient* NakamaRealtimeClient;
UPROPERTY ()
UNakamaSession* UserSession;
UFUNCTION ()
void OnAuthenticationSuccess(UNakamaSession* LoginData);
UFUNCTION ()
void OnAuthenticationError( const FNakamaError& Error);
UFUNCTION ()
void OnRealtimeClientConnectSuccess();
UFUNCTION ()
void OnRealtimeClientConnectError( const FNakamaRtError& ErrorData);
// Initialize client and authenticate here
virtual void BeginPlay () override ;たとえば、blueprintエディター内で操作にnakamaオブジェクトを使用できるようにする場合は、uproperty()でマークします。
UPROPERTY (BlueprintReadWrite, EditAnywhere, Category= " Nakama " )
UNakamaClient* NakamaClientInstance;BluePrinTreadWrite仕様を使用することにより、NakamaclientInstance変数は、青写真で読みやすく、書き込み可能になります。
次に、Begin Play内でデフォルトのクライアントをセットアップし、デリゲートを認証およびバインドします。
// Called when the game starts or when spawned
void AMyActor::BeginPlay ()
{
Super::BeginPlay ();
// Default Client Parameters
FString ServerKey = TEXT ( " defaultkey " );
FString Host = TEXT ( " 127.0.0.1 " );
int32 Port = 7350 ;
bool bUseSSL = false ;
bool bEnableDebug = true ;
// Setup Default Client
NakamaClient = UNakamaClient::CreateDefaultClient (ServerKey, Host, Port, bUseSSL, bEnableDebug);
// Authentication Parameters
FString Email = TEXT ( " [email protected] " );
FString Password = TEXT ( " verysecretpassword " );
FString Username = TEXT ( " debug-user " );
TMap<FString, FString> Variables;
// Setup Delegates of same type and bind them to local functions
FOnAuthUpdate AuthenticationSuccessDelegate;
AuthenticationSuccessDelegate. AddDynamic ( this , &AMyActor::OnAuthenticationSuccess);
FOnError AuthenticationErrorDelegate;
AuthenticationErrorDelegate. AddDynamic ( this , &AMyActor::OnAuthenticationError);
NakamaClient-> AuthenticateEmail (Email, Password, Username, true , Variables, AuthenticationSuccessDelegate, AuthenticationErrorDelegate);
}次に、認証コールバックの応答
void AMyActor::OnAuthenticationSuccess (UNakamaSession* LoginData)
{
if (GEngine) GEngine-> AddOnScreenDebugMessage (- 1 , 15 . 0f , FColor::Green, FString::Printf ( TEXT ( " Authenticated As %s " ), *LoginData-> SessionData . Username ));
UserSession = LoginData;
// Setup Delegates of same type and bind them to local functions
FOnRealtimeClientConnected ConnectionSuccessDelegate;
ConnectionSuccessDelegate. AddDynamic ( this , &AMyActor::OnRealtimeClientConnectSuccess);
FOnRealtimeClientConnectionError ConnectionErrorDelegate;
ConnectionErrorDelegate. AddDynamic ( this , &AMyActor::OnRealtimeClientConnectError);
// This is our realtime client (socket) ready to use
NakamaRealtimeClient = NakamaClient-> SetupRealtimeClient ();
// Remember to Connect
bool bCreateStatus = true ;
NakamaRealtimeClient-> Connect (UserSession, bCreateStatus, ConnectionSuccessDelegate, ConnectionErrorDelegate);
}
void AMyActor::OnAuthenticationError ( const FNakamaError& Error)
{
if (GEngine) GEngine-> AddOnScreenDebugMessage (- 1 , 15 . 0f , FColor::Red, FString::Printf ( TEXT ( " Failed to Authenticate: %s " ), *Error. Message ));
}そして最後に、オーバーライドされたリアルタイムクライアントのセットアップコールバックにより、リアルタイムクライアントを使用できるようになりました。
void AMyActor::OnRealtimeClientConnectSuccess ()
{
if (GEngine) GEngine-> AddOnScreenDebugMessage (- 1 , 15 . 0f , FColor::Green, FString ( TEXT ( " Socket Setup Success! " )));
// Example of Joining Chat without callbacks
NakamaRealtimeClient-> JoinChat ( " Heroes " , ENakamaChannelType::ROOM, true , false , {}, {});
}
void AMyActor::OnRealtimeClientConnectError ( const FNakamaRtError& ErrorData)
{
if (GEngine) GEngine-> AddOnScreenDebugMessage (- 1 , 15 . 0f , FColor::Red, FString ( TEXT ( " Socket Setup Failed! " )));
}すべてを正しくセットアップする場合は、このアクターの青写真バージョンを作成し、それをレベルに配置します。画面上のメッセージが表示され、ユーザー名、ユーザー名、ソケット接続メッセージが表示されます。
最新のNakama Unrealリリースでは、機能やイベントを処理するためにDynamic Multicast DelegatesまたはLambdas (TFunctions)を使用する柔軟性を提供します。これらの使用方法に関する簡単な比較とガイドラインは次のとおりです。
AddDynamicを使用してバインドされています。関連するnakama関数のSuccessとErrorパラメーターに、お好みのコールバックタイプ( delegateまたはlambda )を提供します。
lambdas delegatesの代替品として使用するデモは次のとおりです。
// Define success callback with a lambda
auto successCallback = [&](UNakamaSession* session)
{
UE_LOG (LogTemp, Warning, TEXT ( " Session Token: %s " ), *Session-> GetAuthToken ());
UE_LOG (LogTemp, Warning, TEXT ( " Username: %s " ), *Session-> GetUsername ());
};
// Define error callback with a lambda
auto errorCallback = [&]( const FNakamaError& Error)
{
UE_LOG (LogTemp, Warning, TEXT ( " Error Code: %d " ), Error. Code );
};
// Execute the AuthenticateEmail function with lambdas
Client-> AuthenticateEmail (TEXT( " [email protected] " ), TEXT( " verysecretpassword " ), TEXT( " debug-user " ), true, {}, successCallback, errorCallback);リアルタイムクライアントを初期化すると、チャンネルメッセージや通知からパーティーインタラクションまで、重要なゲーム内イベントのイベントリスナーを確立することが不可欠です。 Nakama Unrealは、この目的のためにLambdasと代表者の両方を許可することにより、柔軟性を提供します。
// Start by creating a Realtime Client:
UNakamaRealtimeClient* Socket = NakamaClient-> SetupRealtimeClient ();
// When using delegates, you need to declare functions that match the delegate's signature:
Socket->ChannelMessageReceived.AddDynamic( this , &ANakamaActor::OnChannelMessageReceived);
Socket->NotificationReceived.AddDynamic( this , &ANakamaActor::OnNotificationReceived);
// Lambdas offer a concise way to define event handlers directly in-line:
// Note: A lambda can be bound only once.
Socket-> SetChannelMessageCallback ( []( const FNakamaChannelMessage& ChannelMessage)
{
UE_LOG (LogTemp, Warning, TEXT ( " Channel Message: %s " ), *ChannelMessage. Content );
});
Socket-> SetNotificationsCallback ( []( const FNakamaNotificationList& NotificationList)
{
UE_LOG (LogTemp, Warning, TEXT ( " Notifications: %d " ), NotificationList. Notifications . Num ());
for ( auto & Notification : NotificationList. Notifications )
{
UE_LOG (LogTemp, Warning, TEXT ( " Notification: %s " ), *Notification. Content );
}
});
// Establish a connection to start receiving events.
// Optional success and error callbacks (either lambdas or delegates) can be provided:
Socket-> Connect (Session, true );関数の実装は次のように見えるかもしれません:
void ANakamaActor::OnChannelMessageReceived ( const FNakamaChannelMessage& ChannelMessage)
{
UE_LOG (LogTemp, Warning, TEXT ( " Channel Message: %s " ), *ChannelMessage. Content );
}
void ANakamaActor::OnNotificationReceived ( const FNakamaNotificationList& Notifications)
{
for ( auto NotificationData : Notifications. Notifications )
{
UE_LOG (LogTemp, Warning, TEXT ( " Notification: %s " ), *NotificationData. Content );
}
}NakamaBlueprintsを始めますこのセクションでは、このプラグインによって提供されるNakamaクライアントを完全に青写真で手動で作成および管理する方法を学びます。
クライアントへの参照を作成して保存する場所次第です。これは、アクター、コンポーネント、キャラクター、ゲームモードなどで行うことができます。クライアントを置くのに適した場所は、プレーヤーコントローラーまたはゲームインスタンスにあります。
Nakama Libraryの一部であるCreate Default Clientノードを追加することから始めます。

青写真グラフの他の場所にアクセスできるように、クライアントを変数に宣伝することをお勧めします。

多くの提供されたNakama認証タイプのいずれかを使用して認証する準備ができました。この例では、電子メールとパスワードで認証されます。通常、ウィジェットの青写真をセットアップし、UIから入力を認証ノードに渡し、ログインボタンを押して認証します。

ご覧のとおり、これは他の機能に渡されるセッションオブジェクトを返します。後で使用するためにセッションオブジェクトを宣伝するようにしてください。このプラグインを使用すると、非現実的なインスタンスごとに複数のセッションがある場合があります。レコードを保持し、セッションの使用方法を決定するのはあなた次第です。変数ピンも接続する必要がありますが、カスタム変数を使用したくない場合は、文字列マップを空にしたままにすることができます。

デフォルトのクライアントを作成した後、サーバーと対話する1つ以上のリアルタイムクライアント(ソケット)をセットアップできます。
以前に作成したNakamaclientからドラッグアウトし、セットアップリアルタイムクライアント関数を呼び出します。

以前に成功した認証からユーザーセッションを提供してから、カスタムイベントを成功とエラーコールバックにバインドすることを忘れないでください。リアルタイムクライアントはこのノードから返され、Nakamaサーバーとの通信に使用する準備ができています。チャットやマッチメーカーなどの機能を使用できるようになりました。

リアルタイムクライアントを作成した後、そのイベントにバインドする準備ができました

特定のリスナーを設定した後、コールバックにバインドする準備ができています。

カスタムイベントを作成し、意味のある名前を付けます。

以下の例では、通知のリスナーをセットアップし、イベントにバインドし、通知をループして、画面上のデバッグ文字列として印刷します。

次の例では、Matchmaker Matchedイベントを聴き、それにバインドして、返されたトークンとのマッチに参加して応答を処理し、マッチID、プレゼンス、ラベルなどを含むマッチを返します。

前述のように、Nakamaで認証すると、このプラグインのノードの多くは機能するために入力としてセッションオブジェクトが必要であるため、青写真で簡単にアクセスできる場所に保存するセッションオブジェクトを受け取ります。
セッションオブジェクトには、実際のセッション参照と、青写真で読み取るデータを含む構造も含まれています。セッションからドラッグアウトして、セッションデータを取得します。

セッションの復元やセッションの有効期限が切れているかどうかを確認するなど、追加のセッション管理方法もあります

AUTHトークンをセッションから保存し、起動時に有効期限が切れている場合はチェックすることをお勧めします。トークンの有効期限が切れている場合は、再認証する必要があります。トークンの有効期限は、サーバーの設定として変更できます。
クライアントには、ゲームサーバーのさまざまな機能のための多くのビルトインAPIが含まれています。これらには、成功とエラーコールバックを返すASYNCメソッドでアクセスできます。また、サーバー上のRPC機能としてカスタムロジックを呼び出すこともできます。すべてのリクエストは、クライアントを承認するセッションオブジェクトで送信されます。

RPCノードを使用して、サーバーで特定の機能を実行できます。ペイロードはJSON形式である必要があります。

今後、Nakamaのすべての機能を使用して、青写真で完全に行われた素晴らしいUnreal Engine Build GameまたはAppを強化する準備ができている必要があります。 https://heroiclabs.com/docsの公式ドキュメントを参照してください。ドキュメントの一部はC ++で説明されていますが、同じコア機能が青写真の実装に適用されます。
カーソルは、友人リストやリーダーボードレコードなど、特定のノードにページング機能を追加するために使用されます。取得するデータが増えると、成功コールバックでカーソル文字列が返されます。このカーソルを文字列として保存して、後で使用することができます。たとえば、人が「もっと」ボタンをクリックしたり、すぐに使用してより多くのデータを取得したりします。以下の例をご覧ください。

デフォルトでは、ロギングは無効になっています。ただし、クライアントを作成するときは、 Enable Debugオプションがあり、デバッグログカテゴリを使用してログを書き込むことができます。ロギングを手動で制御することもできます。
青写真からのロギングを有効にする: 
C ++からのロギングを有効にします
C ++を介してログを有効にするには、次のヘッダーファイルを含めます。
# include " NakamaLogger.h "その後、ロギングを切り替えるには、次のことを使用します。
UNakamaLogger::EnableLogging ( true );ログレベルを設定するには、使用してください。
UNakamaLogger::SetLogLevel (ENakamaLogLevel::Debug);ログカテゴリは次のとおりです。
Debugすべてのログを書き込みます。
Info 、 Info 、 Warn 、 Error 、 Fatalロギングレベルでログを書き込みます。
Warn 、 Warn 、 Error 、 Fatal伐採レベルでログを書きます。
Error 、 ErrorとFatalロギングレベルを備えたログを書き込みます。
Fatal Fatalロギングレベルのログのみを書き込みます。
このリポジトリには、Nakamaのさまざまな機能を非現実的にテストするためのテストスイートが含まれています。コマンドラインから編集者でテストを実行できます。BluePrintsで同じテストを実行したい場合は、独立したドキュメントを備えたBlueprintsTestプロジェクトがあります。
PluginsディレクトリにNakamaプラグインを追加しますEdit -> Pluginsの下でUnrealでFunctional Testing Editorプラグインを有効にしてから、エディターを再起動してくださいTool -> TestAutomationに移動しますStart Testsをクリックします
テストは、PackagedとUnreal Editorのコマンドラインバージョンの両方で実行できます。
すべてのコマンドラインベースのテストについて、これらの手順を実行することから始めます。
PluginsディレクトリにNakamaプラグインを置くNakamaプラグインを有効にしますWindows-エディター:
テストを作成するには、実行してください。
" <Path_To_Unreal_Engine>EngineBuildBatchFilesBuild.bat " < YourProjectName > Editor Win64 Development -Project= " <Path_To_Your_Project><YourProjectName>.uproject "テストを実行するには、実行してください。
" <Path_To_Unreal_Engine>EngineBinariesWin64UnrealEditor-Cmd.exe " " <Path_To_Your_Project><YourProjectName>.uproject " -ExecCmds= " Automation RunTests <YourTestName> " -log -NullRHI -verbose -unattended -ReportOutputPath= " <Path_To_Store_Report> "すべてのテストを実行する場合は、 <YourTestName>をNakama.Baseに置き換えたい場合、 ReportOutputPathを指定すると、概要JSON logfileが届きます。ログはSaved/Logsディレクトリに保存されます。
Windows-パッケージ:
テストを作成するには、実行してください。
" <Path_To_Unreal_Engine>/Engine/Build/BatchFiles/RunUAT.sh " BuildCookRun -targetconfig=Debug -project= " <Path_To_Your_Project><YourProjectName>.uproject " -noP4 -installed -utf8output -build -cook -stage -package -verbose -stdout -nohostplatform -useshellexecuteテストを実行するには、実行してください。
./ < YourProjectName > /Saved/StagedBuilds/Windows/ < YourProjectName > .exe -nullrhi -verbose -ExecCmds= " Automation RunTests Nakama.Base " -logMac-パッケージ化:
テストを作成するには、実行してください。
" <Path_To_Unreal_Engine>/Engine/Build/BatchFiles/RunUAT.sh " BuildCookRun -project= " <Path_To_Your_Project><YourProjectName>.uproject " -targetConfig=Debug -noP4 -platform=Mac -Architecture_Mac=arm64 -targetconfig=Debug -installed -unrealexe=UnrealEditor -utf8output -build -cook -stage -package -verboseテストを実行するには、実行してください。
./ < YourProjectName > /Binaries/Mac/ < YourProjectName > .app/Contents/MacOS/ < YourProjectName > -nullrhi -stdout -forcelogflush -ExecCmds= " Automation RunTests Nakama.Base " -logLinux-パッケージ:
テストを作成するには、実行してください。
" <Path_To_Unreal_Engine>/Engine/Build/BatchFiles/RunUAT.sh " BuildCookRun -project= " <Path_To_Your_Project><YourProjectName>.uproject " -clientconfig=Test -noP4 -platform=Linux -targetconfig=Debug -installed -utf8output -build -cook -stage -package -verboseテストを実行するには、実行してください。
./ < YourProjectName > /Binaries/Linux/ < YourProjectName > -nullrhi -stdout -forcelogflush -ExecCmds= " Automation RunTests Nakama.Base " -logパラメーターを渡します
ホスト名、ポート、サーバーキーなどのパラメーターは、コマンドライン引数として渡すことができます。例を以下に示します。
-hostname= " 127.0.0.1 " -port=7350 -serverkey= " defaultkey " -serverhttpkey= " defaulthttpkey " -timeout=45 -useSSLこのプラグインの機能のいくつかは、チャットメッセージの送信やストレージオブジェクトを使用してデータの保存など、JSONに依存しています。したがって、純粋に青写真を使用する場合、VarestなどのJSON文字列を構築および解析できるプラグインを見つけることをお勧めします。
エディター内で開発する場合、PIE(エディターで再生)を使用して複数の非現実的なインスタンスを実行し、個別のアカウントを使用して認証できます。これは、チャット、リアルタイムマルチプレイヤー、マッチメイキングなど、複数のプレーヤーを必要とする機能をテストする場合に非常に便利です。
このドキュメントのインストール部分では、プロジェクトにC ++を追加します。これは、プラグインをコンパイルできるためだけのものですが、ブループリントのみを使用できます。
このプラグインを備えたものは、Nakamaコア機能のほぼすべてを紹介する純粋な青写真で開発されたプロジェクトの例です。



開発ロードマップは、githubの問題として管理されており、プルリクエストを歓迎します。コードを強化することに興味がある場合は、問題を開いて変更について話し合うか、コミュニティフォーラムでドロップインして議論してください。
非現実的なモジュールは、一般的なC ++ SDKに基づいています
VCPKGを使用して、 NakamaCore/libnakamaディレクトリに配置する前に、特定のツールチェーンにNakama-SDKをインストールします。
ARM64-OSX: vcpkg install --overlay-triplets=./triplets --host-triplet=arm64-osx-release-heroic --triplet=arm64-osx-release-heroic
X64-Windows: vcpkg install --overlay-triplets=./triplets --host-triplet=x64-windows-heroic --triplet=x64-windows-heroic
ARM64-WINDOWS: vcpkg install --overlay-triplets=./triplets --host-triplet=arm64-windows-heroic --triplet=arm64-windows-heroic
X64-LINUX: vcpkg install --overlay-triplets=./triplets --host-triplet=x64-linux-release-heroic --triplet=x64-linux-release-heroic
次に、vcpkg_installed libnakamaディレクトリにNakamaCore/Public/nakama-cppにヘッダーからライブラリをコピーします。
その後、コマンドラインからプラグインをコンパイルして、叙事詩ランチャーを介して編集者をイントールした場合に-Rocketフラグを渡すことができます。ただし、少なくともコマンドラインを実行するためには、壮大なランチャー分布を使用することは推奨されません。
Windows:
${UNREAL_ENGINE} /Engine/Build/BatchFiles/RunUAT.sh BuildPlugin -NoHostPlatform -Plugin= " ${NAKAMA_UNREAL} /Nakama/Nakama.uplugin " -TargetPlatforms=Win64 -package= ${NAKAMA_UNREAL} /Out/Nakamaマック:
${UNREAL_ENGINE} /Engine/Build/BatchFiles/RunUAT.sh BuildPlugin -NoHostPlatform -Plugin= " ${NAKAMA_UNREAL} /Nakama/Nakama.uplugin " -TargetPlatforms=Mac -package= ${NAKAMA_UNREAL} /Out/Nakama -Architecture_Mac=arm64 iOSの場合、 iOS TargetPlatformsに渡します。
自動化コマンドの完全なリストを表示するには、実行してください。
${UNREAL_ENGINE}/Engine/Build/BatchFiles/RunUAT.sh -List
Linux:
${UNREAL_ENGINE}/Engine/Build/BatchFiles/RunUAT.sh BuildPlugin -NoHostPlatform -Plugin="${NAKAMA_UNREAL}/Nakama/Nakama.uplugin" -TargetPlatforms=Linux -package=${NAKAMA_UNREAL}/Out/Nakama
Nakama Unreal Client Guideはこちらをご覧ください。
このプロジェクトは、Apache-2ライセンスの下でライセンスされています。