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

Nik*_*Nik 11 erlang ejabberd

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

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

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

lox*_*oxs 12

我有几年的商业经验,使用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应用程序,并将其作为外部XMPP组件连接到ejabberd.因此,您可以保证通过稳定协议(XMPP)进行通信.当然,你也不能忘记写一些内部的东西.认证和名册(朋友列表)模块是第一个浮现在脑海中的模块.这种组合很难维护和更新,特别是如果你需要热代码加载,但它对我来说仍然是最好的解决方案.尽量将"in-ejabberd"代码保持在可行的最低限度.
  5. 话虽这么说,只有一个(据我所知)可用的XMPP erlang库.它被称为exmpp,由ejabberd(ProcessOne)所在的公司开发.它尚未被认为是稳定的.我已经使用它已经有一段时间了,现在没有问题,但你永远不会知道.它也大部分都没有记录(或者当我学习它时).