Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 使用node.js上传多人游戏_Javascript_Node.js_Socket.io_Appfog - Fatal编程技术网

Javascript 使用node.js上传多人游戏

Javascript 使用node.js上传多人游戏,javascript,node.js,socket.io,appfog,Javascript,Node.js,Socket.io,Appfog,我在node.js中制作了一个游戏并上传了它。。它应该是每秒30-60帧。。 现在我正在测试它,它运行得很慢。。我的意思是,在本地网络中,它运行得更顺畅 服务器不远。。那么,如何让fps更好呢 什么是更好的xhr池或WebSocket,什么更快? 游戏设置了xhr池,如下所示- io.set('transports', ['xhr-polling']); 游戏由appfog主持 如果需要,我可以张贴游戏链接 这里的问题是你想做什么?如果服务器每帧向客户端发送一条消息,那么您所说的基本上是不可能

我在node.js中制作了一个游戏并上传了它。。它应该是每秒30-60帧。。 现在我正在测试它,它运行得很慢。。我的意思是,在本地网络中,它运行得更顺畅

服务器不远。。那么,如何让fps更好呢

什么是更好的xhr池或WebSocket,什么更快? 游戏设置了xhr池,如下所示-

io.set('transports', ['xhr-polling']);
游戏由appfog主持


如果需要,我可以张贴游戏链接

这里的问题是你想做什么?如果服务器每帧向客户端发送一条消息,那么您所说的基本上是不可能的-互联网上低于16 ms 60 fps或33 ms 30 fps的网络延迟是不可能可靠保证的。它可以在本地网络上工作,几乎可以肯定可以在本地机器上工作,但不能在internet上工作。如果需要在下一帧中从客户机到服务器再返回信息,则往返延迟需要很低,包括双方的处理。由于xhr轮询和WebSocket都使用TCP,情况变得更糟,因为一个慢/丢失的数据包将在它之后暂停所有内容,直到它最终出现


您确实需要尽可能地将渲染与服务器分离,以便在浏览器中制作一个可行的游戏。网络速度不够快。

这里的问题是你想做什么?如果服务器每帧向客户端发送一条消息,那么您所说的基本上是不可能的-互联网上低于16 ms 60 fps或33 ms 30 fps的网络延迟是不可能可靠保证的。它可以在本地网络上工作,几乎可以肯定可以在本地机器上工作,但不能在internet上工作。如果需要在下一帧中从客户机到服务器再返回信息,则往返延迟需要很低,包括双方的处理。由于xhr轮询和WebSocket都使用TCP,情况变得更糟,因为一个慢/丢失的数据包将在它之后暂停所有内容,直到它最终出现


您确实需要尽可能地将渲染与服务器分离,以便在浏览器中制作一个可行的游戏。网络速度不够快。

那我该怎么办?游戏循环应该在客户端而不是服务器中?但是人们可以很容易地进行黑客攻击。关键是让服务器保持官方状态。例如,我在Bazookagyes.com上帮助工作,它刚刚组装好,但已经足够了。如果有人点击右箭头,客户端将告诉服务器他们正在移动,并且客户端将开始为其设置动画。如果服务器稍后告诉客户机用户应该在其他地方,他们将跳转到该位置。客户端的行为就像它是权威的一样,但是如果它是错误的,服务器可以纠正它。我们不担心作弊,所以我们在客户端进行了命中检测,这里面充满了bug……一个很好的例子就是看看延迟是如何补偿的。如果更改客户端中的服务器端数据,则在服务器确认或拒绝之前,客户端的行为就像数据已更改一样。这让用户感觉很快,同时仍然让服务器成为权威。那么我应该怎么做呢?游戏循环应该在客户端而不是服务器中?但是人们可以很容易地进行黑客攻击。关键是让服务器保持官方状态。例如,我在Bazookagyes.com上帮助工作,它刚刚组装好,但已经足够了。如果有人点击右箭头,客户端将告诉服务器他们正在移动,并且客户端将开始为其设置动画。如果服务器稍后告诉客户机用户应该在其他地方,他们将跳转到该位置。客户端的行为就像它是权威的一样,但是如果它是错误的,服务器可以纠正它。我们不担心作弊,所以我们在客户端进行了命中检测,这里面充满了bug……一个很好的例子就是看看延迟是如何补偿的。如果更改客户端中的服务器端数据,则在服务器确认或拒绝之前,客户端的行为就像数据已更改一样。这让用户感觉很快,同时仍然让服务器成为权威。