仕組み
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
この記事では、Byte Warsの仕組みについて技術的な概要を説明します。
Byte Warsの構造
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のベースゲームとAccelByte Gaming Services(AGS)の機能を統合するコンポーネントが含まれています。これらのチュートリアルモジュールは、Access、Play、Social、Engagement、Storageなど、AGSのサービスタイプに基づいてグループ化されています。
チュートリアルモジュールは、別のチュートリアルモジュールの依存関係になることがあります。例えば、統計機能を統合するには、まずログイン機能が必要なため、Accessグループのチュートリアルモジュールが、Storageグループのチュートリアルモジュールの依存関係になります。
各チュートリアルモジュールの依存関係を確認するには、Tutorial Module Managerセクション(Unreal EngineまたはUnity)で説明されているTutorial Module Dependenciesの値を確認してください。
さらに、チュートリアルモジュールには、DefaultモードとStarterモードの2つのモードがあります。これらのモードは、Tutorial Module Managerを通じて設定できます。
- Defaultモード:このモードでは、チュートリアルモジュール内のAGS機能の統合が完了しています。したがって、開発者は調整を行う必要がありません。
- Starterモード:このモードでは、チュートリアルモジュール内のAGS機能の統合が完了していません。このモードは、Byte Warsチュートリアルに沿って進めるために使用され、開発者が機能をゼロから統合できるようにします。
各チュートリアルモジュールには、以下の主要なコンポーネントがあります。
- ユーザーインターフェース(UI):チュートリアルモジュールで使用されるUIファイルが含まれています。Starterモードがアクティブな場合、チュートリアルモジュールで使用されるファイルは、
_Starterサフィックスが付いたものです。 - モジュールラッパー:AGS機能をByte Warsと統合し、UI(該当する場合)と接続するラッパーコードを含むファイルで構成されています。Starterモードがアクティブな場合、チュートリアルモジュールで使用されるファイルは、
_Starterサフィックスが付いたものです。
Byte Warsには、ベースゲーム、チュートリアルモジュール、およびAccelByteプラグインが含まれており、以下のリポジトリで利用できます。
- Byte Wars Unreal Engine(
tutorialmodulesブランチ):git@github.com:AccelByte/accelbyte-unreal-bytewars-game.git - Byte Wars Unity Engine(
tutorialmodulesブランチ):git@github.com:AccelByte/accelbyte-unity-bytewars-game.git
ゲーム内ユーティリティ
ゲーム内ユーティリティは、Byte Warsで使用されるコンポーネントです。これらのユーティリティは、以下の主要な部分で構成されています。
UIマネージャー
このユーティリティは、Byte WarsのUIを管理する役割を担っています。チュートリアルモジュールがアクティブかどうか、Starterモードがアクティブかどうか、AGS Admin Portalで設定が行われているかどうかなど、特定の条件に基づいてUI要素をアクティブ化および非アクティブ化できます。
アセットマネージャー
このユーティリティは、Byte Warsのアセットを管理する役割を担っています。チュートリアルモジュールがアクティブかどうか、チュートリアルモジュールのStarterモードがアクティブかどうか、Admin Portalで設定が行われているかどうかなど、特定の条件に基づいてアセットをアクティブ化および非アクティブ化できます。
Tutorial Module Manager:Unreal Engine
このユーティリティは、チュートリアルモジュールで使用される設定を管理する役割を担っています。Unreal Engine Byte Warsの場合、チュートリアルモジュールの管理は、Tutorial Module Data Assetと呼ばれるアセットによって制御されます。このTutorial Module Data Assetには、以下の設定が含まれています。

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

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