【问题标题】:Is ejabberd a good choice as a core technology for turn-based MMORPG?ejabberd作为回合制MMORPG的核心技术是不是一个不错的选择?
【发布时间】:2012-06-16 16:28:38
【问题描述】:

我为我的项目考虑技术堆栈,并考虑使用 ejabberd。该项目将看起来像经典的多用户地牢 RPG,玩家将在世界各地从一个位置移动到另一个位置(位置看起来与聊天室完全一样),他们还将在回合制模式下与 AI 和生物战斗.

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

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

【问题讨论】:

  • 除了将用户与聊天室/位置相关联之外,您还会使用 ejabberd 做什么?如果是这样,那么是的,这听起来确实有点矫枉过正。
  • 我还会用它来聊天消息,我认为可以用它来传递有关其他玩家状态、回合细节、血量​​变化等的系统消息。
  • 你看过RabbitMQrabbitmq.com吗,它也用于自治服务器系统之间的实时通信。
  • 我不建议将 RabbitMQ 暴露在野外。它非常适合服务之间的通信,但不适用于服务和最终用户之间的通信。

标签: erlang ejabberd


【解决方案1】:

我有几年的商业经验,使用 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) 相同的公司开发。它还没有被认为是稳定的。我已经使用它很长一段时间了,现在没有问题,但你永远不知道。它也大多没有记录(或者,当我学习它时)。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多