Как устроено взаимодействие клиент\сервер в мобильных играх?

Привет, хабрадрузья.


Вопрос тривиальный, но для меня достаточно важный. Делаем с друзьями «в гараже» игру для мобильных устройств, есть описанная концепция, контент, дизайн. Приступаем к реализации клиента и сервера. Будем работать с фрилансером (надеюсь найти человека, который сможет написать сервер и клиент), но чтобы правильно сформулировать задачу, надо хотя бы примерно понимать решение. Парадокс, не правда ли:)


Игра подобна… например, покеру. Человек жмет на своем iOs\Android устройстве «Network Game», и начинается это самое взаимодействие:

→ экран загрузки (в это время клиент посылает на сервер запрос «кто еще ищет»);

→ сервер видит, что найдено пятеро со статусом «поиск» (кстати, где лучше хранить все статусы в sql?) и посылает всем пятерым статус «старт игры»;

→ далее сервер посылает пять ответов клиентам, один из них «ты водишь»;

→ тот который «водит» посылает серверу ответ;

→ сервер посылает опять всем пятерым, что ответил предыдущий и чей сейчас ход.

Ну, плюс фишка с таймером, если кто-то не делает телодвижения в течение 10 секунд, то сервер передает право хода.


Какие технологии применять (один сервер на нем python и mongo) или node и mongo? Какие существуют стандартные практики решения подобных задач?

P.S. Ну, собственно, я должен это написать: если ты светлый разработчик 80-го уровня и у тебя есть: а) желание нести пользу миру (самый высокий уровень развития по Маслоу, ну, вы поняли); б) желание поработать в «гаражной» команде; в) глубокие умения в mobile development — то пиши, мы небольшая команда, живем и работаем в Москве. Мечтаем сделать что-то настолько полезное, чтобы в раю нас поселили по соседству со Стивом и принцессой Дианой. Это первый проект, а в планах обучение буквам и словам для детей (международынй Appstore) и картинные галереи России (а вот с этим проектом хотим попробовать участие в Kickstarter). Если правилами запрещено, уберу.
  • Вопрос задан
  • 10942 просмотра
Решения вопроса 1
@marklarius
Вот эта статья освещает взаимодействие клиент-сервер (хоть и с упором на «стрелялки»).

Технология может быть любой (с учетом задержек мобильного Интернета). Ваш пример Я бы осуществил скорее всего на Питоне + Redis + Memcache.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@egorinsk
Я бы советовал вместо модных непроверенных технологий использовать проверенные — java или C++. Если хранить временные данные в памяти (зачем вам SQL??), то нормальный многоядерный/многигабайтный сервер будет держать соединения тыячами.
Ответ написан
Iliapan
@Iliapan
Люто плюсую за «плюсы» и оперативку, сорри за тавтологию :)
Ответ написан
Комментировать
Zelgadis
@Zelgadis
Простой способ:
Берем ejabberd, пишем свои расширения и превращаем его в сервер для игры. Так ngmoco ;) делали. Eiminate Pro как раз на ejabberd сделан.

Можно конечно свое, что-то сделать а ля Go + Redis (для онлаин игроков) + PostgreSQL (для авторизации и прочего) или целиков все в Mongo (только надо проверить, что локи мешать не будут).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы