Задать вопрос

Какое сделать клиент-серверное взаимодействие при PvP в мобильной игре?

Здравствуйте! Делаю игру для смартфонов на Unity, возможно вы читали мои статьи с хабра (Истории о фееричных провалах в геймдеве, часть 1 и 2). Дошёл до PvP части и возник вопрос: какую архитектуру клиент-серверного взаимодействия надо делать?

Как происходит PvP:
1. Игрок авторизуется через vk (пока только через него, т.к. софтланч планирую на Россию и СНГ)
2. У игрока загружается список друзей. Тем, у кого есть игра, можно сразу отправить приглашение в PvP, а тем, у кого нет, можно отправить на стену предложение установить игру
3. Другому игроку приходит приглашение в PvP и он делает свою ставку в игровой валюте на свою победу
4. Игровые сессии происходят асинхронно, игрок взаимодействует только с противниками, вид и частоту появления которых я устанавливаю заранее. Побеждает тот игрок, кто наберёт большее количество очков в таком PvE сражении.

Что я больше всего не понимаю: какую информацию надо считывать с другого игрока, чтобы отправить ему приглашение? Как я понимаю, надо выцепить информацию об игроке 2 из api контакта, чтобы заслать ему инвайт, верно? Что это за информация?

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

Сервер планирую делать на Apache + Mysql + Codeigniter (выбрал этот фреймворк т.к. в нём документация на мне показалось более понятной чем в Yii). До этого ранее серверной разработкой никогда не занимался.
  • Вопрос задан
  • 2664 просмотра
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
oshikuru
@oshikuru
Python-разработчик, не брезгую js / html / css
Вы когда подключаете любого игрока к серверу, на сервере отмечайте, что он онлайн. Далее при необходимости ищете в своем списке онлайн-игроков и высылаете ему приглашение.

Упрощенно подключение:
1) Подключить игрока к серверу.
2) Внести его id в список онлайн.
3) Установить ему статус "вне боя"

Упрощенно поиск соперника:
1) Посмотреть в список онлайн, найти первого у кого статус "вне боя"
2) Создать комнату для боя, поместить в нее обоих участников
3) Обоим участникам выставить статус "ожидает боя".
4) Отправить приглашение обоим участникам.
5) После согласия обоих участников - выставить обоим статус "в бою" и начать бой.

Детали реализации и выбор технологий подключения к серверу, хранения сессии, вопросы обновления информации сессии и ее актуальности (до сих пор ли игрок онлайн) - оставляю за рамками этого ответа. Вероятно у vk-api есть какие-либо способы узнать о том, онлайн пользователь или нет. Но скорее всего придется реализовать самому.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы