Edited at

【UE4】AIのExample Projectを作ってみました(フォルダ構造編)

More than 1 year has passed since last update.


はじめに


プロジェクトはこんな感じになりました。#EpicFriday #UE4 pic.twitter.com/x6bpZ75Zvn

— PavilionDV7 (@Dv7Pavilion) 2018年1月5日

動画が見れない方はこちら

昨年の11月、12月に

【UE4】AISense_Sightの視線チェックを改良する

【UE4】異音を聞いた時のAIの振る舞いを良い感じにしてみた

このような記事を書きました。以前には「【UE4】AI Perception の紹介と使い方」といった記事も書いていたので「いっちょこれらの機能を一纏めにしたサンプルプロジェクト作るかぁ」と思い立ったので作ってみました。(丁度Watch Dogsをプレイしていたこともあって「ある程度は再現できそうだな」と思ったのもあります)

作ったプロジェクトは丸ごとOneDriveの方にアップしていますので今回の記事ではプロジェクトの歩き方的なお話をメインに、どのフォルダにどのようなアセットがあるのかというのを紹介していきます。


プロジェクトはこちらです!

今回解説するプロジェクトはOneDriveにアップしてあります。バージョンは4.18.2です。

StealthGameExample_Ver1_5.zip


プロジェクトの歩き方


フォルダ構造

フォルダの構造は

Gamemakin UE4スタイルガイド



2. コンテンツディレクトリの構成について

に則って構成されています。

2018-01-06_17h22_48.png

コンテンツ(Content)フォルダ内にプロジェクトと同名のフォルダがあります(黄緑枠)

これは「2.2 プロジェクト固有アセットには、トップレベルのフォルダを使うこと」にあるようにプロジェクト固有のアセットが含まれています。

プロジェクトをダウンロードされた方は基本的に黄緑枠を見ることになります。


C++クラス - StealthGameExample

2018-01-06_17h31_05.png

このフォルダにはC++で定義されたクラス達が格納されています。

AIに「ある動作」をさせるために必要なインターフェースの継承や関数のオーバーライドを行っています。


Coreフォルダ

2.5 クリティカルなブループリントやその他のアセットのために、 Core フォルダを使うこと

UE4スタイルガイドでCoreフォルダは以下のブループリントが所属することになっています。


たとえば、 GameMode、Character、 PlayerController、GameState、 PlayerState、および関連するブループリントはここに属していなければなりません。


自分のプロジェクトもCoreフォルダには「キャラクタの基底BPやBPインターフェース」、「武器の基底BPやBPインターフェース」、「AIが動作するのに必要なBP(デザイナが触る必要の無いもの)」等が入っています。

2018-01-06_17h03_41.png

しかし一つ例外があります。

PlayerControllerは以下のように

2018-01-06_17h04_55.png

Characterフォルダ内のPlayerフォルダに格納されています。

申し訳ありません。これは純然たる自分のミスです。


これは非常に明確な「これらに触れないでください」という他のチームメンバーへのメッセージになります。


引用したとおりPlayerControllerはCoreフォルダに置くべきで担当者以外が触れてしまう状況に晒してしまうと大きなトラブルになる可能性もあります。

これを読んでくださっている皆さんには是非気をつけて頂きたいと思います。


Charactersフォルダ

2018-01-09_14h00_05.png

このフォルダにはCoreフォルダに有る基底BPを継承したブループリントが格納されており、ブループリントには各キャラクタ固有のアクションが実装されています。

ブループリント以外にもフォルダ名に関連するアニメーションBPやインターフェースBP、列挙型等も格納されています。

「AIの実装はどうなっているのだろう?」「プレイヤーはどう実装されているのだろう?」と疑問に思った方は大体このフォルダにあるアセットを見れば解決すると思います。


Controllableフォルダ

2018-01-06_19h56_23.png

このフォルダはUE4スタイルガイドには例で示されていないフォルダですが「Controllable」という名が付いている通り実際に操作できるアクタを格納しているフォルダです。

フォルダにはSecurityCameraブループリントや構成に必要な各アセットが格納されています。

Charactersフォルダに格納せずControllableというフォルダに格納した明確な理由は特にありません

ただ何となく「キャラクターでは無いよなぁ。Watch Dogsにあるハッキング可能なオブジェクトというだけだし...」というぼんやりとした考えです。

もしも複数名でのチーム制作の場合はここらへんの分類はきちんとしておいたほうが良いかもしれません。

「プレイヤーが操作可能なオブジェクトは全てCharactersフォルダに入れる」でも問題は無いでしょう。


Weaponsフォルダ

2018-01-06_21h00_05.png

このフォルダにはCoreのWeaponsフォルダにある基底クラスを継承した各種武器を実装しています。


終わりに

フォルダ構造編は以上で終了です。

このプロジェクトを覗くにあたって多くの方が知りたいであろうアセットが入っているフォルダを紹介してみました。

次回は各アセットが実装している機能を紹介&解説していこうと思います。

以上となります。お疲れ様でした。