Мультиплеер Google Play Game Services с переключением активности - программирование
Подтвердить что ты не робот

Мультиплеер Google Play Game Services с переключением активности

В моей игре Android у меня есть пошаговая мультиплеер. Пользователи ждут противников в фойе, и когда ровно 3 совпадают, они идут в новую игровую комнату вместе, что является еще одним Управлением, чем лобби.

Документы предлагают запретить действиям BaseGameActivity. Но по мере того как я переключаю действие, пока игроки уже подключены, мне нужно поместить части подключения в службу, к которой привязана моя активность?

Кто-нибудь уже пытался с Game Services? Как начать, если я не могу использовать BaseGameActivity?

4b9b3361

Ответ 1

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

Так что использование фрагментов - это, наверное, самый простой способ сделать это. Он также довольно чистый и позволяет вам составлять планшет, объединяя их, если вы хотите.

В частности, если вы настраиваете многопользовательскую игру, отсоединение отключит вас от комнаты, поэтому вы не сможете переключиться на другое действие после начала рукопожатия: -)

Ответ 2

Я занимаюсь разработкой многопользовательской игры, используя эти новые сервисы Google Play Game. Он включает в себя достижения и списки лидеров, а также многопользовательские игры.

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

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

Так как "части подключения" являются апатридами, просто подключайтесь по мере необходимости. Вы даже можете передать идентификатор комнаты/участника (-ов) для каждого вида деятельности через пакет Intent (или использовать шаблон singleton pattern). Таким образом, вы сэкономите время автономной работы, производительность и т.д.

Ответ 3

В документации объясняется, как использовать Игровые службы без BaseGameActivity, когда это необходимо.

Например, во время signin:

https://developers.google.com/games/services/training/signin

Нажатие кнопки "Вход" должно инициировать входной поток. Если вы используете базовый класс BaseGameActivity, предоставленный в образцах, просто вызовите метод beginUserInitiatedSignIn(). В противном случае вы должны вручную вызвать метод connect() вашего объекта GamesClient.

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