当前位置:  开发笔记 > 编程语言 > 正文

node.js实时游戏

如何解决《node.js实时游戏》经验,为你挑选了2个好方法。

是否可以使用node.js创建一个需要抽搐反应的实时游戏.延迟有多高?它实际上有多低?



1> Diogo Gomes..:

可以像在任何其他语言/框架中一样在node.js中创建实时游戏.

这里的问题是你将使用什么样的服务器和客户端.
使用http服务器功能进行此类游戏将是一个坏主意并且非常困难,但您可以像使用任何其他语言一样使用TCP服务器(现在称为网络服务器).

客户端将位于可以使用套接字的平台上,例如Flash,Java applet或桌面软件.

请注意,即使使用TCP套接字服务器,您也可能会遇到抽搐游戏的延迟问题,但这超出了与此问题相关的范围,更多地涉及游戏和网络.

PS:您可以使用Web套接字,因为理论上它们应该像TCP套接字一样工作,但在当前的现代浏览器中还没有很好的支持.


编辑:

似乎我没有正确解释自己,你可以制作一个像你说的浏览器可访问的游戏,你只需要使用一个允许你快速实时来回发送数据的协议.

如果你想要一个没有任何第三方插件的"纯粹"浏览器游戏,就像我之前说过的那样,只使用带有websockets的JavaScript,主流浏览器还没有很好地支持它.(你可以使用Flash桥,但仍然可以在JavaScript中使用你的游戏.)

使用第三方插件,你有FlashJava(除了众多不太知名的插件,如统一等).两者都有TCP套接字(不确定UDP),可以连接到node.js网络服务器(有一些安全限制).大多数人会说你使用Flash,因为有更大的支持,但Apple不喜欢它,因此iPhone/iPad/iPod Touch或其他各种移动设备(不支持Java)没有Flash.

所以是的...祝你好运.

编辑2:

浏览器中的Websocket支持现在相当不错,因此如果您想将浏览器用作客户端,我建议将其用于实时游戏.


使用TCP进行游戏并不是很明智,UDP是要走的路.
我完全不同意.使用UDP进行游戏并不是很明智,TCP是可行的方法.
@ Lo'oris,Ricket - 这真的取决于比赛.如果你制作一个回合制游戏,TCP可能就是你要走的路.但是,如果您制作实时游戏UDP将是最佳选择.

2> Kylotan..:

HTTP服务器通常针对延迟上的吞吐量/带宽进行优化.node.js不太可能是一个例外,由于协议的结构,HTTP在低延迟方面本质上很差.

使用node.js的一个非正式基准支持这一点,显示数百毫秒的延迟.相比之下,大多数抽搐游戏支持的延迟不超过30或40毫秒,理想情况下更少.

因此,如果您不能丢弃HTTP,我建议删除抽搐方面.


我没有看到HTTP与它有什么关系.对于多玩家游戏中玩家之间的低延迟更新,人们通常使用UDP或TCP,node.js都可以这样做.
你是对的.然而,当我发布这个答案时,很少有人在谈论使用node.js做任何事情,除了作为Web服务器和UDP支持还有2个月之后.
啊:)令我惊讶的是node.js的开发速度有多快.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有