用途:为浏览器游戏或交互式模拟提供帧率无关的游戏循环,让物理逻辑在固定时间步长下运行,渲染则按显示器刷新率可变执行,从而保证物理一致性与画面平滑。
主要能力:使用累加器(accumulator)追踪时间债务,按固定步长循环调用物理更新;在两次物理状态之间做插值渲染;限制单帧最大时长(0.25 秒)以避免死亡螺旋;提供 FPS、帧时间、插值系数、时间缩放、是否处于命中停顿等统计;支持 triggerHitstop 触发命中停顿、setTimeScale 设置慢动作或时间缩放;提供 lerp 与 lerpAngle 插值辅助函数。
使用方式:以 TypeScript 类 GameLoop 形式提供,构造时传入 onFixedUpdate、onRenderUpdate 及可选 onLagSpike 回调,并指定固定步长(默认 1/60 秒)。调用 start() 启动、stop() 停止。在 onFixedUpdate 中先保存上一帧状态再执行确定性物理,在 onRenderUpdate 中用插值系数计算渲染位置。
适用场景:需要与显示器刷新率无关的一致物理、确定性游戏逻辑、命中停顿或慢动作效果、平滑渲染的浏览器游戏与模拟。
限制与注意:资料未提供安装命令、包名、依赖或平台兼容性信息;示例代码为 TypeScript,需自行集成到项目中。应避免在渲染回调中运行物理、忘记限制帧时间、用可变 delta 驱动物理或不做插值。相关模式包括 server-tick 与 websocket-management。