Мультиплеер Google Play Game Services с переключением активности
В моей игре Android у меня есть пошаговая мультиплеер. Пользователи ждут противников в фойе, и когда ровно 3 совпадают, они идут в новую игровую комнату вместе, что является еще одним Управлением, чем лобби.
Документы предлагают запретить действиям BaseGameActivity. Но по мере того как я переключаю действие, пока игроки уже подключены, мне нужно поместить части подключения в службу, к которой привязана моя активность?
Кто-нибудь уже пытался с Game Services? Как начать, если я не могу использовать BaseGameActivity?
Ответы
Ответ 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, и, насколько я понял, соединение, сделанное в одном действии, будет там, если вы получаете доступ к нему из другой активности (но я еще не тестировал многопользовательский режим).