ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE5】〈Tips〉UE4とUE5のステートマシンの比較とステートエリアス(State Alias)についてメモ

目次

 

はじめに

UE5のThirdPersonテンプレからアニメーションステートの中身が変更され、ステートマシンにも変化があったのでメモ。

ここで触れているのはMainStatesの中身です。

f:id:namiton:20220413112020p:plain

認識違いなどミスがあったらコメントで指摘お願いします。

 

UE4

f:id:namiton:20220413102413p:plain

 

▼UE5

f:id:namiton:20220413102440p:plain

 

メモ

 

UE4との違い

まず大きなところでは足のIKが標準で利用できるようになっているところ。

f:id:namiton:20220413110026p:plain

それを実現するにコントロールリグが利用されている。

コントロールリグについては割愛

f:id:namiton:20220413110123p:plain

ステート内にもコントロールリグ用のノードが追加されている。

f:id:namiton:20220413110226p:plain

 

もう一つは落下モーション時の変化。

f:id:namiton:20220413110735p:plain

f:id:namiton:20220413110808p:plain

UE4ではジャンプスタートモーション落下直後に再生されるが、UE5ではすぐに落下中のアニメーションが再生される。

細かいところだが、UE4ではジャンプをするだけの設計で、UE5では落下も考慮した設計に変更されているのが分かる。

 

▼ジャンプスタートを無視して直接落下モーションに移動している。

f:id:namiton:20220413111138p:plain

 

②ステータス エイリアス

ステート間の遷移を制御してくれるノードらしい。

使い方はシンプル。

選択したステータスに遷移すると、このノードから繋がれている遷移条件が判定される。遷移条件を満たしていれば、このノードにワープして処理が走る。

 

GlobalAliasはどこの遷移にいても判定を行うかどうかの項目のようだ(未確認)

f:id:namiton:20220413102639p:plain

 

例えばこれまでの機能でこの遷移を実現しようとしたら、以下の画像のようにジャンプ動作だけで複数のステートから同じ条件分岐を出す必要がある。

 

これでは、今後アクションが増えていくたびに考慮する遷移が増えていき管理が大変になってしまう。

 

▼ステートエリアスを使わないで書いた場合

f:id:namiton:20220413103552p:plain


それを回避するために出てきたであろうステートエリアス。

コンセントの延長ケーブルのように遷移を中継していて、遷移可能なステートに到達している間に中継先の条件を確認しているようだ。

 

▼左が通常の書き方、右がステートエリアスで中継した書き方

f:id:namiton:20220413104549p:plain


遷移条件でステートマシン内が視覚的に複雑にならないように、かつ柔軟性が高い仕組みになっていると感じた。

 

ただ、意識して利用しないと表面上は整理されているが、裏では大量の遷移を確認する処理が走る原因にもなりそうな予感がしたので注意した設計を行いたい。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。