用于简单多人游戏的TCP / IP上的UDP或HTTP

时间:2012-04-20 09:49:58

标签: networking web-applications tcp udp multiplayer

我正在建立一个多人游戏,玩家同时被问到一个问题,他们必须选择一个答案。他们有几秒钟的时间回答,当时间到了或者每个人都回答时,他们会被问到下一个问题。

我打算在服务器端使用Java(或者如果我想学习一个新的框架,则使用no​​deJS),在客户端使用JS(jQuery和jQuery Mobile)。我以后也可能会构建本机应用程序,所以我想保持打开选项。

我的问题是:您建议使用哪种服务器通信协议?

我在考虑使用常规TCP(带Ajax的HTTP)调用,因为延迟并不是真正的问题,但如果您另有建议,我已准备好审核此选项。

非常感谢你的帮助

3 个答案:

答案 0 :(得分:3)

使用UDP时,实现重试和拥塞控制的负担将落在上。因此,我建议您坚持使用可靠且简单的TCP,直到有特定原因需要切换。如果延迟结果不可接受,我怀疑你的情况,你可以切换到UDP。

答案 1 :(得分:1)

另外要记住的是,如果您在移动设备上创建游戏并且不想丢失通过3G连接的播放器,则需要确保使用标准端口连接到服务器端,否则运营商会断开你。

答案 2 :(得分:1)

TCP / IP上的HTTP Streaming和WebSockets是最好的方法。利用HTTP和WebSockets的Lightstreamer使用TCP,但试图克服一些限制,使用一些智能算法来减少延迟(这对你所描述的游戏来说似乎至关重要)和带宽优化。因此,它可以用于任何复杂的任何多人游戏(例如,包括MMORPG)的巨大好处。乍一看它似乎可以满足您的要求,如果您还计划在第二步开发本机应用程序,它可能是一个很好的解决方案。

Lightstreamer基于发布/订阅模型,其中每个项目都由一组字段定义,这些字段的值可以随时间变化(以毫秒为单位)。这些可能包括"一般项目",由任何用户订阅(例如游戏倒计时;谁是第一响应者)并实时交付。通过这种方式,使用Lightstreamer实现游戏逻辑基础的数据传递机制非常容易实现。

查看最近的这篇文章(Optimizing Multiplayer 3D Game Synchronization Over the Web)。您可以浏览一个简单的多人3D世界的在线演示,其中集成了Lightstreamer以进行实时同步。

该演示允许您调整场景的每个参数并模拟任何数据传输风格,同时检查实际带宽消耗。当然,GitHub上免费提供完整的源代码。你可以尝试一下。如果您需要帮助,请告诉我:))

[完全披露:我为Lightstreamer工作]