上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
第2章 高性能的定点数实现方案
摘要
现代游戏程序通常使用浮点数来表示实数,但各个软硬件平台并没有严格遵守浮点数标准IEEE 754,导致浮点数的运算结果在不同平台上难以做到严格一致,也就是浮点数的运算结果具有不确定性。这对于依赖计算确定性的锁步同步(帧同步)游戏有严重影响,因为微小的误差会累积,导致不同平台上的模拟产生巨大分歧。
本章介绍的定点数,可以保证在不同平台上计算结果的一致性,从而解决了这个问题。本章介绍了定点数的表示原理,以及四则运算、开方、超越函数等运算的实现。定点数的运算基于整数运算实现,因此在不同的软硬件平台上可以实现一致的结果,适合对确定性有需求的技术方案,例如确定性的数学库、物理引擎,以及上层的游戏逻辑。定点数支持常用的数学运算后,使用起来就可以像使用浮点数一样简单、方便。本章还对定点数运算的精度、性能和原生浮点数进行了比较。本章介绍的方案最早由本书主编叶劲峰实现,已应用于War Song、《激战狂潮》和《线条大作战》等游戏中。