Unity2018でFixedTimestepのデフォルト値が変わったのね

Unity2018でFixedTimestepのデフォルト値が変わったのね

2018年の4月末にリリースされたUnity 2018.1をいじって遊んでいるのですが、Rigidbodyを使った物理挙動を見ていて気付いたのが「なんか滑らかになってる?」ってこと。

何となくFixedUpdate()のFPSも取得してみたら60FPSに近い値になっていたので、「おや?」と。

確認してみたら、FixedUpdate()を呼ぶ間隔を決める値であるFixed Timestepのデフォルト値が『0.0167』になっていました。やっぱり60FPSだこれ!

2017.4まではFixed Timestepが『0.02』で、1秒間にFixedUpdate()が50回呼ばれていました。画面の描画と同期してなくてビミョー……というみんなの願いが通じて60FPSがデフォルトになったのかな。

Unity 2018になって色々と変わった部分がありますが、結構衝撃的でした。

チュートリアルでもFixedUpdate()はデフォルトだと50回呼ばれるんだぜ!! なんて言ってましたが、2018からさっそく変わりました。

追記

2018.2.xだとFixed Timestepが『0.02』に戻ってました。

 

環境

macOS 10.13 High Sierra

Unity2018.1.0f2

4月末にUnity2018が出てたので早速使ってみました。

背景

最近はRigidbodyの挙動について、初心者の方に分かりやすいようにGIFと共に動きを紹介しているのですが(宣伝)、その中でInterpolateのことをまとめていました。

Rigidbodyの描画がカクツク問題を軽減するための設定としてInterpolateがありますが、その検証中、FixedUpdateのFPSを取得してみたんです。

これまでのUnityでは、FixedUpdate()が呼ばれる回数は1秒間に50回がデフォルトでした。なので、60FPSが努力目標のUpdate()のFPSと比較することで、「こんなにもずれてるから、補間が必要なんだぜ〜」なんて論調で記事をまとめていると、FexedUpdateの方もほぼ60FPSになってました。

「いやいや、そんな訳ないっしょ!」

とTimeマネージャーを開くと、Fixed Timestepの値が『0.0167』になっていました。綺麗に60FPSになってますね。

これ、ぜひあなたにも一緒に確認してもらいたいんです。うちのUnityだけじゃないよね?

メニューバーの[Edit] -> [Project Settings] -> [Time]から時間設定を行うTimeマネージャーを開くことができます。

Timeマネージャーを確認するのだポッター
Timeマネージャーを確認するのだポッター

 

確認してもらいたいのは一番上のFixed Timestepの項目。自分で設定した記憶がないので、多分デフォルト。新規プロジェクトを作って確認しても同じでした。

か……変わってる!
か……変わってる!

 

ゲーム実行中のFPSを取得してみると綺麗に59.88を維持していました。固定フレームレートすごい。あ、Updateさんは若干揺れます。

綺麗に59.88を維持
綺麗に59.88を維持

 

念のためUnity2017.4で確認してみたら、Fixed Timestepの値は『0.02』でした。こっちは50FPSです。

なので境目はUnity2018.1っぽい。

デフォルト値の変更の影響

影響は特に無いかな。

Unity2018.1で新規にプロジェクトを作成した場合にはFixed Timestepが『0.0167』になりますが、過去バージョンで作成したプロジェクトをインポートした場合は、そのプロジェクトのFixed Timestepが維持されていました。

なので、新規にプロジェクトを作成した時にビビるくらいでしょうか。FixedUpdate()の中で、呼び出し回数に応じた処理を使うことに慣れていれば、そこで地雷を踏むかも、くらい。

あとリリースノートを確認してみましたが、それらしい記述は見つからずでした。どなたかこの変更に関するドキュメントをご存知でしょうか。

ここまで細かい話だとリリースノートに載らないんですかね?(無知)

検索が下手とか、目grepのせいで見逃した可能性もあるので、目が疲れてない時間に再確認してみます。

まとめ

Unity2018になって最初にビビった変更はFixed Timestepのデフォルト値が変わったことでした。

FixedUpdate()のFPSをカウントするなんてなかなか無いですけど、気付いてよかった。

モバイル端末とかも性能が上がってきてるし、デフォルト値にしてるってことはFixedUpdate()が60FPSでも安定するのかも。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?