Возможна ли многопользовательская игра в реальном времени с использованием Google App Engine?

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

По сути, я хочу, чтобы система работала следующим образом: игрок A вычисляет раунд n и генерирует хэш состояния игры в конец этого раунда. Затем он отправляет свои команды для этого раунда и хэш в виде HTTP POST на сервер. Игрок B делает то же самое, параллельно.

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

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

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

Я не могу использовать XMPP, потому что хочу, чтобы моя игра могла работать в ограниченных сетях, поэтому она должна быть ограничена http на порту 80.

Есть ли способ принудительно обеспечить, чтобы два экземпляра приложения всегда были Бег? Есть ли в моем дизайне явно очевидные недостатки? Как вы думаете, может ли подобная архитектура работать в App Engine? Если нет, какое облачное решение вы бы порекомендовали?

6
задан Markus Roth 18 February 2011 в 23:13
поделиться