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

Erlang 作为基于回合的MMORPG的核心技术,ejabberd是一个不错的选择吗?,erlang,ejabberd,Erlang,Ejabberd,我想到了我的项目的技术堆栈,我想到了使用ejabberd。该项目将看起来像经典的多用户地下城RPG,玩家将在世界各地从一个位置移动到另一个位置(位置看起来完全像聊天室),他们还将在基于AI的模式下相互攻击以及生物 我从未使用过ejabberd,但我有一些使用erlang编写服务器应用程序的经验 对于这种游戏来说,埃贾伯德是不是杀伤力过大?它有很多我永远不需要的功能。然而,对于erlang开发人员来说,它是众所周知的,并且非常稳定和成熟。ejabberd值得用它作为我在线游戏的传输层吗?还是我最好

我想到了我的项目的技术堆栈,我想到了使用ejabberd。该项目将看起来像经典的多用户地下城RPG,玩家将在世界各地从一个位置移动到另一个位置(位置看起来完全像聊天室),他们还将在基于AI的模式下相互攻击以及生物

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


对于这种游戏来说,埃贾伯德是不是杀伤力过大?它有很多我永远不需要的功能。然而,对于erlang开发人员来说,它是众所周知的,并且非常稳定和成熟。ejabberd值得用它作为我在线游戏的传输层吗?还是我最好发明我自己的轮子,一种小巧而简单的东西?

我有几年的商业经验,用ejabberd做类似的事情。因此,我的看法是:

优点:

  • 它在技术上当然是有能力的
  • 这很容易摸索
  • 它很容易扩展和修改
  • 如果你定期更新它,它将解决两个非常重要的方面。A.网络安全(这对我来说非常重要);正确完成身份验证。仅这两个就足以成为使用它的理由
  • 它惊人地快
  • 它免费提供聊天、状态和好友列表
  • 它给你免费的房间。权限之类的问题都解决得很好
  • 缺点:

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

  • 除了将用户与聊天室/地点关联外,您还想用ejabberd做什么?如果是这样的话,那么是的,这听起来确实有些过分。我还将使用它来发送聊天信息,我认为可以使用它来发送有关其他玩家状态、详细信息、hp更改等的系统消息。您是否查看了
    RabbitMQ
    ,它还用于自治服务器系统之间的实时通信。我不建议将RabbitMQ暴露于野外。它非常适合服务之间的通信,但不适合服务和最终用户之间的通信。