【UE5】City Sampleを参考にMass AIでTrafficシステムを作ろうとしたけど駄目だった
Mass AIでTrafficシステム
以前City Sampleを参考にキャラクターを動かした。
【UE5】Mass AIを動かしてみる - Part1 表示するまで - PavilionDV7の雑多なやつ
人は動かせたので次はTrafficシステム(つまり車両)を動かせるようにしようとチャレンジしてみた。 結果として動作はするが、ある機能を有効にするとプレイ直後にアサーションに引っかかりエディタが落ちる、
プロジェクトのダウンロードはこちら
もしかすると自PCのスペックが低いことでうまく動作できなかった可能性もあるため、一応こちらにプロジェクトを置いておく。
https://1drv.ms/u/s!Au-8FqgREBKZjwFxLgEnOC3VNqgw?e=LfqQmI
Spawn数を増やしても問題なく動作する場合、Twitterやコメントにでも「普通に動いた」とか書いてくれると嬉しい。
クラッシュまでの道のり
プロジェクトを開くと背景が真っ黒になっているが、これは自PCで少しでも快適に動かせるようにDirectional LightとSky Light以外の見た目に関するアクターを消したため。気にしないこと。
まず10台、20台出しても問題なかった設定で動かしてみる。
- Outlinerパネルから[MassSpawner1]を選択する。
- Detailsパネルの[Entity Types -> Index[0] -> Entity Config]にある[MY_VEHICLE_ENTITY_CONFIG]を開く
[Traits -> Index[1] -> Params -> LOD Representation -> Low]を[None]にセットする
実行する
コースが狭いこともあり車両同士の衝突事故が相次ぐこともあるが、数を増やしてもエディタがクラッシュすることは無かった。
次に自環境でクラッシュするようにセッティングする。先の手順の3番目でセットした値を「Static Mesh Instance」にセットし直すだけ。
- Outlinerパネルから[MassSpawner1]を選択する。
- Detailsパネルの[Entity Types -> Index[0] -> Entity Config]にある[MY_VEHICLE_ENTITY_CONFIG]を開く
[Traits -> Index[1] -> Params -> LOD Representation -> Low]を[Static Mesh Instance]にセットする
実行する
自分の環境ではこれで無事にクラッシュする。
ちなみにCity SampleではMass Entity Configアセットの内容は少し異なる(使用しているブループリントやStatic Mesh等)が、50台スポーンさせてもクラッシュすることはなかった。
5. 解決したかも
Static Meshで利用するマテリアルで以下のツイートのように[Per Instance Custom Data]ノードを追加し、Project Settingsから検索バーでMassUpdateISMと検索し[Module Settings -> Mass Entity -> Processor CDOs -> Index[84] -> Auto Register with Processing Phases]のチェックを外せば動作した。
Mass AIのTrafficでスポーンさせるStatic Meshには使用するマテリアルで画像の「重要」とコメントされているノードが必須。緑のやつはScalar ParamにてUse Custom Primitive Dataを有効にしたもの。
— PavilionDV7 (@Dv7Pavilion) May 17, 2022
アトリビュートのInputピンに接続しなくても評価はされるようで、置くだけで実行できるようになった。 pic.twitter.com/ZkQGgENLfZ