仕組み
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
この記事では、Byte Wars AccelByte Multiplayer Servers (AMS) の仕組みについて技術的な概要を説明します。
Byte Wars AMS の仕組み
Byte Wars AMS の目的は、カスタムバックエンドサービスを持つ通常のゲームが AMS を使用して専用サーバーをホストおよび管理する方法を実演およびガイドすることです。カスタムバックエンドサービスとして、ローカルで実行できるサンプルマッチメイキングバックエンドサービスを提供しています。
ゲームクライアント、サンプルマッチメイキングバックエンドサービス、AMS でホストされる専用サーバーの 3 つのコンポーネントがあります。セットアップは次のとおりです:
Byte Wars AMS の構造
Byte Wars の構造は、依存関係を形成するいくつかの相互接続されたコンポーネントで構成されています。この図で確認できます:
コアゲーム
コアゲームは、ゲームの基盤を含む Byte Wars のベースです。このベースゲームには、ゲームプレイ、基本的なネットワーキング、基本的なマルチプレイヤー機能が含まれています。次のリポジトリで利用できます:
- Byte Wars Unreal Engine (
mainブランチ): git@github.com:AccelByte/accelbyte-unreal-bytewars-game.git - Byte Wars Unity Engine (
mainブランチ): git@github.com:AccelByte/accelbyte-unity-bytewars-game.git
チュートリアルモジュール
チュートリアルモジュールには、AccelByte プラグインを使用してベース Byte Wars ゲームを AMS と統合するコンポーネントが含まれています。チュートリアルモジュールには、デフォルトモードとスターターモードの 2 つのモードがあります。これらのモードは Tutorial Module Manager で設定できます。
- デフォルトモード: このモードでは、チュートリアルモジュール内の AMS 機能の統合が完了しています。したがって、開発者は調整を行う必要がありません。
- スターターモード: このモードでは、チュートリアルモジュール内の AMS 機能の統合が完了していません。このモードは Byte Wars チュートリアルに沿って使用され、開発者が機能をゼロから統合できるようにします。
各チュートリアルモジュールには、次の主要なコンポーネントがあります。
- ユーザーインターフェース (UI): チュートリアルモジュールで使用される UI ファイルが含まれています。スターターモードがアクティブな場合、チュートリアルモジュールで使用されるファイルは
_Starterサフィックスが付いたものです。 - モジュールラッパー: AMS 機能を Byte Wars と統合し、UI に接続する (該当する場合) ラッパーコードを含むファイルで構成されています。スターターモードがアクティブな場合、チュートリアルモジュールで使用されるファイルは
_Starterサフィックスが付いたものです。
Byte Wars には、次のリポジトリで利用できるベースゲーム、チュートリアルモジュール、AccelByte プラグインが含まれています:
- Byte Wars Unreal Engine (
tutorialmodules-amsブランチ): git@github.com:AccelByte/accelbyte-unreal-bytewars-game.git - Byte Wars Unity Engine (
tutorialmodules-amsブランチ): git@github.com:AccelByte/accelbyte-unity-bytewars-game.git
ゲーム内ユーティリティ
ゲーム内ユーティリティは、Byte Wars で使用されるコンポーネントです。これらのユーティリティは、次の主要な部分で構成されています:
UI Manager
このユーティリティは、Byte Wars の UI を管理する役割を担います。チュートリアルモジュールがアクティブかどうか、スターターモードがアクティブかどうか、Admin Portal で設定が行われているかどうかなど、特定の条件に基づいて UI 要素をアクティブ化および非アクティブ化できます。
Asset Manager
このユーティリティは、Byte Wars のアセットを管理する役割を担います。チュートリアルモジュールがアクティブかどうか、チュートリアルモジュールのスターターモードがアクティブかどうか、Admin Portal で設定が行われているかどうかなど、特定の条件に基づいてアセットをアクティブ化および非アクティブ化できます。
Tutorial Module Manager: Unreal Engine
このユーティリティは、チュートリアルモジュールで使用される設定を管理する役割を担います。Unreal Engine Byte Wars の場合、チュートリアルモジュールの管理は Tutorial Module Data Asset と呼ばれるアセットによって制御されます。この Tutorial Module Data Asset には、次の設定が含まれています:

- Code Name: チュートリアルモジュールの識別として使用される一意の文字列。
- Tutorial Module (Default Mode):
- Default UI Class: デフォルトモードがアクティブなときにチュートリアルモジュールで使用されるメイン UI。
- Default Subsystem Class: デフォルトモードがアクティブなときにチュートリアルモジュールで使用されるメインモジュールラッパー。
- Is Active: このトグルがオンの場合、チュートリアルモジュールがアクティブになり、デフォルトモードが使用されます。このトグルがオフの場合、チュートリアルモジュールは非アクティブ化されます。
- Tutorial Module Starter (Starter Mode):
- Starter UI Class: スターターモードがアクティブなときにチュートリアルモジュールで使用されるメイン UI。
- Starter Subsystem Class: スターターモードがアクティブなときにチュートリアルモジュールで使用されるメインモジュールラッパー。
- Is Starter Mode Active: このトグルがオンの場合、スターターモードがアクティブになり、デフォルトモードを上書きします。このトグルがオフの場合、デフォルトモードが使用されます。
- Tutorial Module Dependencies: 特定のチュートリアルモジュールの依存関係であるチュートリアルモジュールのリスト。依存関係リスト内のチュートリアルモジュールが非アクティブの場合、それに依存するチュートリアルモジュールは自動的に非アクティブ化されます。
Unreal Byte Wars チュートリアルに沿って進めるには、開発者は上記の Tutorial Module Data Asset を通じてスターターモードをアクティブ化する必要があります。
さらに、開発者は Config/DefaultEngine.ini ファイルに以下のコードを追加して、チュートリアルモジュールを強制的にアクティブ化する必要があります。
[AccelByteTutorialModules]
+ForcedEnabledModules=TutorialModule:TUTORIALMODULECODENAME_1
+ForcedEnabledModules=TutorialModule:TUTORIALMODULECODENAME_2
+ForcedEnabledModules=TutorialModule:TUTORIALMODULECODENAME_3
ForceDisabledOtherModules=false
各チュートリアルモジュールに固有の設定コードは、各モジュールの前提条件で提供されています。スターターモードを有効にするリマインダーも、各チュートリアルモジュールで言及されています。
Tutorial Module Manager: Unity Engine
このユーティリティは、チュートリアルモジュールで使用される設定を管理する役割を担います。Unity Byte Wars の場合、チュートリアルモジュールの管理は Tutorial Module Data と呼ばれる Scriptable Object によって制御されます。これには次の設定が含まれています:

- Type: チュートリアルモジュールの識別として使用される一意のタイプ。
- Tutorial Module (Default Mode):
- Default Menu UI Prefab: デフォルトモードがアクティブなときにチュートリアルモジュールで使用されるメイン UI。
- Default Module Script: デフォルトモードがアクティブなときにチュートリアルモジュールで使用されるメインモジュールラッパー。
- Is Active: このトグルがオンの場合、チュートリアルモジュールがアクティブになり、デフォルトモードが使用されます。このトグルがオフの場合、チュートリアルモジュールは非アクティブ化されます。
- Tutorial Module Starter (Starter Mode):
- Starter Menu UI Prefab: スターターモードがアクティブなときにチュートリアルモジュールで使用されるメイン UI。
- Starter Module Script: スターターモードがアクティブなときにチュートリアルモジュールで使用されるメインモジュールラッパー。
- Is Starter Active: このトグルがオンの場合、スターターモードがアクティブになり、デフォルトモードを上書きします。このトグルがオフの場合、デフォルトモードが使用されます。
- Tutorial Module Dependencies: 特定のチュートリアルモジュールの依存関係であるチュートリアルモジュールのリスト。依存関係リスト内のチュートリアルモジュールが非アクティブの場合、それに依存するチュートリアルモジュールは自動的に非アクティブ化されます。
Unity Byte Wars で利用可能なチュートリアルに沿って進めるには、開発者は上記で説明した Tutorial Module Data Asset を通じてスターターモードをアクティブ化する必要があります。
さらに、開発者は Assets/Resources/Modules/TutorialModuleConfig.json ファイルに以下のコードを追加して、チュートリアルモジュールを強制的にアクティブ化する必要があります。
{
"enableModulesOverride": true,
"forceEnabledModules": ["TutorialModuleType_1", "TutorialModuleType_2", "TutorialModuleType_3"],
"forceDisabledOtherModules": false
}
各チュートリアルモジュールに固有の設定コードは、各モジュールの前提条件で提供されています。スターターモードを有効にするリマインダーも、各チュートリアルモジュールで言及されています。
AccelByte プラグイン
AccelByte プラグインは、AMS 機能を Byte Wars に統合するために使用されます。サポートされているゲームエンジンに基づいて Byte Wars で使用されるプラグインのリストは次のとおりです:
- Unreal Engine
- AccelByte Software Development Kit (SDK): git@github.com:AccelByte/accelbyte-unreal-sdk-plugin.git
- Unity Engine:
- AccelByte Software Development Kit (SDK): git@github.com:AccelByte/accelbyte-unity-sdk.git