リアルタイムアプリケーションは1秒間に数十~数百の"Tick"を繰り返してなめらかなレンダリングを行っています。
プレイ間隔が良くなるためこのTickの間隔(=デルタタイム)は可能な限り一定になることが望ましいのですが、負荷の変動などによって目的のデルタタイム内に収めることができなくなることがあり、アプリケーションの更新処理にその時間に合ったデルタタイムが渡されて進行速度の帳尻を合わせます。
大半の動作はデルタタイムが変動しても大きな問題なく動作しますが、一部の処理、例えば物理シミュレーションやコリジョン、オーバーラップの判定などはデルタタイムによって望ましい挙動が得られなくなることがあります。
特定の操作でわざとこの状況を作り出して悪用したり、アプリケーション外の負荷によってプロセッサのリソースが奪われてパフォーマンスが低下し結果としてイベント未発などの進行に影響を与えるバグが発生する可能性もあり、アプリケーション側で対策が必要になることがあります。
Max Undilated Frame Time
アンリアルエンジンは"Max Undilated Frame Time"としてアプリケーションが正しく動作するために最大で許容できるデルタタイムの上限値の設定がWorldSettingsの中にあります。
デフォルトの設定値は0.4秒(つまり2.5fps)となっています。
例えば15fpsまでならば動作に支障がないのであればこの値を1/15秒 (0.666秒)に設定します。
以下動作例です。
120fps出る状態でMax Undilated Frame Timeを240fps相当に設定しているので、進行速度が半分になっていることがわかります。
MaxUndelitedFrameTime pic.twitter.com/yvioiiXYpu
— Takashi.Suzuki (@wankotank) June 3, 2022