mrsanders 16 марта 2018, 17:56  0  0
Хотите быстро и качественно реализовать мультиплеер в реальном времени в свои игры на Андроид устройствах? Можно использовать игровые сервисы от гугл, пробуем разобраться.

И так, вы можете использовать сетевую игру в реальном времени использую API игровых сервисов Google Play. Это позволит объединить пользователей вместе в одну сессию и пересылать данные между всеми игроками. Использование сервисов решит и упростит работу со следующими задачами:
*Управление сетевыми подключениями для передачи данных в реальном времени внутри комнаты(Room — Виртуальный конструктор который позволяет объединить игроков в одном месте)
*Содержит удобный интерфейс пользователя для приглашения игроков в комнату, можно создавать случайное подключение и автоподбор.
*Сохраняет данные об игроках в течении жизненного цикла сессии.
*Возможность отправлять уведомления на устройства в которых авторизован игрок.
Основы сетевой игры в реальном времени
Перед тем как начинать разрабатывать Ваше приложение(при условии что там будет сетевая игра) необходимо правильно перенести жизненный цикл сетевой игры в приложение.
Инициализация комнаты(Room)

Внутри комнаты создается своя сеть и игроки находящиеся в комнате передают данные между собой, а не через сервисы Google Play.
До начала игры игрок инициализирует сессию и приглашает в нее других игроков или делает запрос на автоматический подбор.

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

Основываясь на параметрах игрока и конфигурации созданной комнаты(данные могут быть переданы игроком или вашей игрой) игровые сервисы Google Play создают сессию для игроков и игры в реальном времени.

Если комната создается успешно игровые сервисы Google Play создают комнату и игрок создающий ее автоматичеки подключается к ней.

Настройка комнаты(Room configuration)
Вы должны указать количество игроков, которые будут подключены к Вашей комнате. На данный момент сервисы Google Play поддерживают игру до 8ми человек.

В настройках автоподбора игры, можно реализовать подбор игроков по определенным параметрам, например «PvP режим» или «захват флага».

Если игрокам необходимы специфические параметры в игре, Вы можете использовать параметрexclusiveBitMask.

Участники комнаты
Игроку который создал комнату, доступна возможность приглашать других игроков и включать автоподбор.

По стандартным настройкам Google, включен параметр «Игроки рядом».

Так же по умолчанию игроки видят своих друзей, независимо от PLUS_LOGIN.

Используя метод getInvititablePlayers(), игра вернет PLUS_LOGIN с параметрами друзей, вне зависимости от статуса профиля.

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

Игроки из автоподбора могут отображаться как анонимные пользователи, даже если знают друг друга.

Установка подключения
Когда игроки входят или выходят из комнаты, игровые сервисы автоматические создают одноранговую сеть между активными игроками. Так же, игровые сервисы могут отправлять всем участникам комнаты сообщения.
Коммуникация сети в игре
Для более качественной игры, в комнате должен быть «Хост» игрок который создает приоритетные данные и передает их остальным игрокам. В режиме автоподбора «Хост» подбирается по набору параметров.
Приглашения
Игроки могут приглашать друг друга средствами Google Cloud messaging,
Пользователи устройств с Android могут менять настройки:
* Отключение приложения
* Отключение мобильных уведомлений
* Разрешить список лиц которые могут уведомить

Игровые сервисы передают вместе с приглашением и некоторые параметры, такие как время, ID приглашения и игрок который приглашает.
Игровой процесс
Если игровая комната наполнена необходимым количеством игроков для старта, игру можно начинать. Если игрок покинет комнату во время игры, игра просто выкинет его из комнаты. Важно отметить что на освободившиеся место при запущенной игре нельзя зайти другому игроку.
Обмен данными
Обмен данными между игроками в комнате может происходить двумя способами:
1.Надежная передача
Благодаря надежной передаче сообщений гарантируется доставка, целостность и упорядочение данных. Вы можете получать уведомления о статусе доставки с помощью обратного вызова. Надежная передача сообщений подходит для отправки нечувствительных к времени данных. Вы также можете использовать надежную передачу сообщений для отправки больших наборов данных, где данные могут быть разделены на более мелкие сегменты, отправлены по сети и затем повторно собраны принимающим клиентом. Надежная передача сообщений может иметь высокую задержку. Максимальный размер надежного сообщения, которое вы можете отправить, составляет 1400 байт.
2.Ненадежная передача.
Ненадежная передача сообщений. Клиент игры отправляет данные только один раз («fire-and-forget») без гарантии доставки данных или получения данных по порядку. Однако целостность гарантирована, поэтому нет необходимости добавлять контрольную сумму. Ненадежная передача сообщений имеет низкую задержку и подходит для отправки данных, чувствительных к времени. Ваше приложение несет ответственность за то, чтобы игра вела себя правильно, если сообщения были удалены при передаче или получены не в порядке. Максимальный размер ненадежного сообщения, которое вы можете отправить, составляет 1168 байт.

Отправка сообщений
Вы можете отправлять сообщения между участниками находящимися внутри комнаты, но если у участника проблемы с соединением или доступов в интернет сообщения могут быть не доставлены.

Для качественной работы с передачей данных, следует придерживаться следующих правил:
пересылайте только данные которые необходимы участникам комнаты, не отсылайте данные всем участникам без необходимости. При использовании надежного протокола, не превышайте отправку сообщений более чем 50 сообщений в секунду. Если Вам нужно больше сообщений используйте ненадежную передачу.

Получение сообщение
Участники могут получать сообщения только когда они находятся в комнате.

Закрытие комнаты
Вы обязаны разрывать соединение когда игроки покидают комнату, иначе могут быть проблемы с игровыми сервисами Google Play. Важно помнить что комната будет закрыта когда все игроки покидают ее. Не забывайте сохранять комнату правильным образом.

Перевод: developers.google.com/games/services/common/concepts/realtimeMultiplayer

mrsanders 4 мая 2016, 15:20  0  0
Русская Рулетка игра для Android
Доброго времени суток, друзья совсем недавно мы с ребятами запустили свое первое игровое приложение для Android «Русская Рулетка». Вот спешу поделится подробностями, как мы это делали.

mrsanders 27 октября 2015, 12:00  0  0

Скриншот — изображение выводимое на экране монитора в данный момент.
Чтобы сделать скриншот на разных ОС, необходимо