一种在多个框架上分发游戏更新的简单方法
一种在多个框架上分发游戏更新的简单方法 游戏逻辑的某些部分可能不需要在每一帧都执行。 例如,非可玩角色每隔几秒钟执行一次决策,传感器或导航请求就可以了。 这样做可以帮助提高帧速率。 下图表示游戏的某些帧,其中每个实体的每个帧都完成一个任务(红色)(最上面的数字是相应帧执行的任务总数)。 减少处理时间的一种方法是一次执行所有任务,然后等待一段时间。 这种方法的问题在于负载不会分散在多个帧中。 如果实体的数量和他的任务成本很高,那将导致帧速率峰值。 另一种方法是强制每帧执行最大数量的任务。 在左侧,每帧最多设置1个任务,在右侧,每帧最多设置4个任务: 这种方法具有分散负载的优势,但是主要问题是两次更新之间的时间取决于实体的数量。 如果实体数量在游戏过程中发生变化,则它们的行为方式将发生变化。 为了保持一致,最好不考虑实体的数量(如果帧速率固定,每[x]帧一次)每[x]秒执行一次任务。 下图代表此概念,每0.5秒更新2个实体: 我们有时必须在一帧上执行0任务。 当实体数量增加时,我们可能必须每帧执行多个任务: E5在第0帧处更新,因为我们希望E5在第4帧处更新,并且我们始终希望保持相同的时间间隔。 请注意,如果我们选择在第0帧而不是E1和E5更新E1和E2并没有关系。…