#はじめに
プロジェクトはこんな感じになりました。#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です。
#プロジェクトの歩き方
##フォルダ構造
フォルダの構造は
Gamemakin UE4スタイルガイド
の
2. コンテンツディレクトリの構成について
に則って構成されています。
コンテンツ(Content)フォルダ内にプロジェクトと同名のフォルダがあります(黄緑枠)
これは「2.2 プロジェクト固有アセットには、トップレベルのフォルダを使うこと」にあるようにプロジェクト固有のアセットが含まれています。
プロジェクトをダウンロードされた方は基本的に黄緑枠を見ることになります。
###C++クラス - StealthGameExample
このフォルダにはC++で定義されたクラス達が格納されています。
AIに「ある動作」をさせるために必要なインターフェースの継承や関数のオーバーライドを行っています。
###Coreフォルダ
2.5 クリティカルなブループリントやその他のアセットのために、 Core フォルダを使うこと
UE4スタイルガイドでCoreフォルダは以下のブループリントが所属することになっています。
たとえば、 GameMode、Character、 PlayerController、GameState、 PlayerState、および関連するブループリントはここに属していなければなりません。
自分のプロジェクトもCoreフォルダには**「キャラクタの基底BPやBPインターフェース」、「武器の基底BPやBPインターフェース」、「AIが動作するのに必要なBP(デザイナが触る必要の無いもの)」等**が入っています。
しかし一つ例外があります。
PlayerControllerは以下のように
Characterフォルダ内のPlayerフォルダに格納されています。
申し訳ありません。これは純然たる自分のミスです。
これは非常に明確な「これらに触れないでください」という他のチームメンバーへのメッセージになります。
引用したとおりPlayerControllerはCoreフォルダに置くべきで担当者以外が触れてしまう状況に晒してしまうと大きなトラブルになる可能性もあります。
これを読んでくださっている皆さんには是非気をつけて頂きたいと思います。
このフォルダにはCoreフォルダに有る基底BPを継承したブループリントが格納されており、ブループリントには各キャラクタ固有のアクションが実装されています。
ブループリント以外にもフォルダ名に関連するアニメーションBPやインターフェースBP、列挙型等も格納されています。
「AIの実装はどうなっているのだろう?」「プレイヤーはどう実装されているのだろう?」と疑問に思った方は大体このフォルダにあるアセットを見れば解決すると思います。
このフォルダはUE4スタイルガイドには例で示されていないフォルダですが「Controllable」という名が付いている通り実際に操作できるアクタを格納しているフォルダです。
フォルダにはSecurityCameraブループリントや構成に必要な各アセットが格納されています。
Charactersフォルダに格納せずControllableというフォルダに格納した明確な理由は特にありません。
ただ何となく「キャラクターでは無いよなぁ。Watch Dogsにあるハッキング可能なオブジェクトというだけだし...」というぼんやりとした考えです。
もしも複数名でのチーム制作の場合はここらへんの分類はきちんとしておいたほうが良いかもしれません。
「プレイヤーが操作可能なオブジェクトは全てCharactersフォルダに入れる」でも問題は無いでしょう。
このフォルダにはCoreのWeaponsフォルダにある基底クラスを継承した各種武器を実装しています。
#終わりに
フォルダ構造編は以上で終了です。
このプロジェクトを覗くにあたって多くの方が知りたいであろうアセットが入っているフォルダを紹介してみました。
次回は各アセットが実装している機能を紹介&解説していこうと思います。
以上となります。お疲れ様でした。