我正在寻找使用在客户端上运行确定性模拟的回滚网络代码构建浏览器多人游戏。在遇到浮点障碍之前,我已经在 Flash 中对网络代码进行了原型设计。
基本上,据我了解,Flash 中的整数数学是通过将int
s 转换为Number
s,进行数学运算,然后再转换回int
. 它显然更快,但这意味着在不同的计算机体系结构之间没有确定性数学的机会。
在我把所有的鸡蛋都扔进 JavaScript 篮子之前,我想问几个问题。
JavaScript 中的所有主要浏览器都有真正的整数运算吗?还是某些浏览器会执行 Flash 操作并转换为浮点数/双精度数以在转换回 int 之前进行数学运算?
是否适合
BigDecimal
或BigNum
适用于跨不同计算机体系结构的确定性数学?只要在合理范围内,我不介意性能损失。如果没有,是否有一些 JavaScript 定点库可以解决我的问题?这是一个很长的镜头,但是是否有一个 HTML5 2D 游戏引擎可以确定 x/y 位置和碰撞之类的数学?至少可以说,游戏引擎的列表是压倒性的。我对从头开始构建一个确定性的跨浏览器兼容引擎感到不安,但这可能是我必须做的。
注意:根据响应从 HTML5 编辑到 JS。为我缺乏知识而道歉。