游戏知识实验课:回放外推为何要设置最长预测时间——两帧快照与5拍外推上限(练习20)
只拿到最近两份位置快照时,可以沿最近速度短暂预测当前位置。时间越久,方向和速度不变的假设越难成立,因此例子给外推设置明确上限。
本篇用一组独立输入把规则展开为可重复核对的记录。先确认单位、编号及边界,再自行尝试推演,然后寻找与下面过程第一次不同的位置。所有结果只在这里写明的规则下成立,不能当作所有游戏的统一实现。
规则与输入
两份快照时刻递增,位置是二维整数。以两点间平均速度作恒速外推;查询都不早于最新快照,超过外推上限后停在上限时刻的预测位置,不继续远走。结果用精确分数保留。
快照(2,[2, -1])和(4,[-2, -5]),预测上限5 [4, 9, 10, 18, 9, 14, 12, 13, 16, 8, 13, 10, 8]
逐步推演
查询时刻4,距最新快照0拍,实际预测0拍,速度['-2', '-2'],预测位置['-2', '-5'];处于允许预测范围。
查询时刻9,距最新快照5拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];处于允许预测范围。
查询时刻10,距最新快照6拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻18,距最新快照14拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻9,距最新快照5拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];处于允许预测范围。
查询时刻14,距最新快照10拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻12,距最新快照8拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻13,距最新快照9拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻16,距最新快照12拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻8,距最新快照4拍,实际预测4拍,速度['-2', '-2'],预测位置['-10', '-13'];处于允许预测范围。
查询时刻13,距最新快照9拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻10,距最新快照6拍,实际预测5拍,速度['-2', '-2'],预测位置['-12', '-15'];已限制继续外推。
查询时刻8,距最新快照4拍,实际预测4拍,速度['-2', '-2'],预测位置['-10', '-13'];处于允许预测范围。
超过外推上限的查询全部停在同一预测端点,不能当作继续收到新位置。
怎样独立检查
先求最新时刻到查询时刻的有效预测时长,不能超过规定上限;再分别核对两轴的位移是否为速度乘这段时长。多个超出上限的查询应得到相同位置。
外推结果是基于假设的估计,不是实际收到的新位置。角色若中途转向,预测会产生误差;上限只限制偏移继续累积,并不保证估计正确。本例没有处理新快照到来后的校正或画面平滑。
练习时先保存原始输入及中间结果,再只改变一个条件观察差异。重点检查空状态、相同数值、恰好到达边界和最后一步。不要为了凑出相同的最终结果而忽略较早出现的偏差,过程和结论都应能由同一套规则解释。
