问题 作为回合制MMORPG的核心技术,ejabberd是一个不错的选择吗?


我想我的项目的技术堆栈,我想到使用ejabberd。该项目将看起来像经典的多用户地牢RPG,玩家将从一个地方移动到另一个地方(地点看起来与聊天室完全一样),他们也会在回合制模式下互相想象和AI 。

我从未使用过ejabberd,但我在使用erlang编写服务器应用程序方面有一些经验。

对于这种游戏来说,ejabberd是否有点矫枉过正?它有很多我不需要的功能。然而,它对于erlang开发者来说是众所周知的,并且也非常稳定和成熟。 ejabberd是否值得将它用作我的在线游戏的传输层,或者我应该更好地发明我自己的轮子,一些小而简单的东西?


8630
2018-06-13 16:46


起源

除了将用户与聊天室/位置相关联之外,您还会使用ejabberd做什么?如果那就是肯定的,这听起来有点矫枉过正。 - Yaakov Kuperman
此外,我将它用于聊天消息,我认为可以使用它来传递有关其他玩家状态,转动细节,hp更改等的系统消息。 - Nik
你看过了吗? RabbitMQ  rabbitmq.com  ,它还用于自治服务器系统之间的实时通信。 - Muzaaya Joshua
我不建议将RabbitMQ暴露给野外。它非常适合服务之间的通信,但不适用于服务和最终用户之间的通信。 - loxs


答案:


我有几年的商业经验,使用ejabberd这样的事情。所以,我的看法:

优点:

  1. 它当然具有技术能力。
  2. 这很容易搞定。
  3. 它很容易扩展和修改。
  4. 如果您定期更新它,它将解决两个非常重要的方面。 A.网络安全(这对我来说非常重要);和B.正确完成身份验证。仅这两个就足以成为使用它的理由。
  5. 它出人意料地快。
  6. 它免费为您提供聊天,在线状态和朋友列表。
  7. 它免费为您提供MUC(房间)。随着权限等所有事情解决得很好。

缺点:

  1. 真的不希望找到任何可用的文档。来源主要是你唯一的朋友。
  2. 真的不希望找到一个社区。这是一条孤独的道路。有一个房间 - ejabberd@conference.jabber.ru但它很安静(几乎是空的)。那里的大多数人不是开发人员,而只是ejabberd用户。邮件列表有点好,但通常不足以找到你寻求的答案。
  3. 源代码本身并不是erlang项目的最佳示例。如果你想学习如何编写大型,模块化,分布式的erlang软件,那么最好看看像Riak这样的东西。
  4. 内部API不是很稳定(它们随着版本的变化而变化很大)。因此,我建议将您的软件编写为单独的erlang应用程序,将ejabberd作为外部XMPP组件连接。因此,您将确保通过稳定协议(XMPP)进行通信。当然,你也不能逃避不得不写一些内部的东西。认证和名册(朋友列表)模块是第一个浮现在脑海中的模块。这种组合很难维护和更新,特别是如果你需要热代码加载,但它对我来说仍然是最好的解决方案。尽量将“in-ejabberd”代码保持在最低限度。
  5. 话虽这么说,只有一个(据我所知)可用的XMPP erlang库。它被称为exmpp,由与ejabberd(ProcessOne)相同的公司开发。它尚未被认为是稳定的。我已经使用它已经有一段时间了,现在没有问题,但你永远不会知道。它也大部分都没有记录(或者当我学习它时)。

12
2018-06-14 19:00