Веб-игра на языке Python + Django и клиентский браузер. - PullRequest
3 голосов
/ 02 апреля 2010

Я создаю текстовую игру, в которой реализована базовая модель, в которой несколько (10+) игроков взаимодействуют с данными, а один модератор наблюдает за ними и устанавливает определенные статистические данные об окружающей среде, которые влияют на игровой процесс.

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

Мне интересно, как "протолкнуть" изменения, внесенные модератором игры, игрокам (например, модератор может решить показать изображение всем игрокам). Игра пошаговая, а не в режиме реального времени, но некоторые сообщения нужно выводить примерно в реальном времени.

Мои мысли: я мог бы, чтобы браузер каждого игрока периодически опрашивал состояние (скажем, каждые 30 секунд), чтобы увидеть, есть ли сообщение от модератора. Но это вызывает отставание и означает, что разные игроки могут получить его в разное время. И сокращение этого интервала до <10 кажется плохой идеей для сервера. </p>

Есть ли лучший способ информировать клиентов об изменениях? Не могли бы вы предложить что-то кроме использования веб-фреймворка, такого как Django?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2010

В дополнение к длительному опросу, упомянутому Матти, HTTP-сервер также может передавать данные, в основном используя один очень длинный ответ и никогда не заканчивая ответ (но продолжая передавать больше данных клиенту). Клиент может продолжать отвечать на данные по мере их поступления. Как вы уже поняли, опрос, вероятно, является плохим решением для любого приличного размера проекта.

Прежде чем вы сможете начать, вам нужно достаточно хорошо понять HTTP и Django. Этот тип технологии немного более передовой и может быть сложным время от времени.

Есть интересный проект, который, вероятно, стоит проверить: evserver . Это HTTP-сервер, который поддерживает асинхронный WSGI и позволит вам разрабатывать приложения COMET с помощью Django. (Отказ от ответственности: я фактически не использовал evserver, но это в моем списке "крутых вещей, чтобы попробовать")

0 голосов
/ 02 апреля 2010

Вы можете использовать длинный опрос .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...