Stack O Bot は、Unreal Engine を使用したゲーム開発について学ぶための学習リソースとして作成されたサンプル ゲーム プロジェクトです。 このデモでは、プロシージャル コンテンツ生成 (PCG)、ブループリント、レベル インスタンスなど、さまざまなエンジン機能を示します。 このサンプル プロジェクトには、デザインの選択や実装に関するゲーム内のデベロッパーのコメントが含まれ、ブループリントとマテリアルに対するコメントも含まれます。
Stack O Bot では、プレイヤーがサードパーソン パースペクティブのロボット キャラクターを操作して、一連のプラットフォームの課題と物理ベースのパズルを完了しなければなりません。 携帯電話からハイエンド PC まで、幅広いデバイスに対応しており、キーボード、マウス、コントローラー、タッチスクリーンの入力で操作できます。
このページでは、Stack O Bot サンプル プロジェクトを開く方法を説明し、プロジェクトの主な機能の概要と、詳細な学習のための関連ドキュメントへのリンクを提供しています。
Stack O Bot プロジェクトを開く
このページで説明する Stack O Bot サンプルは、Unreal Engine 5.6 を使用してビルドされています。 以前の Stack O Bot サンプルをお試しになるには、エンジン バージョン 5.6 より前のプロジェクトをダウンロードしてください。
Stack O Bot サンプル プロジェクトを開くには、次の手順を実行します。
Fab から Stack O Bot サンプルに移動して、[ライブラリに追加] をクリックします。
また、Unreal Engine 版 Fab プラグインでサンプル プロジェクトを検索することもできます。
Stack O Bot に移動し、[プロジェクトの作成] をクリックします。
Epic Games Launcher で、[Unreal Engine] > [ライブラリ] > [Fab ライブラリ] に移動します。
プロジェクトの名前と場所を入力します。
エンジンバージョンとして [5.6] を選択します。
[Create (作成)] をクリックします。 プロジェクトが開きます。
Unreal Engine 用のサンプル コンテンツや Fab プラグインへのアクセス方法については、「サンプルとチュートリアル」を参照してください。
推奨システム スペック
Stack O Bot は、携帯電話や PC など、さまざまなデバイスをサポートするように設計されています。 このコンテンツは詳細レベルをスケールし、モバイルとの完全な互換性も備えています。
PC で推奨されるシステム仕様は次のとおりです。
Windows 10 64 ビット版 1909 revision .1350以降、またはバージョン 2004 および 20H2 リビジョン .789以降
Windows 11 は Unreal Engine 5 に対応しており、推奨仕様に適合しています。
Quad-core Intel または AMD, 2.5 GHz 以上
32 GB のシステム RAM
8 GB の VRAM
DirectX 11 または DirectX 12 対応のグラフィック カード
Stack O Bot プロジェクトをナビゲートする
Stack O Bot プロジェクトを開くと、レベル エディタでデフォルトで Lvl_Empty マップが開きます。このマップでは、このサンプル プロジェクトを使用するための情報が画面に表示されます。
サンプル プロジェクトのほとんどのコンテンツは、「/Content/StackOBot/」フォルダーに格納されています。 メインのゲーム マップ Lvl_StackOBot は、「/Content/StackOBot/Maps」フォルダーにあります。
ゲームをプレイするには、メイン ツールバーのプレイ アイコンをクリックします。
ゲームは Lvl_MainMenu マップに含まれるメイン メニューから始まります。 [プレイ] をクリックしてメイン ゲーム マップである Lvl_StackOBot に移動します。
メインのゲーム マップには、プレイヤーが近づくとデベロッパーのコメントをトリガーするバブル アイコンが含まれます。 この解説では、デベロッパーが Stack O Bot を制作する際に行った実装の詳細や設計上の決定事項についていくつか説明します。
デベロッパー コメント バブルのコンテンツは、「/Content/DevCom」フォルダーにあります。
Stack O Bot のゲーム内コントロール
Stack O Bot をプレイするために、プレイヤーはキーボード、マウス、コントローラー、またはタッチスクリーンのコントロールを使用できます。
| 操作 | キーボードとマウス | コントローラー | タッチ (下図を参照) |
|---|---|---|---|
移動 | W、A、S、D | 左サムスティック | 1 |
注視 | マウス | 右サムスティック | 2 |
Jump | スペース (押す) | 底面ボタン (押す) | 3 (押す) |
ジェットパック | スペース (長押し) | 底面ボタン (長押し) | 3 (長押し) |
Grab | E | 右トリガー | 4 |
一時停止する | Esc または左 Shift | 開始ボタン | 5 |
Stack O Bot の機能
このセクションでは、Stack O Bot サンプル プロジェクトで使用した機能と、プロジェクト フォルダー内の関連するアセットの場所について説明します。
レベルの概要
Stack O Bot では、まず、シーケンサーを使用したレベル シーケンスとして作成されたレベルを説明します。 レベル シーケンスでは、3 つのシネマティック カメラとカメラ カット トラックを使用して、レベルを移動し、ゲーム マップのさまざまな要素を表示します。
レベル シーケンス (SQ_Lvl1_fly) は「/Content/StackOBot/Maps」フォルダーにあります。
カスタマイズ可能サードパーソン キャラクター
Stack O Bot プロジェクトには、移動したりジャンプしたり、ノンプレイヤー キャラクター (NPC) やオブジェクトとインタラクトできるサードパーソン キャラクターが含まれています。 キャラクター BP_Bot のブループリントは、アニメーション グラフ、コントロール リグ、およびカスタマイズ可能なマテリアルを組み合わせています。
アニメーション グラフは、立っている、走っている、ジャンプしているなど、さまざまな状態のキャラクターをアニメートするために使用されます。 コントロール リグは、キャラクターの脚をさまざまなサーフェスに配置したり、ボタンを押すときに手をボタンの位置にガイドしたりするなど、コンテキスト アニメーションに使用されます。 カスタマイズ可能なマテリアルには、キャラクターの色の組み合わせや顔の表情を変更するためのパラメータが含まれます。
BP_Bot ブループリントは「/Content/StackOBot/Blueprints/Character」フォルダーにあり、キャラクター アニメーションとマテリアルは「/Content/StackOBot/Characters/Bot」フォルダーにあります。
プロシージャル コンテンツ生成 (PCG)
Stack O Bot のマップは、プロシージャル コンテンツ生成 (PCG) を使用して作成されています。 浮島、フォリッジ、プラットフォーム、六角形のドーム、フェンス、コイン スポナーなど、多くのアセットの作成には PCG が使用されています。
プラットフォームは、サイズを設定し、既存のタイルのピースを使用して、プラットフォームの視覚的な一貫性を保つために作成されます。 ドームはマップ全体に配置されていますが、レベルの入口と出口をドームのない領域に設定できます。
このフェンスは、スプライン PCG_BP_FenceSpline をサンプリングする PCG システムを使用して作成され、ルールを適用して、ポストやエンド キャップなど、フェンスのさまざまな部分を生成します。 このマップには、PCG を使用してスプラインに沿ってコインをスポーンさせるコイン スポナーも含まれています。
PCG コンテンツは「/Content/StackOBot/Blueprints/PCG」フォルダーにあります。
スマート UV レス マテリアル
Stack O Bot プロジェクトでは、スマート UV レス マテリアルを使用して、フローティング プラットフォーム、金属製のシリンダー、バイオドーム構造の金属部分など、コンクリート、金属、または塗装されたサーフェスを持つマップ内のすべてのメッシュに高品質のテクスチャを適用しています。 メッシュの各セクションに UV チャンネル を作成する代わりに、モデリング ツールを使ってそれぞれのメッシュに 頂点カラー 情報を追加しました。 スマート マテリアルはその頂点カラーを使用して各メッシュでテクスチャを配置します。
HLOD 生成
Stack O Bot のマップは大規模で、レンダリングするアセットが多数あるため、プロジェクトでは Unreal Engine の Hierarchical Level of Detail (HLOD) システムを使用してゲームをプレイするときのパフォーマンスを向上させています。
StateTree NPC の動作
Stack O Bot には、プレイヤー キャラクターとインタラクトできる NPC が含まれています。 NPC は、マップのさまざまな場所を歩き回り、プレイヤーが近くにいる場合は追跡し、プレイヤーに衝突してノックバックし、プレイヤー キャラクターが頭の上でジャンプしたときに破壊されます。 NPC の動作は、StateTree を使用して制御されます。StateTree は、各 NPC のさまざまな状態 (アイドル、歩行、死亡など) と、各状態でNPCが定義するアクションを定義します。
NPC の StateTree は「/Content/StackOBot/AI/STree_Bug」フォルダーにあります。
モジュール式レベル インスタンス
Stack O Bot は、レベル インスタンスを使用して再利用可能なモジュール式レベル セグメントを作成します。 たとえば、浮島のバリアントを備えたレベル インスタンスは、新しいエリアごとに固有のコンテンツを作成することなくゲーム マップをビルドするために使用できます。
各レベル インスタンスは、スタンドアローン マップとして再生することも、ワールド パーティションのマップに追加することもできます。 別のマップに配置された場合、各インスタンスにはトランスフォームがあるため、回転および位置設定が可能です。
オブジェクトの詳細パネルで、「Main World Only」としてタグ付けされたオブジェクトをインスタンスに追加できます。 これらのオブジェクトは、インスタンスがスタンドアロン マップとして再生されている場合にのみ表示され、World Partitionマップのレベル インスタンスとして使用されている場合は表示されません。 ライティング、プレイヤー スタート、および World Partition マップでは使用しないが、レベル インスタンスをスタンドアロン マップとしてテストおよびデバッグする場合に使用する、[メイン ワールドのみ] チェックボックスをオンにします。
レベル インスタンスは「/Content/StackOBot/Maps/LevelInstances」フォルダーにあります。 メイン ワールドのみとタグ付けされているオブジェクトを使用するレベル インスタンスには、これらのオブジェクトを含む「Main World」フォルダーがあります。
物理ベースのインタラクション
Stack O Bot では Unreal Engine の物理システムを使用して、物理オブジェクト、インタラクション、破壊を実装しています。
積み重ね可能な木箱などの物理オブジェクトの場合、プレイヤー キャラクターは物理ハンドルを使用してオブジェクトを掴みます。 バウンス パッドやファンなどのオブジェクトは、物理コマンドを使用してプレイヤーを空中に飛ばします。 フローティング プラットフォームと橋では、物理コンストレイント設定を使用します。 屋根やリスポーン プラットフォームなど、被破壊オブジェクトには、Chaos マスター フィールドがトリガーする事前に破砕されたジオメトリ コレクションが使用されます。
物理オブジェクトは「/Content/StackOBot/Blueprints/PhysicsElements」フォルダーにあります。
動的カメラ
Stack O Bot は、カスタム プレイヤー カメラ マネージャー (BP_CamManager) を使用して、次の 3 つの異なるカメラ タイプを作成します。
プレイヤーの背後を追跡するサードパーソン カメラ
シネマティック角度からゲーム マップのさまざまな要素を示すよう設計された、固定されたサードパーソン パースペクティブ
古典的な 2D プラットフォーム ゲームのスタイルを再現するために設計された横スクロールの実装
プレイヤーを追跡するサードパーソン カメラは、メイン マップのほとんどの部分で使用されています。 特定の移動するプラットフォームに立っていると、カメラはロックされたサードパーソン パースペクティブに切り替わります。 マップの一部では、カメラが横スクロールのパースペクティブに切り替わります。
カメラ マネージャーは、ブループリント アクタ (BP_GameCamVolume)、カメラ マネージャーのロジック、マネージャーとブループリント アクタ間で通信するためのインターフェース (BPI_CamManager) を使用して、3 つのカメラ タイプの全ての間でトランジションを行います。
カメラ マネージャーとゲーム カメラ ボリュームのブループリントは、「/Content/StackOBot/Blueprints/Camera」フォルダーにあります。
ゲームプレイインタラクション
Stack O Bot には、プレイヤー キャラクターがインタラクトできるアクタに追加されるインタラクション ハンドラコンポーネントが含まれています。 これは、ボタンや圧力パッドなどのオブジェクトに適用されます。
木箱など、掴むことができるオブジェクトには、BP_Bot の Grab_Check 関数によってチェックされる [GRAB アクタ] タブがあります。 掴まれたオブジェクトは Grab_Update 関数で更新されます。
インタラクション ハンドラ コンポーネントは「/Content/StackOBot/Blueprints/GameElements」フォルダーにあります。 掴むロジックは BP_Bot ブループリントに含まれています。BP_Bot ブループリントは、「/Content/StackOBot/Blueprints/Character」フォルダーにあります。
目標の追跡
Stack O Bot は、ゲーム モードを使用して目標システムを実装します。 インタラクティブ アクタのタグ付けには、インタラクション ハンドラ ブループリント コンポーネントの IsObjective ブーリアンを使用します。 プレイヤーがタグ付けされたアクタとインタラクトすると、目標が更新されます。
目標はゲームのユーザー インターフェース (UI) で追跡されます。 インタラクション ハンドラは、オブジェクトのステータスを UI に送信し、必要に応じて UI を更新します。
また、目標は、目標ごとに 1 つのライトを備えた BP_Portal アクタによってマップに視覚的に表示されます。 目標を完了するとライトが点灯します。 すべての目標が完了し、全てのライトが点灯すると、ポータルがアクティブになり、トリガー コリジョンが有効になります。 この有効化により、プレイヤーはポータルに入るとマップを完了できます。 インタラクション ハンドラ コンポーネントはライトとポータルのロジックを管理します。
インタラクション ハンドラ コンポーネント (BPC_InteractionHandler) とポータル ブループリント (BP_Portal) は、「/Content/StackOBot/Blueprints/GameElements」フォルダーにあります。 ユーザー インターフェース アセット (HUD_InGame) は「/Content/StackOBot/Blueprints/Framework」フォルダーにあります。