XMPP多人游戏:我应该将对手存储为名册联系人吗?

问题描述 投票:4回答:3

我已经阅读了所有484页的专业XMPP并阅读了关于名单+ XMPP的无数论坛帖子,这个问题仍然是我正在努力解决的问题。 我正在寻找有关最佳实践的见解,所以我至少知道要进入哪个方向。

我正在构建一个跨平台(web,iOS和Xbox),回合制的棋盘游戏。 每个玩家在任何特定时刻都可以拥有多达100个不同的比赛 - 因此他们可以轻松跳过一个不会转变为一个游戏的游戏。

游戏将包含一个大厅,其中显示您的活动游戏列表,以及该游戏的每个对手的名称和在线状态(您最多可以有3个对手,每个游戏总共4个玩家)。

此外,每个玩家将拥有可从不同区域访问的朋友列表,该列表还列出在线状态。

我在幕后使用XMPP,对玩家完全透明,没有人会用Jabber客户端或任何类型的东西登录。 我完全控制了信息的显示和利用方式。

我使用XMPP解决的主要方面是:当对手做出移动时的通知,看到我的朋友在线状态,看到我的对手在线状态,以及游戏中的文本聊天。

所以这就是我开始遇到麻烦的地方:显然你的朋友列表将是你名单中的联系人,所以你可以看到他们的在线状态。 但是对手呢? 这些通常是随机对手,你只会与他们进行一场比赛而且再也不会 - 但你与他们的比赛可能持续长达2周。

记住一切都在幕后(例如:自动订阅确认等) - 最好的行动方案是在游戏进行过程中将每个对手添加到你名单中的另一个组,然后在游戏后删除它们完成了? 这样,当该播放器在线时,您会收到在线通知? 或者这是一个可以利用PubSub的情况?

我还考虑过使用多用户聊天,因此我总是可以访问每个用户的在线状态而无需订阅,但是在任何特定时刻可能有多达2万名玩家在线时,这似乎远没有效率。 绝对听起来像移动设备上的电池猪。

我的另一个解决方案是使用共享名单。 为每个游戏创建一个名单,并将该列表分配给每个玩家。 然后在游戏完成后删除共享名单列表。

xmpp
3个回答
3
投票

我会在这里选择Pubsub。 当然,这意味着你也必须做一些服务器端的工作。

向对手发送直接存在 。 这将使他们能够看到你的存在。


2
投票

我会考虑为每个游戏使用多用户聊天,以及你自己的MUC协议扩展来处理游戏状态消息(对手已经采取行动)。 用户可以在“全局”级别拥有他们的朋友名单,但仍然可以使用MUC级别与他们的对手进行通信(并接收在场)(除非他们决定将他们添加为朋友)。

另请参见: Pubsub与MUC的优势


0
投票

我同意在这种情况下使用MUCS(即时)会更好。 如果你需要清理不想要的订阅者的pubsub节点,那肯定会很痛苦。

© www.soinside.com 2019 - 2024. All rights reserved.