Help us understand the problem. What is going on with this article?

自作ゲーム(HHK)で使用した技術共有

More than 1 year has passed since last update.

この記事はUnreal Engine 4 (UE4) その2 Advent Calendar 2018の1日目です

1日目ですので軽めの話題にしましょうね


今年10月に行われたボイスロイドゲームジャムにて作成した、Hyper Highspeed Kiritanで作った処理のうち、応用がききそうなやつをいくつか紹介しようかと思います

ゲームはこちら
無料ですのでぜひ
HHK   2018_10_21 0_05_30_Moment(2).jpg

なお年末に第2回が行われます
興味がある方はこちらもよろしくおねがいします

以上、宣伝終わり!!
本編に入ります


パイプ用プロシージャルマテリアル

パイプの模様(リング、ライン)は、プロシージャルなマテリアルを使用しています

HHKで要求した仕様としては以下の通りでした

  • リング、ラインの数と幅は調節可能であること
  • ゲームの進行に合わせて色を変化させられること

全体像はこちら
image.png

リング、ラインの幅調整部分は以下の通り。
くっきりした形状が欲しかったので、ValueStepを使用して2値化しています
TilingScale、LineScaleのParameterを調整することで数と幅を調節できるようにしています
image.png

色の変化はMaterialParameterCollectionを使用しました
これ一つでパイプ全体の色を変更できるので、DynamicMaterialInstanceを使用するより楽に処理ができます
image.png

パラメータのカーブ化

加速、減速時に使用する加速度パラメータは、直感的な調節が可能になるように、FloatCurveを使用しました。
カーブアセットを使用することで、
「低速状態から加速しやすくしたい」
「高速状態からの減速をしやすくしたい」
などの、感覚的な要求を満たしやすくなります。

0~1の範囲に収めるのは、Lerpと同じ感覚で使えるようにするためです。
この方法はわりとおすすめです
image.png

また、カーブアセットは「変化量」を扱うパラメータに対してであれば広く応用がききます
下図のCurveはコースの最大湾曲率を指定するカーブアセットです(横軸はセクション数)
ちょっとコースが難しいな、と思ったときはこのカーブアセットを修正するだけで難易度調整を行うことが出来ます
image.png

最適化関連

このゲームは一応最低限の最適化を施していますので、手持ちのAndroid端末に放り込んでも60FPSをキープすることが出来ています
(なお機種はGalaxyS9です。もうちょっと弱い端末でもたぶん大丈夫)

PCでも最低動作環境を満たしていない環境以外では正常に実行できています
(こちらはプロファイリング出来ていませんが…)

実行した最適化対応は以下のとおりです

  • 可能な限りActorのTickを止める
  • 事前生成するActor数を減らす
    • 事前生成して保持するセクション数を調節可能にしておく
    • SphereMaskを併用して、いきなり生成されたように見えないように工夫する
  • 画面に映らなくなったActorを速やかにDestroyする
    • 後ろに通り過ぎた後は再表示することはまずないので

本当に最低限ですが、これだけでも十分に効果は出ます(特にDrawCall)


非常に軽い内容でした。

明日は我らがボス、alweiさんの記事です

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした