如何解决基于LAN的多用户游戏的XMPP
| 我的问题是关于XMPP协议的。被认为是用于实时场景, 在多用户游戏中通常是实时的吗? 有人可以告诉, 它如何或是否适合于实时多用户游戏,例如常规的TCP和UDP协议,或 它是完全不同的野兽, 在什么情况下适合游戏?以及它应该支持哪种游戏解决方法
XMPP协议与游戏服务器无关。 XMPP是一种去中心化的聊天协议,每个人都可以建立自己的服务器。当然,您可以使用从此聊天系统解析的消息同步您的实时多用户游戏,但这会产生很多开销(因为XMPP使用通常不进行编码的长XML消息*)。
在游戏中进行通信的一种更好/更常见的通信方式是,构建自己的二进制格式来存储游戏状态更改,然后使用UDP套接字将其发送到服务器(请注意为消息加上时间戳,以便您可以丢弃最新消息,纳入您的设计中,可能会丢弃某些消息)。服务器应检查状态更改是否有效,然后将其重新分配给其他客户端。这为您提供了一个低开销的协议,但是UDP不保证顺序和传递,因此对于关键但不常见的消息,您应该使用第二个套接字,该套接字通过TCP发送消息(例如,聊天消息)。
现在,这似乎是一项艰巨的工作,但是有相当多的代码示例,甚至还有为您设置了服务器/客户端体系结构的JAVA和其他语言的程序包,因此您只需要发送消息即可。
*有些XMPP扩展程序可以压缩/编码消息
, 根据您的延迟和吞吐量要求,Xmpp可能有用,也可能无效。如果您要编写具有社交方面和内容更新少的Internet分布式游戏(例如Farmville),Xmpp会很有用,因为它可以轻松扩展许多模拟用户,跟踪他们的在线状态,在用户和游戏之间进行直接消息传递组件等
对于快节奏的协议,该协议的开销可能会不合适。
在tcp / udp上下文中,xmpp是tcp之上的xml流协议,具有集中式但联合的服务器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。