
Gtechの長期制作プロジェクト · 4人チーム
Etheria’s End
グラップリングフックで空に浮かぶ島々を渡り、道中で生き物たちに出会う冒険です。4人でUnreal Engineを使って制作しました。
- 担当
- 共同リード・AIとC++システム
- 形式
- PC・シングルプレイ・アクションRPG
- 開発状況
- プレイ可能なデモ
- 使用技術
01プロジェクト
4人で作り上げた冒険。
Etheriaでは、幼なじみのMaelysを救うため旅に出たKaelを操作します。グラップリングフックやグライダー、道中の上昇気流を使って浮遊島を渡ります。
Gtechで取り組んだ長期制作プロジェクトです。導入、村、クエスト、戦闘、ダンジョンを含む、最初から最後まで遊べるデモを完成させました。私は主にAIとC++システムを担当し、ゲームデザインとサウンドデザインにも関わりました。
遊び方
- 01
探索する
登り、スイングし、滑空して島々を渡る。
- 02
謎を解く
複数の解き方があるパズルに挑む。
- 03
戦う
危険を見極め、行動するタイミングを選ぶ。
- 04
休む
焚き火で回復し、セーブする。
02担当したこと
Etheriaで担当した開発。
共同リードとしてAIとC++システムを担当し、ゲームデザインとサウンドデザインにも参加しました。
敵の行動
休眠、巡回、プレイヤーの追跡、戦闘といった敵の状態を実装しました。序盤には穏やかな生き物を、危険なエリアには攻撃的な生き物を配置し、行動を通じて世界の探索にも変化をつけています。
目的地までたどり着ける生き物たち
NavMeshとRVOによる回避を使い、移動処理を実装しました。生き物が動けなくなると、問題を検出して経路を計算し直します。うまく動いていると目立ちませんが、ないとすぐに気づくような処理です。
共同リード、ゲームデザイン、サウンド
共同リードとして、ゲームデザインの判断やサウンドデザインにも参加しました。ゲームの一部分だけにとどまらず、生き物の行動からプレイヤーが見聞きするものまで関われるのが好きです。
03技術について
目を覚まさなくなった敵。
更新処理を減らすため、眠っている敵のTickを無効にしていました。ところが、起きる処理もTickに依存していたのです。眠るのは得意でも、その後はいつまでたっても起きませんでした。
AIの状態
詳しく見る眠っていても、起きるきっかけは残す。
敵は毎フレームの処理を停止します。Tickとは独立したタイマーが、起きる必要があるかを確認し続けます。
FTimerManagerキャラクターの準備ができるまで待つ。
OnPossessがキャラクターのBeginPlayより先に呼ばれることがありました。初期化が終わるよう、巡回の開始を遅らせました。
OnPossess → 初期化 → 巡回動けなくなっても、経路を見つけ直す。
NavMeshで移動経路を計算し、RVOで生き物同士の衝突を避けます。動けなくなった場合は、経路を再計算します。
NavMesh / RVO / 経路の再計算ゲームの反応をつなぐ。
イベントを通じて、クエストやエフェクトを行動につなぎます。生き物が倒れると、アニメーションモンタージュ、Niagaraのエフェクト、消滅処理の順に再生します。
Event Dispatchers状態を選ぶと、その仕組みが見られます。
コードの構成
- BaseAIController
- 判断と経路制御
- BaseAICharacter
- 生き物共通の基底クラス
- AIMovementComponent
- 移動と回避
- AIAnimationComponent
- 動きの分かりやすさ
C++がゲームのロジックを担い、Blueprintsで調整して組み込んでいます。インターフェースとEvent Dispatchersで、システム同士をつないでいます。
開発で選んだこと
起床処理が、無効にしたTickに依存していた
休眠時に、起床条件を確認するTickまで無効にしていました。
条件の確認をFTimerManagerに移しました。敵は更新を止めても、起きる手段を残せます。
巡回の開始が早すぎた
操作対象になったキャラクターのBeginPlayより先に、OnPossessが呼ばれることがありました。
初期化が終わるまで、開始を遅らせました。原因は敵の経路ではなく、イベントの実行順でした。
04画像で見る
画面で見るプロジェクト。
5枚の画像クリックして拡大 ↗
デモからの画像です。グラップリングフックとグライダーはチームで制作した要素です。AIの設定画面では、私が担当した部分をより直接見られます。
島々の中で
Kaelと探索する世界の一場面。
少し物騒な出会い
戦闘中の生き物とその行動。
グラップリングフック
遺跡に届き、勢いをつけ、別の経路を探す。
少し高いところへ
グライダーと上昇気流で、島から島へ移動します。
AIの設定
敵対度、行動、経路制御をエディターで調整できます。
動画は準備中Etheriaを巡る
デモの動画を、後日この画像と一緒に紹介する予定です。
05振り返りとチーム
デモは完成。その先のアイデアも。
最初から最後まで遊べるデモを完成させました。ボスのGolemなど、考えていた要素をすべて入れられたわけではありません。まず、すでにあるプレイの流れをきちんと仕上げることを優先しました。
実装したもの
- コンポーネントで構成したC++の基盤。
- 休眠、経路制御、戦闘を備えた敵。
- 探索、クエスト、パズル、ダンジョンをつなぐプレイの流れ。
現在の状況
- デモの残りの部分に時間を使うため、Golemは延期しました。
- 戦闘と進行のバランスには、まだ調整が必要です。
- 今後の課題:パズルやダンジョンの追加、より早い段階でのビルド自動化。
最初から最後まで遊べるデモを完成させたことで、システムをまとめたときに何が実際に機能するのかを確認できました。
チーム
- Léo Queiros Da Silva
- 共同リード・AI、C++システム、ゲームデザイン、サウンドデザイン
- Shailendra Blondel
- リード・設計とC++システム
- Mathias Rebecca
- 共同リード・物語、レベルデザイン、シネマティクス
- Maurad Bahri
- 開発・VFX、UI、UX
このプロジェクトについて話してみませんか?
話してみる
