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マネージャーを開くことができます。
確認してもらいたいのは一番上のFixed Timestepの項目。自分で設定した記憶がないので、多分デフォルト。新規プロジェクトを作って確認しても同じでした。
ゲーム実行中のFPSを取得してみると綺麗に59.88を維持していました。固定フレームレートすごい。あ、Updateさんは若干揺れます。
念のため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でも安定するのかも。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RigidbodyのIsKinematic(物理演算の影響の有無)を変えて実験 2018.05.15
-
次の記事
【Unity】RigidbodyのInterpolate(補間)を変えて実験 2018.05.16
コメントを書く