8

I'm looking to build real-time games built using a dedicated Java server and iphone clients as well as Java desktop clients. What available high-performance network transport libraries that could be used for real-time multiplayer game development, exist for Java and iphone (specifically reliable UDP)?

The general advice for most real-time action based games (Counter-Strike, Left4Dead, Quake III) is to use UDP/IP transport protocol sending messages as "unreliable" packets in favor of the "guaranteed" delivery of TCP (because of issues with resend and latency issues you can't easily control).

Project Darkstar is a Java MMO server with C++ bindings (a little to heavy for a light-weight real-time networking library for generic multiplayer games).

I've seen libraries written in C for reliable UDP: - Enet - reliable UDP library - Cocoa AsyncSocket

4

3 回答 3

8

查看 Kryo 及其相关的通信库KryoNet

它专为此类应用程序(高性能网络传输)而设计。我不确定是否有 Objective-C 绑定,但即使没有,也值得一看,看看框架的设计有多好。

于 2010-06-23T18:22:03.820 回答
5

既然你提到了UDP。这是一个提供 UDP 和 TCP 支持的java 游戏服务器库(咳咳……由我编写!)。可靠的 UDP 原来是 TCP。您可以在 UDP 之上编写自己的自定义 ack 逻辑,但通常最好使用 TCP 处理需要到达服务器的内容,使用 UDP 处理其他所有内容。

在 jetserver 中,同一个会话同时使用 UDP 和 TCP 进行通信。网络消息可以通过传递保证发送,Reliable = TCP 和 FAST = UDP。

于 2012-05-27T12:42:43.657 回答
-2

“特别可靠的 UDP”

UDP 在设计上并不可靠。这就像发送旧的(不是电子的)邮件。你把你的信放在信封里,写下地址,贴上邮票,然后把它扔到邮箱里。它可能会被转移,但你不能确定。UDP 设计用于速度比正确性更重要的情况(正确性,如“我的应用程序需要逐位正确传输所有内容)。

例如,像 Skype 视频聊天这样的应用程序需要更多的带宽和更少的延迟,一些丢失的位可以在应用程序级别修复(因此它使用 UDP)。同时,基于文本的聊天需要更少的带宽和更大的延迟,但需要更多的正确性(你怎么知道这个字符串:fsdfdsfsd 被正确传输?用什么语言?等等),所以它需要 TCP。实际上,这就是 Skype 中的工作方式。

于 2013-07-23T13:11:34.670 回答