第2章 高性能的定點數實現方案
摘要
現代游戲程序通常使用浮點數來表示實數,但各個軟硬件平臺并沒有嚴格遵守浮點數標準IEEE 754,導致浮點數的運算結果在不同平臺上難以做到嚴格一致,也就是浮點數的運算結果具有不確定性。這對于依賴計算確定性的鎖步同步(幀同步)游戲有嚴重影響,因為微小的誤差會累積,導致不同平臺上的模擬產生巨大分歧。
本章介紹的定點數,可以保證在不同平臺上計算結果的一致性,從而解決了這個問題。本章介紹了定點數的表示原理,以及四則運算、開方、超越函數等運算的實現。定點數的運算基于整數運算實現,因此在不同的軟硬件平臺上可以實現一致的結果,適合對確定性有需求的技術方案,例如確定性的數學庫、物理引擎,以及上層的游戲邏輯。定點數支持常用的數學運算后,使用起來就可以像使用浮點數一樣簡單、方便。本章還對定點數運算的精度、性能和原生浮點數進行了比較。本章介紹的方案最早由本書主編葉勁峰實現,已應用于War Song、《激戰狂潮》和《線條大作戰》等游戲中。