Хороший асинхронный протокол на основе TCP для игр не в реальном времени? - PullRequest
2 голосов
/ 27 февраля 2009

Я занимаюсь разработкой кроссплатформенной платформы с открытым исходным кодом для многопользовательской системы чатов / игр не в реальном времени. Как и карточные игры, настольные игры, пошаговые игры и т. Д. Серверы создаются на стороне сервера (не с компьютера пользователя). Клиент имеет эти игровые модули или загружает игровой модуль, а затем запускает их.

Я пришел к выводу, что лучший протокол "IRC-подобен". Так что есть каналы для чатов и игр.

Например, есть каналы

  • Лобби
  • Lobby.English
  • Лобби. Финский
  • Lobby.Mygame - чат для одной конкретной игры
  • Lobby.Mygame.English
  • Game.Server.Announcements - Когда создается новый сервер, сервер выкрикивает его здесь. Все клиенты слушают это. Вы можете получить список всех запущенных игровых серверов.
  • Game.3636534.chat - Специальный игровой чат
  • Game.3636534.game - пользователи отправляют команды, такие как Buy X, и сервер отвечает на них

Некоторые вещи, которые я изучил

  • XMLRPC не годится, потому что вам приходится запрашивать новые данные каждые несколько секунд
  • ICE - Довольно хорошо, но должен быть более дружественным к RPC
  • ActiveMQ / RabbitMQ и его система издателя / потребителя - это то, что я ищу. Проблема в том, что хороший пользовательский ACL отсутствует. Таким образом, в основном каждый может "пойти" куда угодно и отправить любой мусор на основной сервер AMQ.

Поддерживаемые языки программирования для этого должны быть как минимум C #, Java и Python. Поддержка шифрования должна быть также там. И конечно же бесплатно.

1 Ответ

2 голосов
/ 28 февраля 2009

Вы должны изучить XMPP, который является открытым стандартом для асинхронной передачи сообщений. Он поддерживает шифрование, обход брандмауэра и многое другое. Серверы и библиотеки доступны для множества платформ, включая те, которые вы упомянули.

Ссылки на реализации и информацию: http://xmpp.org/

...