跳到主要内容
← 全部概念
性能优化 / 32

分帧处理

把工作分摊到多帧

交互演示

交互演示 · 移动指针或点击画面,观察变化

分帧处理把开销较大的工作分摊到多帧,而不是每帧全部执行。这里把 192 个智能体分为 8 组,每帧只有其中一组重新选择目标,耗时条下方亮起的格子表示当前组;但所有智能体仍然每帧移动。在 60 fps 下,每个智能体重新决策的频率从每秒 60 次降为 7.5 次,使帧耗时重新降到 16.67 ms 的预算以内。

适用场景

对不需要每帧执行的决策使用分帧处理,例如远处 AI 的规划。即时反应和移动仍应按照玩法所需的频率更新。

实现示例

不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。

bucket = frameIndex % bucketCount
for agent in agents:
  if agent.id % bucketCount == bucket:
    agent.chooseTarget()
  agent.move(dt)

常见错误

测量这种调度增加了多少响应延迟。为紧急任务单独分配预算,并避免把所有开销大的智能体集中到同一组。

内容原作 Nicolas Zullo · 中文整理与交互改编