UE4.26のPreviewがでました。ちょっと新機能がてんこ盛りですが、調べるほどの時間がないので、今日は小ネタでいきたいと思います。
今回解説するのはUE4の隠れた便利機能である、Cheat Managerについてです。Cheat ManagerはUE4からの機能ではなく、UE3時代からあるUnreal Engineの由緒正しい機能のひとつです。名前だけを直訳すると、ずるい管理者という意味で、チートというのは基本的にゲームでは叩かれる行為です。
ただし、UE4のCheat Managerは開発を楽にし、デバッグをより効率的にするための機能なので、活用しない手はありません。Cheat ManagerはC++を使うことで本領を発揮する機能ですが、実はブループリントからでも活用可能です。今回はC++に頼らずに出来る範囲でCheat Managerを活用してみるという内容です。
Cheat Managerの補足として、Player Controllerに紐付いており、Player Controllerを経由して利用します。またCheat ManagerはDevelopmentビルドでは利用可能ですが、Shippingでは全体の効果が無効化されますのであくまでも開発時専用の機能だと思ってください。
それでは早速実際に使ってみてどのような効果のノードがあるのかを解説していきます。
Change Size
名前の通り現在操作しているプレイヤーのサイズを変更することが可能なノードです。
このノードはCharacterクラスを継承したプレイヤーでないと効果がありません。CharacterのCapsuleコリジョンとメッシュサイズを指定したものに変更します。位置も調整されます。ただし移動速度などは変更されませんので、大きくなっても速く移動できるわけではないので注意してください。
FlyとWalk
名前の通り現在操作しているプレイヤーをFlyモードとWalkモードに切り替えます。
空が飛べるようになるとプレイヤーの移動が非常に楽になります。移動が完了すればWalkに戻すことで通常の状態に戻すことができます。こちらもCharacterクラスでしか利用できませんので注意してください。
Ghost
名前の通り幽霊のように壁などのコリジョンを全て突き抜けて移動ができるようになります。
Ghostモードが開始すると、Flyモードと同様に重力の影響を受けなくなり、どこへでも侵入できるようになります。こちらもCharacterクラス専用です。またFlyとWalkとGhocstはCheat Managerを使わずにコンソールコマンドで呼び出すことも可能ですが、Shippingではこの機能そのものが外れるようになっています。
Teleport
名前の通りテレポート(瞬間移動)を行うノードです。
テレポート位置はカメラの正面方向へレイトレースを行い、ぶつかった先に飛びます。距離は10000m先までみてくれるようです。高速に直線を移動したい時などに非常に便利です。
Damage Target
カメラの正面方向にいるアクターに対して強制的にダメージイベントを発生させます。ダメージ量も指定可能です。
強制的にダメージを与えるので、イベント進行時に敵を一気に倒したい時などに便利です。もちろんダメージを受ける側はDamage系イベントを実装しておく必要があります。
Destroy Target
カメラの正面方向いるアクターを強制的に破壊します。スタティックメッシュだろうがなんでも破壊可能です。
どんなアクターでもなんでも破壊できてしまいます。そのため間違えて地面を向いて使ってしまうとそのまま地面が消滅しますので注意が必要です。
God
名前の通りに受けとると神になるという意味ですが、正確にはダメージを受けなくなる無敵になるというノードです。
ダメージ系のイベントを受けなくなるので、ゲーム中に無数の敵を突破したり、強敵に倒されないようにするということができるので開発時には重宝します。
Freeze Frame
Delayで指定した秒数後にゲームを完全に停止させます。
やっていることはほぼSet Game Pauseと同様で、指定秒数後に止めることができるというもので、解除したい場合には再度Set Game Pauseを何かしらの手段で呼び出す必要があります。Tickや入力も基本的に全て止まるので注意が必要です。
Players Only
名前の通りプレイヤーだけ…ではなく、基本的に全てのアクターのTickと入力を止めてしまうというノードです。Freeze Frameとは違いレンダリングは更新されます。
この機能で止めたくないアクターを実装するためには、ShouldTickIfViewportsOnlyをオーバーライドする必要があります。以下はプレイヤーのみ動けるように動けるようにオーバーライドしたC++実装です。
bool AMyPlayerController::ShouldTickIfViewportsOnly() const { return true; }
UE4.18以前はオーバーライドしなくてもプレイヤーだけが動けたようですが、現在は何かしらの仕様変更によりC++側でオーバーライドする必要ができてしまったようです。プレイヤーのみを動作させる、もしくは特定のアクターのみが動いてほしい場合には非常に便利な機能です。
Slomo
名前の通り、スローモーション、もしくは倍速再生をしたい場合に非常に良く使います。
非常に有名なので使ったことのある人も多いと思いますが、Cheat Managerにある機能ということは知らない人も多いのではないかと。この機能自体はShippingでも動作しますので、ヒットストップやスローモーション演出、または高速移動したい際など実践からデバッグ時まで何でも役立つ機能です。
Enable/Disable Debug Camera
名前の通りデバッグカメラモードの有効化と無効化を行います。この機能も非常に有名です。
キーボードとゲームパッドで自由にカメラを動き回ることが可能です。ただし、ノードからEnableは呼び出すことはできるのですが、Disableはなぜか上手く働いていないようです。※4.25現在
問題がなければコンソールコマンドのToggle Debug Cameraの方は正しく動作しますので、そちらを使った方がよさそうです。
まとめ
Cheat Managerはこの他にも沢山の機能があります。またC++で利用すれば更に機能が増えますし、コンソールコマンドから呼び出せるコマンドも多く用意されています。独自のチートコマンドを追加したりする方法はヒストリアさんの記事でも解説されているので、ぜひ参考にしてCheat Managerを便利に使っていきましょう!