ブループリントインテグレーション
Unreal Engine のブループリントビジュアルスクリプティングシステムを使用して Multiplay Game Server SDK と統合する方法を示します。
Multiplay Game Server SDK は、以下のインターフェースと対話できます。
Multiplay Game Server SDK プラグインのインストール
先に進む前に、Multiplay Game Server SDK プラグインが正しくインストールされていることを確認します。
ノート: ブループリントからサブシステムにアクセスするには、以下が必要です。
- サブシステムが必要なブループリント内で C++ ヘッダー (
.h
) ファイルを見つけます。 - C++ ヘッダーファイルの一番上にサブシステムの
include
を加えます (#include "MultiplayGameServerSubsystem.h"
)。 - Visual Studio ソリューションを再度生成してビルドします。手順の説明については、SDK を含むプロジェクトのビルド を参照してください
Multiplay サーバー設定サブシステム
このサブシステムは、現在のセッションのサーバー設定を保持します。
このサブシステムはこの情報を、サブシステムの初期化時に server.json
ファイルから取得します。
MultiplayServerConfigSubsystem ノードを配置し、Server Config 変数にアクセスすることで、サーバー設定を取得できます。
Server Config には以下の値があります。
- サーバー ID
- 割り当て ID
- サーバークエリプロトコルのポート
- セッションの接続ポート
- ゲームサーバーがログファイルを保存するディレクトリ
Multiplay Game Server Subsystem
Multiplay Game Server Subsystem を使用すると、ゲームサーバーが割り当て済みになったときやゲームサーバーがプレイヤーを受け入れる準備ができたときなどのゲームサーバーイベントにサブスクライブ (および応答) できます。ゲームサーバーのライフサイクル と サーバーの準備状況 を参照してください。
> ノート: Multiplay Game Server SDK は Unity のサーバークエリプロトコルの完全な実装を備えているため、ゲームサーバーは変数を入力するだけで済みます。サーバークエリプロトコル を参照してください。
MultiplayGameServerSubsystem のインスタンスを使用し、以下のブループリントを通じて Multiplay ゲームサーバーサブシステムと対話します。
SubscribeToServerEvents
MultiplayGameServerSubsystem のインスタンスを用意したら、Subscribe ブループリントを使用して OnAllocate、ReadyServerForPlayers、UnreadyServer、OnDeallocate などの Multiplay イベントにサブスクライブできます。
イベントにサブスクライブした後、ゲームサーバーは 割り当て を待機する必要があります。ゲームサーバーが割り当てられたときに通知されるようにするには、OnAllocate ブループリントを使用します。
OnAllocate
このブループリントは、ゲームアセットのロードや ReadyServerForPlayers によるバックフィルの開始など、プレイヤーがゲームマッチのゲームサーバーに参加する前に必要な設定ロジックを実行する機会として使用します。
プレイヤーにゲームサーバーへの参加を許可するための設定ロジックを実行したら、ReadyServerForPlayers ブループリントを使用して、ゲームサーバーがプレイヤーを受け入れる準備ができたことを Multiplay に通知できます。
ReadyServerForPlayers
このブループリントを使用して、ゲームサーバーがゲームマッチのプレイヤーを受け入れる準備ができたときに Multiplay に通知します。
どの時点であっても、ゲームマッチの状態が変化して新しいプレイヤーを受け入れたくなくなった場合は、UnreadyServer ブループリントを使用して、ゲームサーバーがプレイヤーを受け入れる準備ができなくなったことを Multiplay に通知します。
UnreadyServer
このブループリントを使用して、ゲームサーバーがプレイヤーを受け入れる準備ができなくなったことを Multiplay に通知します。
UnreadyServer ブループリントを使用するシナリオとしては、以下のような場合が考えられます。
- ゲームマッチがほぼ完了した
- ゲームマッチが完了した
- ゲームサーバーがいっぱいになった
OnDeallocate
このブループリントを使用して、Multiplay がゲームサーバーを割り当て解除するときに通知します。OnDeallocate ブループリントは、ゲームサーバーがシャットダウンされる前に必要な土壇場のクリーンアップやブックキーピングを実行するための機会を提供します。
Multiplay Server Query Handler Subsystem
Multiplay Server Query Handler Subsystem を使用すると、ゲームサーバークエリプロトコルによって監視されるゲームサーバー変数を設定できます。この実装は SQP を使用します。サーバークエリプロトコル を参照してください。
UMultiplayServerCheckSubsystem
を使用すると、以下のことができます。
- ゲームサーバーに接続する
- ゲームサーバーから切断する
- 設定ブループリント を使用してゲームサーバークエリ値を設定する
- アクセサーブループリント を使用してゲームサーバークエリ値にアクセスする
設定ブループリント
以下の設定ブループリントを使用して、ゲームサーバークエリ値を設定します。SetCurrentPlayers、SetMaxPlayers、SetServerName、SetGameType、SetBuildId、SetMap、SetPort 設定ブループリントがあります。
SetCurrentPlayers
このブループリントを使用して、ゲームサーバーに接続しているプレイヤーの数を設定します。
SetMaxPlayers
このブループリントを使用して、ゲームサーバーに接続できるプレイヤーの最大数を設定します。
SetServerName
このブループリントを使用して、ゲームサーバーの現在の名前を設定します。
SetGameType
このブループリントを使用して、ゲームサーバーが実行しているゲームタイプを設定します。
SetBuildId
このブループリントを使用して、ゲームサーバーの現在のビルド ID を設定します。
SetMap
このブループリントを使用して、ゲームサーバーの現在のマップを設定します。
SetPort
このブループリントを使用して、ゲームサーバーの現在のポート番号を設定します。
これは、ゲームクライアントがゲームサーバーへの接続元として使用できるポート番号です。クエリポート番号とは別です。
これらの値はゲーム中に変化するので、継続的に更新するようにしてください。それにより、Multiplay はサーバーの実行中に確実にデータを収集および表示できるようになります。すべての値を設定した後で、Connect ブループリント を加えることができます。
Connect ブループリント
このブループリントを使用して、ゲームサーバーへの接続を確立します。アクセサーブループリント を使用するには、その前にゲームサーバーへの接続を確立する必要があります。
アクセサーブループリント
このブループリントを使用して、設定した値にアクセスします。GetCurrentPlayers、GetMaxPlayers、GetServerName、GetGameType、GetBuildId、GetMap、GetPort アクセサーブループリント があります。
GetCurrentPlayers
このブループリントを使用して、ゲームサーバーに接続している現在のプレイヤーの数を取得します。
GetMaxPlayers
このブループリントを使用して、ゲームサーバーに接続できるプレイヤーの最大数を取得します。
GetServerName
このブループリントを使用して、ゲームサーバーの現在の名前を取得します。
GetGameType
このブループリントを使用して、ゲームサーバーが実行しているゲームタイプを取得します。
GetBuildId
このブループリントを使用して、ゲームサーバーが実行しているビルドの ID を取得します。
GetMap
このブループリントを使用して、ゲームサーバーの現在のマップを取得します。
GetPort
このブループリントを使用して、ゲームサーバーの現在のポートを取得します。
これはゲームクライアントがゲームサーバーに接続するために使用するポートであり、クエリポートではありません。
Disconnect ブループリント
このブループリントを使用して、ゲームサーバーをシャットダウンする前にゲームサーバーから切断します。