两个片段都是同一款游戏。缓慢的那一段是我的简化测试账户,几乎没有启用任何装饰。流畅的那一段有完整的自定义功能。应该是相反的顺序。症状使我意识到并不是卡顿,而是敌人在一段时间内显著减慢。这个问题是模拟速度问题,而不是渲染问题。结果,我每帧都计算时间差异,并只使用它来计算盾牌损伤。其他所有东西都按照每帧而不是每秒进行,任何帧率下降都表现为敌人减速,而不是卡顿。修复这个问题意味着将每帧的delta乘以dt/frameTime,并使用1-(1-r)^scale来计算任何帧率lerp。然后我开始寻找是什么导致了帧率下降:
- 得分弹出窗口位于屏幕级别状态中,因此每个捡起都重新渲染整个游戏屏幕两次——一次添加,一次过期。
- 主屏幕仍然在游戏后面进行动画。导航将游戏屏幕推到顶部,而不是卸载底下的内容,所以在没有人能看到的竞技场后面,22个高斯模糊效果每秒60帧都在渲染。
- 移动敌人的原生阴影。一个移动的阴影每帧重新计算和重新模糊其遮罩。
- 一个闪光组件,每当值超过阈值时就装载和卸载——而在避开时,这个值是不断变化的。主屏幕的一个是仍然困扰我。它是不可见的,仅在游戏期间发生,且与游戏屏幕无关。
评论 (0)