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

时间:2012-06-13 16:46:41

标签: erlang ejabberd

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

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

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

1 个答案:

答案 0 :(得分:12)

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

<强>优点:

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

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