Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript与浮点决定论的处理_Javascript_Html_Floating Point_Point_Multiplayer - Fatal编程技术网

JavaScript与浮点决定论的处理

JavaScript与浮点决定论的处理,javascript,html,floating-point,point,multiplayer,Javascript,Html,Floating Point,Point,Multiplayer,我希望使用回滚网络代码构建一个浏览器多人游戏,在客户端上运行确定性模拟。在遇到浮点障碍之前,我已经在Flash中原型化了网络代码 基本上,据我所知,Flash中的整数数学是通过将ints转换为Numbers,进行数学运算,然后再转换回int。它显然更快,但这意味着不可能在不同的计算机体系结构中使用确定性数学 在我把所有鸡蛋都扔进JavaScript篮子之前,我想问几个问题 JavaScript中所有主要浏览器上都有真正的整数算法吗?或者一些浏览器在返回int之前做Flash操作并转换为float

我希望使用回滚网络代码构建一个浏览器多人游戏,在客户端上运行确定性模拟。在遇到浮点障碍之前,我已经在Flash中原型化了网络代码

基本上,据我所知,Flash中的整数数学是通过将
int
s转换为
Number
s,进行数学运算,然后再转换回
int
。它显然更快,但这意味着不可能在不同的计算机体系结构中使用确定性数学

在我把所有鸡蛋都扔进JavaScript篮子之前,我想问几个问题

  • JavaScript中所有主要浏览器上都有真正的整数算法吗?或者一些浏览器在返回int之前做Flash操作并转换为float/double进行计算

  • 在不同的计算机体系结构中,确定性数学是否类似或适用?我不介意一些性能损失,只要是合理的。如果没有,是否有一些JavaScript定点库可以解决我的问题

  • 这是一个远大的目标,但是否有一个HTML5 2D游戏引擎,它对x/y位置和碰撞等东西具有确定性数学?至少可以说,这份名单是压倒性的。我对从头开始构建一个确定性的跨浏览器兼容引擎感到不安,但这可能是我必须要做的


  • 注:根据回复从HTML5编辑为JS。为我缺乏知识而道歉。

    这是一个Javascript问题,而不是HTML5问题

    所有Javascript计算都是使用IEEE754浮点
    double
    值完成的-没有“int”

    尽管IEEE754要求(AFAIK)对任何给定输入的每个操作都有一个特定的答案,但您应该知道JS解释器可能可以自由地优化表达式、循环等,这样浮点操作实际上不会按照您期望的顺序执行


    在一个程序的运行过程中,这可能会导致在不同的浏览器上产生不同的答案。

    问题其实不是HTML5,而是JavaScript。你的意思当然是准确性,(对我来说)决定论有着非常不同的含义。你找到了解决方案吗?@Cristy我最终解决了这个问题。本质上,我在服务器上运行模拟作为主副本,当我检测到客户端与主副本不同步时,我会将游戏状态转储到解除同步的客户端。@na感谢您的回复!我试图通过将所有计算转换为整数并使用三角函数的查找表来确定它,但我不知道这是否真的解决了问题并使其具有确定性。对于浏览器,跨不同的计算机架构进行确定性模拟是不可能的吗?@na说实话,我认为你只需要试试看。