はじめに
historia様主催の第24回UE5ぷちコン(テーマ「スピード」)に参加したので振り返りです。
応募した作品の動画は以下になります。
使用バージョン:UE5.6
テーマの検討
いつも通りアイデア出しから。
色々とイメージしてみるものの、頭の中では普通のゲームにしかならず、今まで以上に作るものが決まりませんでした。
アイデア出しと試作だけで期限も迫っていたので、内容はシンプルにしつつも、新たなことをやるために、2Dで制作することにしました。
今回やったこと
2Dアセットの検討
Fabだと3Dのアセットは充実していたのですが、ドット絵の2Dはイメージ通りのものが無かったので、他のサイトを探していたら良いところを見つけました。
オフィス系のアセットもあったので、今回の用途にはぴったりでした。
PaperZDの導入
UE5にはデフォルトでPaper2Dがありますが、AnimationBlueprintが無いので、アニメーションの遷移は自分で実装する必要があります。
無料のPaperZDプラグインを使用することで、その辺りの手間を削減できます。
PaperZDプラグインでは、AnimationBlueprintと同じ感覚で状態遷移を作成できるので、いつものテンプレートを触ったことがある人ならすぐに扱えます。また、2Dに特化した移動方向別のアニメーション設定などもあるのですごく便利です。


2Dのための各種設定
基本的に以下の動画を参考にさせていただきました。
UnrealEngineで2Dを扱う際にはお勧めです。
ポストプロセスの設定
レトロ寄りでテクスチャの色味をそのまま表示する場合は、以下の設定が必要になりますが、今回は簡易的にExposureの設定だけ行いました。
ライティングの影響などを考慮する場合は、3Dと同じ設定のままでも良いかもしれません。
ポストプロセスボリュームの項目 | 設定 |
---|---|
Bloom | Thresholdを0.0 |
Exposure | Exposure Compensationを0.0 MinEV100とMaxEV100を0.0 |
Image Effects | Vignette Intensityを0.0 |
Color Grading/Misc | Expand Gamut、Tone Curve Amountを0.0 |
上記は表示物全体に反映する必要があるので、Post Process Volume
をレベルに配置し、効果範囲を無限にして適用しています。

PPUの設定
1cmあたりのピクセル数の設定で、スプライト毎に設定できますが、今回はプロジェクト全体で同じ数値を適用するため、デフォルトの設定をしておきました。

今回は1キャラ32x32ピクセル相当にするため、0.32を設定しています。
1cmのピクセル数設定なので、0.32だと100cmで32ピクセルになります。キャラクタや背景チップの基本的なサイズを決めたうえで設定すると良さそうです。
奥行きの設定
タイルマップはセル単位で奥行きの変更ができないようでしたので、前後関係の調整が必要なタイルマップを2つ作成し、XY平面に配置してカメラ距離(Z座標)で表示優先を調整しました。

調整が入った場合に手間はかかりますが、奥側と手前でタイルマップを2つに分けています。
大まかなレイヤー分けですが、キャラクターが壁の後ろに隠れる感じがそれっぽく表現できました。

椅子などのオブジェクトが表示優先を調整しきれず、キャラが上に表示されたりしますが、時間が無かったので対応は割愛しました。
この手の奥行きのあるゲームでは、ソート機能の実装が必要になりますが、今回はそこまで時間が割けなかったので対応はしませんでした。
カメラのシェイク
どうやら、正投影のカメラを使うとカメラシェイクが適用されなくなる問題があるようで、今回は使用できませんでした。
自前でカメラのシェイクを作成しようとしましたが、カメラコンポーネントが正投影の時は、コンポーネントの座標変更が反映されないなど謎な挙動があったので対応を断念しました。
今後の改善に期待しつつ、次回までには何かを考えたいです。
ドット表示
フォント
キャラクターや背景画像だけではなく、フォントもドット調にできないかと思い試してみました。
ウィジェットでのフォント表示でフィルターをOFFにしてドットが見えるようにしたかったのですが、設定が見当たらなかったのでマテリアルで頑張ることにしました。
RetainerBoxで書き出されたテクスチャをマテリアルで加工してみたのですが、フォントが潰れてゴミが出てしまいました。
雰囲気が出るのは良いのですが、視認性が悪くなるのは論外なので、今回は普通にフォントを表示することにしました。
完全にレトロな表現にする場合は、フォント自体をテクスチャ化して加工するなどした方が良いかもしれません。
キャラクターとオブジェクト
32x32ドット基準を想定していましたが、購入したアセットがピクセルを2倍しているだけだったので、実質16x16ドット基準でした。

自分で画像を用意する際、16x16だと表現しきれなかったため、32x32で描いたのですが、
キャラクターと一緒に画面上に表示した際に線が細すぎて違和感が…
やっぱり時間がなかったのでこれで進めましたが、少ないドットでも表現できるよう練習が必要だと痛感しました。
AIキャラの移動対応
ありがちなレトロ風の追いかけゲームなので、タスク内でAI MoveTo
を使用してシンプルにプレイヤーを追いかけるようにしました。
AIキャラの足を止めるためにAIを停止するようにしたのですが、なぜか移動が止まらず。
調べてみると、AIを一時停止してもAI MoveTo
での移動は止まらないようです(ビヘイビアツリーのMoveTo
は停止するようですが)。
その時は移動をキャンセルしないとダメらしい、ということで動きを止めるときは移動も止めるようにしました。

振り返り
Keep
- ぷちコンへの参加
- 早目の試作と感触の確認
Problem
- ギリギリの状態だと良い対応が思いつかない
- 学習コンテストではあるが、参加期間だけの学習になってしまっている
- ピクセルのサイズの統一ができていなかった
- 未だにUIを雰囲気で使っている
Try
- Terrainなど普段使わない機能も使っておく
- 試作などで思いついたことがすぐに試せなかったので
- ドット絵の場合はピクセルサイズの統一を意識する
- UIに表示する画像も含めて
- UIの構成や表示座標などを理解する
おわりに
今回は制作着手が過去一の遅さだったので、ゲーム性はともかく、ぱっと見でゲームっぽくなることに注力しました。
とにかく完成させて応募するために、時間がかかりそうなことは切り捨てて進めましたが、そういった割り切った楽しみ方も、ぷちコンならではかと思います。
今回でぷちコン参加11回目ですが、未だに楽しく参加させていただいております。
コンテストの開催、運営をされているhistoria様に感謝です。
使用したアセット
- Pro Sound Collection
使用したSEはここから。定番のアセット。
- Modern Interiors
登場キャラクターはCharacter generator toolで作成しました。
- Modern Office
今回の目的にぴったりのアセットでした。itch.ioはアセットの種類が豊富で良かったです。
- Font
今回のゲームのイメージにぴったりのフォントが探せました。
- BGM
今回のBGMはコミカルさを重視して選択しました。