Рекомендации по использованию Flash Game Server (Node.js, Red5 и т. Д.) - PullRequest
8 голосов
/ 05 августа 2011

Краткое описание:

У нас есть законченная флеш-игра, похожая на Tetris, которая готова быть «подключенной» для многопользовательской игры. Проведя некоторые исследования и спросив здесь: Флэш-сокеты, возможности Peer-to-Peer , мы пришли к выводу, что работа с сетями P2P, выполняемая так, как игры для xbox / ps3 обрабатывают онлайн-игры, невозможна без дорогостоящих / сомнительные Adobe Software / Services (FMS / Cirrus) на платформе флэш-памяти на данный момент. По сути, Flash-клиент не может стать «хостом», прослушивающим сокеты без протокола RTMFP.

Вопрос, который нуждается в предложениях:

Исходя из этого, возникает вопрос: как лучше всего реализовать сетевую инфраструктуру для такой игры, как Tetris, у которой довольно маленький ввод-вывод, передаваемый от пользователя к пользователю (скажем, максимум 4 игрока одновременно). Учитывая, что мы не можем назначить одного игрока в качестве стиля p2p хоста, наши варианты:

1.) Fat Server с игровой логикой, Light Clients обновляют отображение / интерполяцию на основе обновлений сервера (Ala Quake)

2.) Сервер Light управляет связью между Fat Clients (Ala Параллельное моделирование, такое как игры RTS)

Проблема в том, что мы неопытны, когда речь заходит о сетевых играх, и поэтому очень хотели бы получить совет по поводу плюсов и минусов этих решений (или даже других решений). Наша игра «Тетрис» не так тривиальна, как отправка «атакующих линий», когда клиент очищает линии, чтобы добавить других игроков, сражающихся в данный момент. Нам нужно немного больше синхронизации в реальном времени, чем это. Например, список следующих тетримино - это единый общий источник, где все «борются» за желаемые кусочки.

Наконец, в зависимости от выбранной реализации, мне интересно, есть ли у кого-нибудь опыт работы с Node.js на игровых серверах. Я бы предположил, что если бы сервер был легковесным сервером, который обрабатывал только передачу данных между клиентами, то Node был бы идеальным решением. Однако, если бы игровая логика была размещена на сервере node.js, я бы предположил, что блокирующий характер вычислений сделает избыточным однонитевой неблокирующий подход ввода-вывода Node.js? Во всяком случае, любые советы по этому вопросу очень ценятся.

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

Полное раскрытие: я являюсь соучредителем платформы Union.

Если вы хотите быстро приступить к работе, я бы предложил использовать существующую многопользовательскую серверную и клиентскую среду, такую ​​как предложенная ранее, илиПлатформа Union (www.unionplatform.com, бесплатно для 1000 одновременных подключений).

люди, как правило, недооценивают объем инфраструктуры, необходимый для создания полнофункциональной многопользовательской игры с надежными системами лобби и организацией матчей.если вы строите с нуля, вы можете потратить, скажем, столько времени на код восстановления и восстановления соединения, как и на физику основной игры.

в такой игре, как многопользовательский тетрис, я бы реализовал авторитетную логику игры / мирана сервере (в объединении вы бы использовали комнатный модуль) и зеркально отразили симуляцию на стороне сервера на стороне клиента.клиент показывает вывод, интерполирует мир на стороне сервера и предоставляет входные данные игрока.Вот пример многопользовательской игры в понг, в которой используется этот подход:

http://www.unionplatform.com/?page_id=1229

Одна потенциально полезная функция объединения в вашей ситуации - это поддержка javascript websocket в дополнение к традиционному http-общению.

http://www.unionplatform.com/?page_id=1587

поддержка javascript дает вам возможность создавать полноценные игровые клиенты в html5 или добавлять собственные клиенты веб-браузера для отображения статистики или просмотра игр, в которые играют во флэш-памяти.Протокол Union также публично документирован (http://www.unionplatform.com/?page_id=86),, так что вы можете создавать пользовательские функции клиента на любом языке.

из любопытства, у вас есть общедоступная ссылка на вашу игру?

весело!

Колин

1 голос
/ 06 сентября 2011

У меня был некоторый успех с SmartFoxServer .Это бесплатно для менее чем 100 одновременных пользователей, но если у вас есть больше, вам нужно купить лицензию.

Тем не менее легко написать логику на стороне сервера, а также легко управлять и развертывать.

0 голосов
/ 07 августа 2011

Я использовал Flash Media Server для разработки ряда многопользовательских приложений (включая игры). Лично я думаю, что это слишком дорого для того, что делает для тебя.

Я никогда не использовал Red5 или Node.js , но разъемы от Node.js звучат многообещающе.

Я также создал простой бесконечный сокет - , использующий PHP , который также работает (но не так хорошо, он немного нервный), держу пари, вы можете найти больше Информация об этом и, возможно, что-то разработайте сами, понимая, что вам не придется передавать слишком много данных между пользователями. В Интернете есть несколько примеров использования PHP сокетов с * SWF * s, как этот пример чата на kirupa.com

Удачи .

...