Unreal Engine 4を使って完全なスプライトベースな2Dゲームは作れるのか?という疑問が色々あったりする人も多いのではないかと思います。
現状では公式からマーケットプレイスで配信されている、TappyChickenというゲームが最も参考になる例です。
TappyChickenの作り方
3分クッキングというわけにはいきませんが、簡単に解説してみます。
実際に横から見てみるとわかりやすいですが、完全に3Dですね。カメラの設定がOrthographic(正射影)になっており、作り方としては3Dのそれとほとんど変わりません。
TappyChickenのロジックは全て"BP_MainGame"というブループリントに含まれており、これだけで全てのロジックを俯瞰することができます。逆に言えばこれだけの処理をやっているんだということがよくわかりますね。
元々プログラミング経験がないアーティストが作ったものなので、構造化とかはそこまで考えられていませんので、大分規模が大きいものになってしまっています。これはやはりちゃんと整理しないとこうなってしまうよ、という典型例です。
そしてこれがChickenの2Dテクスチャーデータで、これをUVアニメーションさせることによりスプライトアニメーションを実現しています。実際にスプライトアニメーションを実現させているのが以下のようなマテリアルです。
小さくてわかりにくいですが、中心の方にある青いノードがテクスチャーサンプルデータです。このデータのカラー情報をエミッシブカラーとして渡すことによりライトの影響は一切受けないようになっています。アルファやカラー制御もここで行なわれています。
そして左下の方のノードにはマテリアルパラメーターというものが使われており、これは上の方にでも紹介した"BP_MainGame"の中から直接参照することができるので、FrameNumberというパラメーターを弄ることによりスプライトアニメーションが実現されています。
ただ、スプライトアニメーションのためにやるにはちょっと荷が重いですよね…UE4のアニメーション機能も使えないですし。
UE4.3から大幅に2D機能が強化
UE4には元々公式の2Dプラグインである"Paper2D"というものがありました。これが地道に改良を重ねた結果、UE4.3からは大幅に機能が増えて専用のスプライトエディター等もつくようです。
以下は公式のフォーラムにあったUnreal Engine開発者の投稿です。
これによると、UE4.3からは…
- エンジンのデフォルトでPaper2Dプラグインが有効化
- スプライトとフリップブック(アニメーション機能)が使えるように
- 2Dコリジョン、物理、スプラインテライン、グループアトラス化、タイルマップを実験的に追加
- 2Dサイドスクロールテンプレートの追加
- ピクセルをアンリアル上の単位にスケールするスプライト
- スプライトエディター上にビジュアルパス追加
- フリップブックコンポーネントを完全に刷新
- フリップブックコンポーネントに再生/停止、ループ、逆再生などなど追加
とまぁかなり凄い追加が入っているようです。ただまだ実験的な要素も多いのですぐに使えるわけというものでもないかもしれません。
しかしインディーデベロッパー向けにもこういったものを用意してくれるのは非常に助かりますね。期待しています。