我的问题是关于XMPP协议;这被认为是用于实时场景,
通常是在多用户游戏的背景下实时吗?
有人可以告诉你,
如何或是否适合实时多用户游戏(如传统的TCP和UDP协议)或
的上下文是完全不同的野兽,
在哪种情况下它适合游戏?它假设支持哪种游戏
答案 0 :(得分:0)
XMPP协议与游戏服务器无关。 XMPP是一种分散式聊天协议,每个人都可以在其中设置自己的服务器。当然,您可以使用从此聊天系统解析的消息来同步您的实时多用户游戏,但这会产生大量开销(因为XMPP使用通常未编码的长XML消息*。
在游戏中进行通信的更好/更常用的方法是构建自己的二进制格式,存储游戏状态更改并使用UDP套接字将其发送到服务器(请注意为邮件添加时间戳,以便您可以延迟消息,也包含在您的设计中,某些消息可能会被删除)。服务器应检查状态更改是否有效,然后将其重新分发给其他客户端。这为您提供了低开销协议,但UDP不保证订购和交付,因此对于关键但不常见的消息,您应该使用通过TCP发送消息的第二个套接字(例如聊天消息)。
现在看起来这可能是一项非常多的工作,但是有相当多的代码示例,甚至包含JAVA和其他为您设置此服务器/客户端架构的语言的软件包,因此您只需要发送消息
*有一些压缩/编码消息的XMPP扩展
答案 1 :(得分:0)
根据您的延迟和吞吐量要求,Xmpp可能有用,也可能没用。如果你要写一个互联网分布式游戏,社交方面和低内容更新(比如farmville)Xmpp会很有用,因为它可以轻松扩展许多同时用户,跟踪他们的在线状态,用户和游戏之间的直接消息传递组件等
对于快节奏的事情,协议的开销可能不合适。
在tcp / udp的上下文中,xmpp是一个基于tcp的xml流协议,具有集中但联合的服务器。