「連打乱舞」開発メモ

はじめに
第24回UE5ぷちコン応募作「連打乱舞」開発メモです。使用したUEのバージョンは5.6.1です。
シンプルな連打ゲームにしました。今回のは2日で完成まで行けるかな? って考え始めたのですが、まあ無理でした……2日でできる人はすごいと思います。
応募動画
応募動画はこちらです。
アプリのパッケージ
パッケージ化しました。よかったら遊んでみてください。疑いのあるアプリとして警告が出ると思いますが、「詳細」から許可すれば大丈夫です。初回の起動時は、画像が出てくるまで少し時間がかかります。
企画について
テーマの「スピード」からまず思い浮かんだのは、速度を落とすと爆発してしまうバスでした。あの映画はインパクトありましたね。なんか同じような感じの作品が出てくる予感がちょっとしていたので、自分はやらないようにしました……。
「速さ」と考えれば、操作の速さも当てはまると思い、単純に連打のゲームにしました。とはいえ、連打した回数を数えるだけだと味けなさすぎるので、格闘っぽい見た目にしました。シューティングでも良かったのですが、敵とか背景とか意外と手間かかると思ったので避けました。
ほぼ勢いだけの見た目ですが、それなりにいい感じになったとは思います。
レベル上の敵は制限時間内に80回以上連打できれば全滅します。全滅したらボーナスとして、100万点加算されるようにしました。敵がいなくなっても連打はできるので80回以上もスコアになります。ちなみに自分の最高は64回です。
※腱鞘炎にならないように、適度にプレイしましょう。
※キーボードのスペースキーが壊れても責任はもてません。
(ねんのため注意書きを書いておきました)
連打の入力を取る
インプットイベントのCompletedに接続することで、入力が完了したときに実行されるのでこのときに一連の処理を流すようにしました。Triggerを使うと、押しっぱなしにしてTickの速度で連打が取れてしまうのでやばいです。とはいえ、これはこれで敵全滅確認のデバッグの役にたったので残しておきました。
下の図は、PlayerControllerで入力をとってから、PlayerPawnに通知している流れです。

スペースキーは横長なので、2本以上の指を使ってリズミカルに叩くのがコツです(一本の指だけで連打できるのは某名人さんだけだと思います)。あまり早く連打しすぎてもキーが戻って来るより早く押すことになって、連打回数を損する場合があるので難しいです。メカニカルスイッチのゲーミングキーボードは有利だと思います。
プレイヤーと敵の構造や判定
プレイヤー
プレイヤーキャラにはムーブメントのコンポーネントを使っていません。コリジョンもつけていません。敵との判定はとらずに、ターゲットとする敵を決めたらその近くにテレポートして攻撃アニメーションを出すだけです。

攻撃アニメーションを入れたかったので、クラスはPawnにしています。AnimationBPを使いましたが、攻撃用のアニメーションでは使わず、開始直前のスーパーヒーロー着地の再生だけに使いました。
作るときに処理速度を気にしてキャラクタームーブメントを使わない方法にしたのですが、プレイヤー1体分がどうにかなったところで何も変わらないなと思いました。素直にキャラクターで作ってたら楽だったかもです。
敵キャラ
敵キャラはMoveToを使ってプレイヤーとの距離を調整したかったのでキャラクタームーブメントを持っています。(コイツらこそキャラクター使わずにどうにかする方がよかったのかもしれません……)
スタティックメッシュは5.6で追加されたサンプルに入っているメッシュを使いました。シンプルで便利なやつだと思います。
図の赤い上向きのアローのロケーションにプレイヤーをテレポートさせます。テレポートしてきたと同時に攻撃が当たったことにして敵は破壊します。破壊はChaosデストラクションのサンプルがありますが、なんとなく処理が重そうなので使いませんでした。敵が壊れるエフェクトはNiagaraでそれっぽく自作しました。

緑の他に赤い敵と青い敵がいますが、赤いのは3発、青いのは2発当てれば倒せるようにしています。耐久力がある敵に連続で攻撃することでコンボっぽく見せられるかなと思って置いてみたのですが、早すぎて結局なんだかわからないままでした。5発分くらいにしたほうが良かったかもしれません。
プレイヤーのアニメーション
攻撃アニメーションは、AnimationBPを使わずに力技で実装しました。最初はモンタージュを使っていたのですが、ちゃんと再生されなかったのでスケルタルメッシュにアニメーションを直で指定する方法で解決しました。5種類の攻撃モーションをマルチゲートで順番に再生するという流れです。

マクロの中身はこんな感じです。

攻撃アニメーションの作成はUE5マネキンのコントロールリグを使いました。今回は複雑なアニメーションはなく、攻撃の瞬間のキーポーズのみを作る感じなのでUEだけで完結させようと思ってリグを使ってみました。まじめに攻撃アニメーションを作っても再生されるところは見えないので、インパクトの瞬間ポーズを5フレームくらいで作って、それを再生しています。

スーパーヒーロー着地の作成もコントロールリグを使いました。これはちょっと手間かけました。

マネキンのリグはIK,FKの切り替えとそれらがマッチングされる機能が助かります。あと、ポーズのコピーやミラーの機能などが便利です。UE5.6からマネキンがシンプルになったのも良いと思います。だいぶ軽く動くように感じました。シーケンサーの使い勝手も良くなっていて、UE4の頃よりアニメーション作成用のコントロールリグが使いやすくなっている気がしました。
おわりに
第24回のぷちコンから「2日賞」と「技術賞」が新設されたようです。自分はどっちも当てはまらないですが、今回はできるだけシンプルに短い時間でやってみようと思ってました。が、結局それなりに時間はかかってしまいました。作業時間は合計すると48時間以内といえるものの、これを睡眠含めて連続2日でやれと言われたら無理です。結局考える時間がそれなりに必要で、その時間を含めてしまうと48時間でも足りないです。正直な話、仕事している時間でも脳のリソースの半分くらい使ってちょっと考えてたり、「あ!」ってひらめいたりしますし。
考える時間も含めて2日でやってしまえる人はほんとにすごいと思います。新設された賞でもり上がるといいなあと思います。