ドキュメント

サポート

Multiplay Hosting

Multiplay Hosting

インテグレーションの要件

Learn the requirements your game server must meet to integrate with Multiplay Hosting.
読み終わるまでの所要時間 4 分最終更新 25日前

ゲームは、Multiplay Hosting サービスを使用してゲームをホストおよびスケールできるようにするという特定の要件を満たす必要があります。以下のガイドラインで、ゲームを Multiplay Hosting 用に準備する方法について説明します。 ほとんどの要件はビルドに関するものです。より具体的には、実行可能ビルドに関するものです。ビルド には、ゲームの実行に必要なすべてのファイルがカプセル化されます。実行可能ビルド は、ビルド内の実行ファイルです。実行可能ビルドは、ビルドの作成時に指定する必要があります。

一般要件

このセクションでは、Multiplay Hosting を使用するためにビルドが満たす必要のある一般要件について説明します。詳細については、以下の要件を参照してください。

OS

実行可能ビルドは、Linux (Ubuntu 20.04) 上での実行をサポートする必要があります。ビルドの作成 時に、ビルドでサポートする OS を指定できます。 Multiplay Hosting でサポートされるのは 64 ビット Linux アプリケーションのみです。

パラメーター化された値

ビルドでは、パラメーター化された値からの情報の使用をサポートする必要があります。Multiplay Hosting は、構成変数
server.json file
、および 起動パラメーター を通じてパラメーター化された値を管理します。
ビルドが ビルド設定 を通じて追跡する情報を管理できます。 Multiplay Hosting は、
server.json
ファイルを使用して、割り当て ID やポート番号、構成変数として追跡するその他の変数などのセッション固有の情報を追跡します。ビルドプロセスでは、
server.json
ファイル内の情報の追跡をサポートする必要があるため、サーバーがいつ 割り当て済み および 割り当て解除済み になったかがわかります。Unity または Unreal を使用している場合は、Game Server SDK を使用してこれを行うことができます。
ビルドでは、起動パラメーターから情報を読み取ることもできます。起動パラメーターは、起動時に、ゲームポートなど実行可能ビルドに必要な値を設定するのに適した方法です。

起動条件

ビルドでは、
server.json
ファイルに設定された割り当て ID なしでの開始をサポートする必要があります。その理由は、サーバーが オンライン かつ 割り当ての準備が完了 するまでサーバーを割り当てられないからです。これは、サーバーを割り当てるまで
allocatedID
フィールドが空の文字列 (
""
) であることを意味します。

ネットワークアダプターバインディング

ビルドでは、ゲームサーバーポートとクエリプロトコルサーバーポートの両方に
0.0.0.0
をバインドする必要があります。

動的ポート番号

ビルドでは、ゲームデータの送信に動的ポート番号の使用をサポートする必要があります。Multiplay Hosting では、サーバーインスタンスごとにポート番号が生成されます (サーバー起動時にポートが競合しないようにオフセットが使用されます)。 実行可能ビルドでは、
$$port$$
変数
を使用してこの機能を活用する必要があります。例えば、以下の起動パラメーターを使用して起動時に
$$port$$
変数をビルドに渡すことができます。
-port $$port$$

ログディレクトリ

ビルドでは、サーバーインスタンスごとにログを生成する機能をサポートする必要があります。Multiplay Hosting では、Unity Dashboard を介して サーバーログ が表示されます。ここで、ログを表示、検索、ダウンロードできます。 起動パラメーターと構成変数を使用して、ビルドがログファイルを保存する場所をコントロールできます。例えば、
-logFile
起動パラメーター として使用し、
$$log_dir$$
構成変数 を渡すことができます。
-logFile $$log_dir$$/engine.log
ログディレクトリ要件は任意です。ログディレクトリを設定しない場合、Unity Dashboard を通じてログとクラッシュダンプにアクセスする方法はありません。

クエリプロトコル

要件ではありませんが、SQP などの サーバークエリプロトコル からのクエリへの応答をサポートすることはビルドのベストプラクティスです。 サーバークエリプロトコルは、サーバー状態や割り当て済みプレイヤーの数など、サーバーインスタンスからの情報のクエリを促進するプロトコルです。通常、レスポンスには動的な (継続的に更新される) 値が格納された静的変数があります。 Multiplay Hosting は、クエリプロトコルのレスポンスに依存して、サーバーインスタンスの健全性を判断します。ビルドでクエリプロトコルがサポートされていないか、クエリプロトコルを間違って設定した場合、Multiplay Hosting はサーバーインスタンスが無反応であると判断する可能性があります。 また、クエリプロトコルにより、同時接続プレイヤー (CCU)、アクティブな割り当て、失敗した割り当て、プラットフォームごとの接続プレイヤー、サーバーイベント など、各サーバーに関するリアルタイムデータを Multiplay Hosting がレポートおよび監視できます。

割り当て後のクリーンアップ

ビルドでは、ゲームサーバーで次の割り当てを準備するために何らかの形式の割り当て後 (セッション後) クリーンアップをサポートする必要があります。 2 つのオプションがあります。
  • ゲームセッションの終了後にロビーまたは準備完了状態に戻すことができます。
  • プロセスを正常に終了できます (例えば、終了コード 0 など)。
ロビー (または準備完了状態) に戻ることは、ゲームサーバープロセスを再起動するのに望ましい動作です。通常はプロセスのクリーンアップよりも再起動の方が高コストであるため、マッチの終了時にゲームサーバープロセスを終了するのはリソースの最適な使用法ではありません。

コンテナビルドの要件

Multiplay Hosting ビルドを作成する場合、ビルドファイルをアップロードするためのいくつかのオプションがあります。 1 つのオプションは、Docker と Multiplay Hosting コンテナレジストリを使用してビルドのコンテナ化バージョンをアップロードすることです。コンテナビルド を使用する前に、ビルドコンテナが (一般要件 に加えて) 特定の要件を満たす必要があります。

ベースイメージを使用したコンテナビルドの作成

linux-build-image テンプレートコンテナは、コンテナビルドの使用に関するほとんどの追加要件に対処します。ほとんどの場合に、ベースイメージを使用します。これを使用するには、以下の行を Dockerfile の一番上に追加します。
FROM unitymultiplay/linux-base-image:<tag>
<tag>
は、使用するベースイメージのバージョンで置き換えます。使用可能なタグのリストについては、linux-base-image タグ で確認できます。

ゼロからのコンテナビルドの作成

Dockerfile をゼロから作成する場合は、コンテナが以下の要件を満たしていることの確認に責任を負うことになります。
要件説明
USER mpukgame
コンテナでは、
mpukgame
USER
として使用する必要があります。このユーザーは、2000 のグループ識別子 (GID) と 2000 のユーザー識別子 (UID) を持っている必要があります。
ENTRYPOINT
コンテナには、mpukgame ユーザーが起動した
ENTRYPOINT
が必要です。
以下のコードブロックは、これらの要件を満たす単純な Dockerfile を示します。
# ========================================================##========================================================-# Unity base image stuff##unity-base-image-stuff------------------# ========================================================##========================================================-FROM ubuntu:20.04 AS mpukRUN addgroup --gid 2000 mpukgame && \ useradd -g 2000 -u 2000 -ms /bin/sh mpukgame && \ mkdir /game && \ chown mpukgame:mpukgame /game && \ apt update && \ apt upgrade && \ apt install -y ca-certificatesUSER mpukgame# ========================================================##========================================================-# Custom game stuff##custom-game-stuff---------------------# ========================================================##========================================================-FROM mpuk AS game# copy game files here##copy-game-files-here# for example:##for-example:WORKDIR /gameCOPY --chown=mpukgame . .# set your game binary as the entrypoint##set-your-game-binary-as-the-entrypointENTRYPOINT [ "./gamebinary" ]