UE5.4のPreview 1がでました。
様々な新機能があり、全てを把握するのは大変ですが、今回はこの中でもゲームプレイに大きく影響しそうな機能をひとつ紹介します。
それはCharacter Mover 2.0という新機能です。
Character Mover 2.0 (Experimental)
この機能は既にUEに存在するCharacter Movement Componentを全て作り直し、新設計された仕組みです。物理やアニメーションやネットワークに関する設計をより合理的に行うために全て刷新するとのことです。
特徴としては…
- Characterクラスだけではなく、全てのActorクラスをサポート
- ネットワークの複雑さを意識せずにキャラの動きの部分に集中できるようにする
- 拡張性とカスタマイズ性を高めてプログラマー以外でも動きを作成できるようにする
- 物理シミュレーションでのオブジェクトのインタラクション性を高める
- 汎用的なロールバックネットワークモデルをサポートする
などが特徴となっています。
全てのActorクラスをサポートしてくれるのは嬉しいですね。他にも物理シミュレーションとのインタラクション性を高めてくれたり、ロールバックネットワークモデルをサポートするなど、ネットワークゲームでの影響はかなり大きくなりそうです。
Mover 2.0の利用方法
UE5.4を起動し、プラグインをオンにするのみです。
3つプラグインがありますが、使用するだけであれば『Mover』プラグインのみでOKです。『Mover Examples』は名前の通りMoverの動作サンプルが色々と入っています。ドキュメントがありませんので、使い方を覚えるのであればこちらをオンにしてみましょう。『Mover Tests』は名前の通りMoverが正しく動作するかのテストサンプルが入っています。あくまで開発者の目線で必要なものなので、不要ですが動作サンプルとしては参考になると思います。
今回は『Mover Examples』の中身を色々みていこうと思います。
Moverクラスについて
Moverを使ってキャラクターを作る際、現状では『MoverBasePawn』クラスを継承して使う必要があります。
すぐに使いたい場合、『Mover Exmaples』プラグインで実装されている『MoverExamplesCharacter』クラスを継承して使うのが最も手っ取り早いです。Moverの本体自体は『MoverComponent』というクラスが用意されているので、実装詳細が知りたい場合はこちらの中を参考にするといいでしょう。Actorクラスを直接継承して使いたい場合は自分でMoverComponentをアタッチして使うことになります。
MoverComponentについてみていきます。MoverComponentの詳細を確認すると様々な機能が内包されていることがわかります。
特に『Movement Modes』の設定はかなり多様な設定が可能なことがわかります。これまでの『Character Movement Component』では予め用意されていた設定をカスタマイズしていく形でしたが、Mover Componentでは用意されたModeを自由に追加削除が可能です。必要なMover設定だけを入れるだけでになるので、不要なものを設定する必要はありません。
ちなみに現在ではこれだけのMovement Modeが用意されています。
『Follow Path Mode』や『Follow Spline Mode』についてはこれまでのCharacter Movement Componentにはなかった設定です。また物理設定がより強く反映される『Physics Driven XXX Mode』も用意されています。
これにより、強いカスタマイズ性が可能となり、必要なものに対してのみ物理設定を入れることも可能となりました。それでは実際に使われている内容をみていきましょう。
サンプルを確認する
『MoverExamples』の中身をみていると、参考となるレベルがいくつか含まれていることがわかります。
Mapsフォルダーの中身をみていくと色々な実装が含まれていることがわかります。試しに『L_BasedMovement』を開いてみます。このレベルでは基本的な移動回りの機能がどう動作するかを確認できます。
移動の履歴の軌跡を表示。
履歴がとれるということはロールバックネットワークをサポートすることができます。
急な傾斜を登ったり、緩やかなのに登れない傾斜があります。
Actorベースで動くオブジェクトがあったりでなんでも動かすことが可能です。
基本的な機能ではありますが、サンプルを多くみることができます。その他にも様々なサンプルがありますので、ぜひ確認してみてください。
カプセルコリジョン以外に変更
これまでのCharacterクラスでは形状がカプセルコリジョンに固定でした。しかしこの制限が遂に解除されます。
本来カプセルコリジョンがあったところをボックスコリジョンに切り替えて、配置してみます。
実際走ってみても特に問題なく動作していることがわかります!
これまで難しかった横向き長方形のコリジョンもこのとおり!
これで車両や四足歩行の動物キャラクターも作りやすくなります。
物理機能
特に進化しているのは物理回りの機能です。これまでも物理と連動させることは可能でしたが、完全な物理挙動にさせるためにはコリジョンをもつコンポーネントを『Simulate Physics』というモードに切り替える必要がありました。ただしこの場合、メッシュとコリジョンで動きが異なり互いに連携させて動かす際には様々な工夫が必要でした。これが簡単になります。
『L_PhysicsSimulatedCharacter』というサンプルレベルを開くと確認ができます。このレベルを開くとプロジェクト設定から『物理予測の有効化』、『物理再シミュレーションの有効化』、『ティック物理非同期』の3つを有効化してくださいという説明がありますので、事前に有効化してください。
このレベルで使われているPawnキャラクターのMover Componentを確認すると、全て物理用に設定されていることがわかります。
このキャラクターを動かして物理で動いているところを確認してみましょう。
傾斜の上に乗ると、足がすべる動きがあることを確認できます。これまでのCharacterクラスではSimulate Physicsモードにしておかないとこのような挙動にはなりませんでした。もちろんその場合、メッシュとコリジョンで整合性をとるのが難しくなります。
またキャラクター同士の押し出しにも対応ができるようになりました。これも動画で確認するとわかりやすいです。
右側のキャラクターのみ物理で動いているので、押し出しができていることがわかります。
これらは全てネットワークにも対応しているので、物理が動きつつ、同期もしっかりとってくれます。これらは前述の通りロールバックネットワークモデルを採用しているため、ロールバックモデルを使うことで、物理は優先的に動きつつ、あとで履歴を確認し、差異があった場合ロールバックして修正するというものです。
詳しくは下記の記事を参考にしてください。
まとめ
Character Mover 2.0についてを簡単ではありますが、紹介してみました。調べていくとまだまだ多くの機能があり、試したい項目が無限にでてくる状態でしたので今回はあくまでもサラっと紹介になりますが、今後は既存のCharacter Movement Conponentを完全に置き換えるものになると確認しました。
単純に機能が増えただけでなく、コンポーネント性が高くなっているので、必要な機能のみを触ることに集中することができます。また拡張性が高いので、独自に作成したクラスをセットすることで独自の挙動を入れやすくなっています。
あとはネットワークでの利用を前提としているので、これまでは難しかった物理シミュレーションを導入しやすくなっています。ロールバックモデルの採用により、違和感がない形で物理が動作するようになっています。
これらの機能はまだまだExperimental(実験的)なので、今後機能が変わる可能性があることを念頭に置いてご利用ください。