Как создать многопользовательский шутер в ActionScript для Blackberry Playbook? - PullRequest
1 голос
/ 17 апреля 2011

Что такое хороший фреймворк для создания многопользовательской игры в Actionscript?

Я хочу создать многопользовательский 2D-шутер, например Asteroids, в Blackberry Playbook; Мое главное беспокойство - задержка - стрелок не будет веселым, если пули будут супер-рывками и неожиданно поразят людей.

Я предполагаю, что структура на основе UDP была бы лучшей. Кто-нибудь может указать мне правильное направление?

Ответы [ 4 ]

2 голосов
/ 22 апреля 2011

Есть много вещей, которые вы можете использовать с полки, но базовая настройка очень проста, но у вас есть несколько вариантов.

Наиболее распространенным является продвижение сервера, такие вещи, как Flash Media Server, LiveCycle Data Services от Adobe или другие инструменты, такие как SmartFoxServer, могут сделать это.При такой настройке сервер сохраняет подключения для всех, кто подключается к серверу, и передает или «передает» состояние приложений людям, подключенным каждый раз, когда данные изменяются в приложении.

Еще одна опция называется длинным вытягиванием, это можно сделать на любом веб-сервере.Как это работает, данные хранят состояние приложения, когда приложение запускает, оно вызывает сервер, когда оно отвечает, клиент снова вызывает сервер.

Есть несколько других способов сделать это, но они являются наиболее распространенными.Но это не имеет ничего общего с протоколом, таким как HTTP, UDP, AMF, XMPP или чем-то еще.Протокол - это формат отправки данных.С этих готовых серверов они обычно выводят некоторые из них, но самые быстрые форматы являются двоичными, как AMF, но не всегда являются лучшими, у каждого есть свои преимущества, потому что каждый дает вам различные функции для отслеживания вещей.

Если вы говорите о том, чтобы иметь игру, которая захватывает мир с миллионами пользователей, вам нужно подумать о масштабировании и о том, что происходит, когда вам нужно два или 100 серверов и как они общаются друг с другом.Но пока имейте в виду, что чем больше сервер делает, тем медленнее он будет работать, если вы отправляете небольшие объемы данных, он сможет обрабатывать больше пользователей.Придерживайтесь создания одного эффективного сервера и побеспокоитесь об этом позже, если доберетесь туда.

Вам также необходимо знать, с каким языком программирования на стороне сервера вы хотите связываться, если таковой имеется.Некоторые сервисы не позволяют вам ничего делать, они обычно стоят денег и не так много.Adobe любит Java, но есть серверы, которые выводят все эти протоколы на большинстве языков.В последнее время мне больше всего нравится Node.js - супер быстрый способ запуска JavaScript на сервере.Node.js имеет встроенный HTTP-сервер, но так же просто создать простой сервер, который отправляет основной текст через Socket или XMLSocket .Такой сервер легко справится со многими тысячами пользователей.Во многих играх используется Socket.IO, и если вы хотите увидеть простой пример того, о чем я говорю, вы можете проверить это.

2 голосов
/ 17 апреля 2011

Вы можете сделать постоянный запрос «отправить / получить» с сервера, чтобы получить данные для игры, но для многопользовательского шутера я бы выбрал SmartFoxServer: http://www.smartfoxserver.com/

2 голосов
/ 17 апреля 2011

Предполагается, что вы хотите использовать Flash / Flex, а не Java (Blackberry / Android) или нативные SDK для Playbook -

  1. Книга вдохновляет вас: http://www.packtpub.com/flash-10-multiplayer-game-essentials/book он использует Pulse SDK на стороне сервера.Но вы можете использовать собственную сокет-программу на стороне сервера.Я использую Perl в качестве сервера TCP-сокетов (отправляет gzipped XML) в небольшой карточной игре , но это не сработает для вашего стрелка.

  2. Flash не работаетподдержка UDP "из коробки"

  3. Но есть протокол одноранговой сети RTMFP в следующем Flash Media Server Enterprise 4 (цена недосягаема для простых смертных)

Поэтому лучше всего купить сервис Amazon для RTMFP , тогда вы сможете платить за использование и оставатьсямасштабируемый ...

1 голос
/ 18 апреля 2011

Из коробки Adobe AIR поддерживает UDP через пакеты дейтаграмм. http://help.adobe.com/en_US/air/reference/html/flash/net/DatagramSocket.html

Мне не удалось найти конкретный сетевой API для флэш-памяти, но, возможно, вы можете его создать. Libgren является открытым исходным кодом, и вы можете использовать его для справки.

Вы также можете заглянуть в RTMFP, хотя он сосредоточен на передаче аудио / видео и некоторых сообщений (я думаю, через TCP).

...