XMPP 多人游戏功能 - 设计问题

Posted

技术标签:

【中文标题】XMPP 多人游戏功能 - 设计问题【英文标题】:XMPP for multiplayer feature - design question 【发布时间】:2021-07-06 06:17:16 【问题描述】:

目前有一款游戏在独立计算机上运行。 我想创建一个允许玩家相互连接的附加组件。为此,我认为 XMPP 似乎是一个合适的平台。

要交换的消息是存在/名册,以便用户可以找到彼此,构建消息以发送物品或金钱以及用于评论和娱乐的通用文本消息。在以后的版本中,我想尝试一些“业务逻辑”来为世界或任务等发送全局更改。

我的问题是用户如何相互联系。想象一下有人创建了一个 XMPP 帐户。他如何开始与其他人见面? 或者,一般来说,如果用户拥有独立帐户,他们会如何看待彼此?他们都应该加入第一个多用户聊天吗?是否应该有一个监控组件来发送邀请和更新名册?

如果游戏内玩家可以进入不同的区域,那么每个游戏区域有一个多用户聊天是否有意义?

我知道这些问题很多,但也许你会从他们那里得到我所面临的设计问题,我很高兴能得到一些如何实现的线索。

【问题讨论】:

您想要实现的目标有多种解决方案。在常规 XMPP 用户中,通过交换他们的 JID (JabberID) 和在线订阅(查看谁在线或不在线)进行交互。如果您可以控制服务器,则可以为他们配置用户用户以简化流程。关于每个游戏的聊天:您可以使用 MUC(第一个群聊协议)或 MIX(基于 PubSub 的现代 gropuchat,它试图减轻 MUC 的各种缺点) 【参考方案1】:

同时我找到了答案。

游戏充当 XMPP 客户端。它会自动连接到游戏中硬编码的多用户聊天。给定正确的参数后,XMPP 服务器将在第一个连接的用户上创建聊天室。后续用户只需加入同一个房间即可。

鉴于此,每个用户都会自动收到该房间内所有用户的在线状态消息。由此,客户端知道其他玩家的地址,并可以向特定玩家发送消息。发送到该房间的消息将自动转发给所有其他用户。

所以我在上面看到的问题实际上在 XMPP 中很容易解决。

【讨论】:

以上是关于XMPP 多人游戏功能 - 设计问题的主要内容,如果未能解决你的问题,请参考以下文章

游戏引擎设计:多人游戏和监听服务器

多人/单人测验游戏的数据库设计

游戏开发实战Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

游戏开发实战Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

XMPP 多 MUC Web 应用程序操作指南

基于XMPP的即时通信系统的建立