ここ最近体調を崩したり、様々な作業に終われて更新が滞り気味でした。
少し更新頻度を上げていくために小ネタを多めにしていこうかと思います。
さて、最近のゲームエンジンではほぼ全てのエンジンで可変フレームレートに対応しています。UE4も例に漏れず可変フレームレートに対応させる事ができます。
なぜ可変フレームレートにするのか?
ユーザーが遊ぶ環境というのは、PCや端末ごとに性能がまちまちで固定のフレームで作るのには限界があります。あるユーザーは60FPSで動くけど、あるユーザーは30FPSで動かしているとします。
この場合、ベースとなるフレームレートを選び、そこからある程度上下するフレームレートに対応する事により、ゲームそのものが破綻することを避ける事が可能です。
単純に毎フレーム、アクターを前に進ませたいと思った場合には以下のようなノード構成になると思います。
このままだと60FPSの時と30FPSで全く違う速さで移動する事になります。
ではこれを両方のフレームレートで動いた時に動きの差がでないようにしてみましょう。
『移動量 * 前フレームからの絶対時間 * ベースFPS』という計算で最終的な移動量を計算します。前フレームからの絶対時間というのは"Get World Delta Seconds"というノードで取得、もしくはEvent Tickなどのノードから"Delta Seconds"という出力値を使って計算します。
これをもっと便利に使えるようにするためにマクロにしてみましょう。
こんな感じのマクロにしてみて
このような具合でどこからでも汎用的に使いやすくなります。マクロ化おすすめ。
エンジンの都合で移動させられる部分に関しては何も計算しなくても可変フレームレート対応してくれているので、自分で移動処理を作った時はこのように可変フレームレートに対応した移動量を使いましょう。