基于LAN的XMPP多用户游戏

时间:2011-06-24 22:56:13

标签: java network-programming udp xmpp

我的问题是关于XMPP协议;这被认为是用于实时场景,

通常是在多用户游戏的背景下实时吗?

有人可以告诉你,

如何或是否适合实时多用户游戏(如传统的TCP和UDP协议)或

的上下文

是完全不同的野兽,

在哪种情况下它适合游戏?它假设支持哪种游戏

2 个答案:

答案 0 :(得分:0)

XMPP协议与游戏服务器无关。 XMPP是一种分散式聊天协议,每个人都可以在其中设置自己的服务器。当然,您可以使用从此聊天系统解析的消息来同步您的实时多用户游戏,但这会产生大量开销(因为XMPP使用通常未编码的长XML消息*。

在游戏中进行通信的更好/更常用的方法是构建自己的二进制格式,存储游戏状态更改并使用UDP套接字将其发送到服务器(请注意为邮件添加时间戳,以便您可以延迟消息,也包含在您的设计中,某些消息可能会被删除)。服务器应检查状态更改是否有效,然后将其重新分发给其他客户端。这为您提供了低开销协议,但UDP不保证订购和交付,因此对于关键但不常见的消息,您应该使用通过TCP发送消息的第二个套接字(例如聊天消息)。

现在看起来这可能是一项非常多的工作,但是有相当多的代码示例,甚至包含JAVA和其他为您设置此服务器/客户端架构的语言的软件包,因此您只需要发送消息

*有一些压缩/编码消息的XMPP扩展

答案 1 :(得分:0)

根据您的延迟和吞吐量要求,Xmpp可能有用,也可能没用。如果你要写一个互联网分布式游戏,社交方面和低内容更新(比如farmville)Xmpp会很有用,因为它可以轻松扩展许多同时用户,跟踪他们的在线状态,用户和游戏之间的直接消息传递组件等

对于快节奏的事情,协议的开销可能不合适。

在tcp / udp的上下文中,xmpp是一个基于tcp的xml流协议,具有集中但联合的服务器。