Достаточно ли опроса базы данных MySQL для пошаговой Flash-игры?

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

Однако я полностью способен отправлять и получать данные между Flash и MySQL через PHP в различных форматах.

Если бы мне пришлось создать пошаговую игру, подойдет ли такой опрос базы данных MySQL (через PHP)? На данный момент я думаю в этом направлении:

  1. Два игрока находят друг друга с помощью глобального списка открытых игр (довольно стандартный подход).
  2. В базе данных создается встреча или аналогичная строка.
  3. В строке будет храниться информация о том, кто сейчас ход, и текущее состояние игры в формате JSON или XML. Строка также будет содержать временную метку от каждого игрока, представляющую последний раз, когда они запрашивали информацию о состоянии игры в базе данных. Когда игроки завершают свой ход, поле «ход» переключается.
  4. Каждый игрок опрашивает базу данных, чтобы узнать, наступила ли их очередь. Если это так, информация о состоянии игры будет сравниваться с информацией о состоянии игры до того, как они закончили свой последний ход, и на экране будут выполняться действия, отражающие разницу. Затем начинается их очередь, и процесс повторяется.
  5. Во время опроса базы данных, если противник не опросил базу данных для своего хода в течение 120 (произвольных) секунд, игрок получит уведомление о том, что другой игрок ушел / истек срок ожидания / что угодно.

Будет ли это слишком медленным или ненадежным? Или есть другие проблемы, которые можно предвидеть, например, результат одновременного опроса базы данных обоими игроками (не уверен, что это имеет значение)?


person Marty    schedule 28.08.2012    source источник


Ответы (1)


Вместо опроса я предлагаю вам изучить технологию, позволяющую передавать данные с сервера на Flash-клиент. Двумя наиболее распространенными вариантами являются либо соединения через сокеты, либо использование протокола обмена сообщениями в реальном времени, см. этот вопрос для получения дополнительных сведений. Это стандартный подход к созданию игр в реальном времени с использованием Flash.

Для PHP существует ряд продуктов или фреймворков с открытым исходным кодом с поддержкой AMF на основе RTMP. протокол:

  1. WebORB для PHP
  2. Zend Framework AMF Adobe Systems предоставила поддержку своего открытого протокола двоичного формата сообщений действий (AMF) в Zend Framework. Очень полезно, если вы уже используете Zend Framework.
  3. amfPHP
  4. sabreamf

Я лично использовал Zend Framework AMF с хорошими результатами, слышал хорошие отзывы о WebORB. Я не использовал другие библиотеки AMF.

Что касается ваших конкретных вопросов: я бы не стал хранить информацию в базе данных как JSON или XML, поскольку вы хотите запрашивать данные. Гораздо эффективнее хранить данные как собственные данные SQL.

Вот краткий пример , показывающий, как используйте Zend Framework AMF, чтобы получить представление о том, как это будет работать.

person raju-bitter    schedule 28.08.2012