четверг, 7 февраля 2013 г.

как должны работать аналоговые кнопки на джойстике

Чтобы опробовать данную технологию и поиграть вдвоем в интренете предлагаю выбрать один из 16000 ромов на сайте и запустить эмуляцию. Далеко не все ромы рабочие, поэтому выбирайте зеленые с тегом verified.

Начать работу с Flash P2P элементарно, весь процесс уже описывался на хабре: , повторяться не будем. Общий смысл такой, мы подключаемся к Cirrus серверу, получаем 256-битный id, отсылаем их друг другу. Все, теперь можно слать данные peer-to-peer, что и реализовано в нашем эмуляторе.

Первым прототипом была схема с примитивным С++ сервером, который получал через Flash Sockets данные о джойстиках, и пересылал их обоим клиентам. Прототип был вполне рабочим, но играть по сети могли пользователи которые находились вблизи сервера (ping ~ 60ms). Были мысли выложить его в open source, чтобы люди сами его собирали и запускали на своих серверах в непосредственной близости. Но тут Adobe выпускает протокол и технологию , которая решает все наши проблемы, и теперь мы можем подключить оба эмулятора через , и пропадает проблема с пингом. По крайней мере, люди в пределах одного города могут комфортно играть вдвоём.

Как видно, интерфейс простейший, но чтобы заставить все это работать по сети, мы должны отправить состояние джойстика первого игрока второму игроку, получить его состояние джойстика, и после этого запустить генерацию кадра экрана со звуком. И это должно происходить 50-60 раз в секунду.

Начну с того, как работает наш эмулятор. Для комфортной игры он должен отрабатывать ~50-60 кадров в секунду. На каждый кадр мы передаем состояние обоих джойстиков, в виде 2 байт, в котором установленный бит отвечает за одну из кнопок джойстика, а на выходе получаем заполненный экранный буфер 256x240, и звуковой ряд размером 44100/60~=735 семплов.

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

Сетевая игра в NES (Dendy) реализованная на Flash P2P

Сетевая игра в NES (Dendy) реализованная на Flash P2P / Хабрахабр

Комментариев нет:

Отправить комментарий