Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 Cheat Managerを活用しよう

UE4.26のPreviewがでました。ちょっと新機能がてんこ盛りですが、調べるほどの時間がないので、今日は小ネタでいきたいと思います。

今回解説するのはUE4の隠れた便利機能である、Cheat Managerについてです。Cheat ManagerはUE4からの機能ではなく、UE3時代からあるUnreal Engineの由緒正しい機能のひとつです。名前だけを直訳すると、ずるい管理者という意味で、チートというのは基本的にゲームでは叩かれる行為です。

ただし、UE4のCheat Managerは開発を楽にし、デバッグをより効率的にするための機能なので、活用しない手はありません。Cheat ManagerはC++を使うことで本領を発揮する機能ですが、実はブループリントからでも活用可能です。今回はC++に頼らずに出来る範囲でCheat Managerを活用してみるという内容です。

実際のC++とBPのAPI一覧は以下にあります。

docs.unrealengine.com

docs.unrealengine.com

Cheat Managerの補足として、Player Controllerに紐付いており、Player Controllerを経由して利用します。またCheat ManagerはDevelopmentビルドでは利用可能ですが、Shippingでは全体の効果が無効化されますのであくまでも開発時専用の機能だと思ってください。

それでは早速実際に使ってみてどのような効果のノードがあるのかを解説していきます。

Change Size

名前の通り現在操作しているプレイヤーのサイズを変更することが可能なノードです。

f:id:alwei:20200926154200p:plain

このノードはCharacterクラスを継承したプレイヤーでないと効果がありません。CharacterのCapsuleコリジョンとメッシュサイズを指定したものに変更します。位置も調整されます。ただし移動速度などは変更されませんので、大きくなっても速く移動できるわけではないので注意してください。

f:id:alwei:20200926154721p:plain

FlyとWalk

名前の通り現在操作しているプレイヤーをFlyモードとWalkモードに切り替えます。

f:id:alwei:20200926155005p:plain

空が飛べるようになるとプレイヤーの移動が非常に楽になります。移動が完了すればWalkに戻すことで通常の状態に戻すことができます。こちらもCharacterクラスでしか利用できませんので注意してください。

f:id:alwei:20200926155334p:plain

Ghost

名前の通り幽霊のように壁などのコリジョンを全て突き抜けて移動ができるようになります。

f:id:alwei:20200926155612p:plain

Ghostモードが開始すると、Flyモードと同様に重力の影響を受けなくなり、どこへでも侵入できるようになります。こちらもCharacterクラス専用です。またFlyとWalkとGhocstはCheat Managerを使わずにコンソールコマンドで呼び出すことも可能ですが、Shippingではこの機能そのものが外れるようになっています。

f:id:alwei:20200926155928p:plain

Teleport

名前の通りテレポート(瞬間移動)を行うノードです。

f:id:alwei:20200926160433p:plain

テレポート位置はカメラの正面方向へレイトレースを行い、ぶつかった先に飛びます。距離は10000m先までみてくれるようです。高速に直線を移動したい時などに非常に便利です。

f:id:alwei:20200926161340g:plain

Damage Target

カメラの正面方向にいるアクターに対して強制的にダメージイベントを発生させます。ダメージ量も指定可能です。

f:id:alwei:20200926162005p:plain

強制的にダメージを与えるので、イベント進行時に敵を一気に倒したい時などに便利です。もちろんダメージを受ける側はDamage系イベントを実装しておく必要があります。

f:id:alwei:20200926162148g:plain

Destroy Target

カメラの正面方向いるアクターを強制的に破壊します。スタティックメッシュだろうがなんでも破壊可能です。

f:id:alwei:20200926162335p:plain

どんなアクターでもなんでも破壊できてしまいます。そのため間違えて地面を向いて使ってしまうとそのまま地面が消滅しますので注意が必要です。

f:id:alwei:20200926162907g:plain

God

名前の通りに受けとると神になるという意味ですが、正確にはダメージを受けなくなる無敵になるというノードです。

f:id:alwei:20200926163314p:plain

ダメージ系のイベントを受けなくなるので、ゲーム中に無数の敵を突破したり、強敵に倒されないようにするということができるので開発時には重宝します。

f:id:alwei:20200926163638g:plain

Freeze Frame

Delayで指定した秒数後にゲームを完全に停止させます。

f:id:alwei:20200926164033p:plain

やっていることはほぼSet Game Pauseと同様で、指定秒数後に止めることができるというもので、解除したい場合には再度Set Game Pauseを何かしらの手段で呼び出す必要があります。Tickや入力も基本的に全て止まるので注意が必要です。

f:id:alwei:20200926164459g:plain

Players Only

名前の通りプレイヤーだけ…ではなく、基本的に全てのアクターのTickと入力を止めてしまうというノードです。Freeze Frameとは違いレンダリングは更新されます。

f:id:alwei:20200926164646p:plain

この機能で止めたくないアクターを実装するためには、ShouldTickIfViewportsOnlyをオーバーライドする必要があります。以下はプレイヤーのみ動けるように動けるようにオーバーライドしたC++実装です。

bool AMyPlayerController::ShouldTickIfViewportsOnly() const
{
	return true;
}

UE4.18以前はオーバーライドしなくてもプレイヤーだけが動けたようですが、現在は何かしらの仕様変更によりC++側でオーバーライドする必要ができてしまったようです。プレイヤーのみを動作させる、もしくは特定のアクターのみが動いてほしい場合には非常に便利な機能です。

Slomo

名前の通り、スローモーション、もしくは倍速再生をしたい場合に非常に良く使います。

f:id:alwei:20200926165422p:plain

非常に有名なので使ったことのある人も多いと思いますが、Cheat Managerにある機能ということは知らない人も多いのではないかと。この機能自体はShippingでも動作しますので、ヒットストップやスローモーション演出、または高速移動したい際など実践からデバッグ時まで何でも役立つ機能です。

f:id:alwei:20200926165840g:plain

Enable/Disable Debug Camera

名前の通りデバッグカメラモードの有効化と無効化を行います。この機能も非常に有名です。

f:id:alwei:20200926165941p:plain

キーボードとゲームパッドで自由にカメラを動き回ることが可能です。ただし、ノードからEnableは呼び出すことはできるのですが、Disableはなぜか上手く働いていないようです。※4.25現在
問題がなければコンソールコマンドのToggle Debug Cameraの方は正しく動作しますので、そちらを使った方がよさそうです。

f:id:alwei:20200926170105p:plain

まとめ

Cheat Managerはこの他にも沢山の機能があります。またC++で利用すれば更に機能が増えますし、コンソールコマンドから呼び出せるコマンドも多く用意されています。独自のチートコマンドを追加したりする方法はヒストリアさんの記事でも解説されているので、ぜひ参考にしてCheat Managerを便利に使っていきましょう!

historia.co.jp