Является ли ejabberd хорошим выбором в качестве основной технологии для пошаговой MMORPG?

Я думаю о стеке технологий для моего проекта, и я думаю об использовании ejabberd. Проект будет выглядеть как классическая многопользовательская RPG, где игроки будут перемещаться по всему миру из одного места в другое (места выглядят точно так же, как в чатах), и они также будут изображать друг друга, а также существ с AI в пошаговом режиме,

Я никогда не использовал ejabberd, но у меня есть опыт написания серверных приложений с использованием erlang.

Является ли ejabberd излишним для этого вида игры? У него много функций, которые мне никогда не понадобятся. Однако он хорошо известен разработчикам erlang и также очень стабилен и зрелым. Является ли ejabberd использовать его как своего рода транспортный уровень для моей онлайн-игры, или мне лучше придумать свое колесо, что-то крошечное и простое?

Ответ 1

У меня есть несколько лет коммерческого опыта, используя ejabberd для таких вещей. Итак, мой прием:

Плюсы:

  • Это, безусловно, технически возможно.
  • Достаточно легко понять.
  • Это очень легко расширить и изменить.
  • Если вы регулярно обновляете его, он решает два действительно важных аспекта. A. сетевая безопасность (для меня это очень важно); и B.Properly сделали аутентификацию. Только этих двух достаточно, чтобы использовать его.
  • Это удивительно быстро.
  • Это дает вам чат, список присутствия и друзей бесплатно.
  • Это дает вам MUC (комнаты) бесплатно. Со всеми вещами, такими как разрешения, решены достаточно хорошо.

Минусы:

  • На самом деле не ожидайте найти полезную документацию. Источник - это в основном ваш единственный друг.
  • Не ожидайте найти сообщество. Это одинокий путь. Существует комната - [email protected], но она очень тихая (и почти пустая). Большинство людей там не разработчики, а просто пользователи ejabberd. Список рассылки немного лучше, но обычно этого недостаточно, чтобы найти ответ, который вы ищете.
  • Исходный код per se - не лучший пример проекта erlang. Если вы хотите научиться писать большое, модульное, распределенное программное обеспечение erlang, лучше взгляните на что-то вроде Riak.
  • Внутренние API не очень стабильны (они сильно меняются при выпуске). Из-за этого я рекомендую писать ваше программное обеспечение как отдельное приложение erlang, подключаясь к ejabberd в качестве внешнего компонента XMPP. Таким образом, вам гарантируется, что вы будете общаться через стабильный протокол (XMPP). Конечно, вы не можете избежать необходимости писать некоторые внутренние вещи. Модули аутентификации и составления списков (список друзей) - это первые, которые приходят на ум. Эта комбинация довольно сложно поддерживать и обновлять, особенно если вам нужна загрузка с помощью горячего кода, но это еще лучшее решение для меня. Попытайтесь сохранить код "in-ejabberd" до приемлемого минимума.
  • Говоря, есть только одна (насколько мне известно) используемая библиотека XMPP erlang. Он называется exmpp и разработан той же компанией, что и ejabberd (ProcessOne). Он еще не считается стабильным. Я использую его довольно долгое время, и пока нет проблем, но вы никогда не знаете. Это также в основном недокументировано (или было, когда я изучал его).