プロジェクト 01 09
森と浮遊島を背景に立つEtheriaの主人公

Gtechの長期制作プロジェクト · 4人チーム

Etheria’s End

グラップリングフックで空に浮かぶ島々を渡り、道中で生き物たちに出会う冒険です。4人でUnreal Engineを使って制作しました。

担当
共同リード・AIとC++システム
形式
PC・シングルプレイ・アクションRPG
開発状況
プレイ可能なデモ
使用技術
Unreal Engine 5.6C++BlueprintsAI

01プロジェクト

4人で作り上げた冒険。

Etheriaでは、幼なじみのMaelysを救うため旅に出たKaelを操作します。グラップリングフックやグライダー、道中の上昇気流を使って浮遊島を渡ります。

Gtechで取り組んだ長期制作プロジェクトです。導入、村、クエスト、戦闘、ダンジョンを含む、最初から最後まで遊べるデモを完成させました。私は主にAIとC++システムを担当し、ゲームデザインとサウンドデザインにも関わりました。

遊び方

  1. 01

    探索する

    登り、スイングし、滑空して島々を渡る。

  2. 02

    謎を解く

    複数の解き方があるパズルに挑む。

  3. 03

    戦う

    危険を見極め、行動するタイミングを選ぶ。

  4. 04

    休む

    焚き火で回復し、セーブする。

02担当したこと

Etheriaで担当した開発。

共同リードとしてAIとC++システムを担当し、ゲームデザインとサウンドデザインにも参加しました。

01

敵の行動

休眠、巡回、プレイヤーの追跡、戦闘といった敵の状態を実装しました。序盤には穏やかな生き物を、危険なエリアには攻撃的な生き物を配置し、行動を通じて世界の探索にも変化をつけています。

  • AI
  • C++
  • 行動状態
02

目的地までたどり着ける生き物たち

NavMeshとRVOによる回避を使い、移動処理を実装しました。生き物が動けなくなると、問題を検出して経路を計算し直します。うまく動いていると目立ちませんが、ないとすぐに気づくような処理です。

  • NavMesh
  • RVO
  • 経路の復帰処理
03

共同リード、ゲームデザイン、サウンド

共同リードとして、ゲームデザインの判断やサウンドデザインにも参加しました。ゲームの一部分だけにとどまらず、生き物の行動からプレイヤーが見聞きするものまで関われるのが好きです。

  • 共同リード
  • ゲームデザイン
  • サウンドデザイン

03技術について

目を覚まさなくなった敵。

更新処理を減らすため、眠っている敵のTickを無効にしていました。ところが、起きる処理もTickに依存していたのです。眠るのは得意でも、その後はいつまでたっても起きませんでした。

AIの状態

詳しく見る

眠っていても、起きるきっかけは残す。

敵は毎フレームの処理を停止します。Tickとは独立したタイマーが、起きる必要があるかを確認し続けます。

FTimerManager

状態を選ぶと、その仕組みが見られます。

コードの構成

BaseAIController
判断と経路制御
BaseAICharacter
生き物共通の基底クラス
AIMovementComponent
移動と回避
AIAnimationComponent
動きの分かりやすさ

C++がゲームのロジックを担い、Blueprintsで調整して組み込んでいます。インターフェースとEvent Dispatchersで、システム同士をつないでいます。

開発で選んだこと

起床処理が、無効にしたTickに依存していた

出発点

休眠時に、起床条件を確認するTickまで無効にしていました。

取り組んだこと

条件の確認をFTimerManagerに移しました。敵は更新を止めても、起きる手段を残せます。

巡回の開始が早すぎた

出発点

操作対象になったキャラクターのBeginPlayより先に、OnPossessが呼ばれることがありました。

取り組んだこと

初期化が終わるまで、開始を遅らせました。原因は敵の経路ではなく、イベントの実行順でした。

04画像で見る

デモからの画像です。グラップリングフックとグライダーはチームで制作した要素です。AIの設定画面では、私が担当した部分をより直接見られます。

森と浮遊島を背景に立つEtheriaの主人公動画は準備中

Etheriaを巡る

デモの動画を、後日この画像と一緒に紹介する予定です。

05振り返りとチーム

デモは完成。その先のアイデアも。

最初から最後まで遊べるデモを完成させました。ボスのGolemなど、考えていた要素をすべて入れられたわけではありません。まず、すでにあるプレイの流れをきちんと仕上げることを優先しました。

実装したもの

  • コンポーネントで構成したC++の基盤。
  • 休眠、経路制御、戦闘を備えた敵。
  • 探索、クエスト、パズル、ダンジョンをつなぐプレイの流れ。

現在の状況

  • デモの残りの部分に時間を使うため、Golemは延期しました。
  • 戦闘と進行のバランスには、まだ調整が必要です。
  • 今後の課題:パズルやダンジョンの追加、より早い段階でのビルド自動化。
振り返って

最初から最後まで遊べるデモを完成させたことで、システムをまとめたときに何が実際に機能するのかを確認できました。

チーム

Léo Queiros Da Silva
共同リード・AI、C++システム、ゲームデザイン、サウンドデザイン
Shailendra Blondel
リード・設計とC++システム
Mathias Rebecca
共同リード・物語、レベルデザイン、シネマティクス
Maurad Bahri
開発・VFX、UI、UX

このプロジェクトについて話してみませんか?

話してみる