Настройте Google Play Игры для Unity и пройдите аутентификацию

В этом документе описана процедура настройки проекта Unity для использования плагина Google Play Games. Вы узнаете, как установить плагин и настроить проект Unity. В документе также рассматривается процедура проверки службы аутентификации.

Прежде чем начать

Ознакомьтесь с требованиями к программному обеспечению . Настройте Play Console и установите Unity Hub.

Установка плагина

Чтобы загрузить и установить плагин Google Play Games для Unity, выполните следующие действия в Unity Hub:

  1. Скачайте репозиторий GitHub .

  2. В current-build найдите файл unitypackage . Этот файл представляет собой плагин. Например, он должен выглядеть примерно так:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Настройка проекта Unity

Чтобы настроить проект Unity в параметрах плеера, выполните следующие действия:

  1. Откройте свой игровой проект.

  2. В Unity Hub нажмите Assets > Import Package > Custom Package , чтобы импортировать файл unitypackage в ресурсы вашего проекта.

  3. Убедитесь, что в качестве текущей платформы сборки выбрана Android .

    1. В главном меню нажмите Файл > Настройки сборки .

    2. Выберите Android и нажмите «Переключить платформу» .

    3. В меню «Окно» > «Google Play Games» должен появиться новый пункт. Если его нет, обновите ресурсы, нажав «Ресурсы» > «Обновить» , а затем попробуйте снова установить платформу сборки.

  4. В Unity Hub нажмите File > Build Settings > Player Settings > Other Settings .

  5. В поле «Уровень целевого API» выберите версию.

  6. В поле «Бэкенд скриптов» введите IL2CPP .

  7. В поле «Целевые архитектуры» выберите значение.

  8. Обратите внимание на имя пакета package_name . Эта информация пригодится вам позже.

Настройки проигрывателя в вашем проекте Unity
Настройки проигрывателя в вашем проекте Unity.

Создать новое хранилище ключей

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

  1. В Unity Hub нажмите File > Build settings > Player settings .
  2. В разделе «Настройки публикации» нажмите «Диспетчер хранилища ключей» .
    1. В окне диспетчера хранилищ ключей нажмите «Хранилище ключей» > «Создать новый» > «В любом месте» .
    2. Выберите папку и укажите имя для хранилища ключей.
    3. В поле «Пароль» введите пароль и подтвердите его.
    4. Нажмите «Добавить ключ» .

Обратите внимание на название папки. Вы можете использовать это имя для создания учетных данных в Google Cloud.

Скопируйте ресурсы Android из Play Console.

Каждое достижение, таблица лидеров и событие, созданное вами в Play Console, включает в себя ресурс Android, который вы используете при настройке проекта Unity .

Чтобы получить ресурсы Android для вашей игры, выполните следующие шаги:

  1. В консоли Google Play откройте игру.

  2. На странице «Конфигурация служб Play Games» ( Grow > Play Games Services > Настройка и управление > Конфигурация ) нажмите «Получить ресурсы» .

  3. В окне «Ресурсы» перейдите на вкладку «Android (XML)» .

  4. Выберите и скопируйте содержимое ресурсов Android ( AndroidManifest.xml ).

Добавьте ресурсы Android в свой проект Unity.

Добавьте следующие ресурсы Android в свой проект Unity:

  1. В Unity Hub нажмите Window > Google Play Games > Setup > Android Setup .

    • В поле «Каталог для сохранения констант» введите имя папки, в которой будет храниться файл с константами.
    • В поле «Имя класса констант» введите имя создаваемого класса C#, включая пространство имен.

      Например, если класс C# имеет имя id.cs и находится в папке Assets > myproject > scripts > id.cs , то имя класса констант может быть myproject.scripts.id .

    • В поле «Определение ресурсов» вставьте данные ресурсов Android (файл AndroidManifest.xml ), скопированные из консоли Google Play.

    • Необязательно: в поле «Идентификатор клиента» введите идентификатор клиента связанного веб-приложения.

      Чтобы получить идентификатор клиента для вашей игры из Google Cloud, см. раздел «Создание идентификаторов клиентов» .

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

    • Нажмите «Настройка» . Это настроит вашу игру с использованием идентификатора клиента и сгенерирует класс C#, содержащий константы для каждого из ваших ресурсов Android.

  2. В Unity Hub нажмите Window > Google Play Games > Setup > Nearby Connections Setup .

    • В поле «Идентификатор службы подключения поблизости» введите package_name .

      Используйте то же package_name , которое вы использовали при настройке проекта Unity .

    • Нажмите «Настройка» .

Выберите социальную платформу

Плагин Google Play Games Services реализует социальный интерфейс Unity, обеспечивая совместимость с играми, которые уже используют этот интерфейс при интеграции с другими платформами. Однако некоторые функции являются уникальными для Play Games и предлагаются в качестве расширений стандартного социального интерфейса, предоставляемого Unity.

Стандартные вызовы API доступны через объект Social.Active , который представляет собой ссылку на интерфейс ISocialPlatform . Доступ к нестандартным расширениям Google Play Games Services можно получить, приведя объект Social.Active к классу PlayGamesPlatform , где доступны дополнительные методы.

Используйте плагин, не заменяя стандартную социальную платформу.

При вызове метода PlayGamesPlatform.Activate , Google Play Games Services становится вашей реализацией социальной платформы по умолчанию. Это означает, что плагин Google Play Games Services выполняет статические вызовы методов в классах Social и Social.Active , что является ожидаемым поведением для большинства игр, использующих этот плагин.

Однако, если по какой-либо причине вы хотите сохранить доступ к реализации по умолчанию (например, чтобы использовать её для отправки достижений и таблиц лидеров на другую социальную платформу), вы можете использовать плагин Google Play Games Services, не переопределяя реализацию по умолчанию. Для этого:

  1. Вызовите метод PlayGamesPlatform.Activate .
  2. Если Xyz — это имя метода, который вы вызываете в классе Social , не вызывайте Social.Xyz . Вместо этого вызовите PlayGamesPlatform.Instance.Xyz .
  3. При взаимодействии с сервисами Google Play Games используйте свойство PlayGamesPlatform.Instance вместо Social.Active .

Таким образом, вы можете одновременно отправлять результаты и достижения на две или более социальных платформы:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Проверьте службу аутентификации.

При запуске игры автоматически предпринимается попытка подключения к сервисам Play Games с использованием аутентификации платформы . Если подключение проходит успешно, игра отображает запрос на вход в систему и готова к использованию плагина Google Play Games Services для Unity.

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

В методе Start вашего скрипта отслеживайте результат попытки автоматической аутентификации, получайте статус аутентификации и отключайте функции Play Games Services, если пользователь не аутентифицирован.

Если версия плагина Unity ниже v11 , вы не сможете использовать функцию аутентификации.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

Результатом является перечисление, которое можно использовать для определения причины сбоя аутентификации.

Если вы предпочитаете использовать социальную платформу Unity, вы можете также использовать следующий код:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Вы не сможете выполнять вызовы API сервисов Google Play Games, пока не получите успешное возвращение значения от Authenticate . Поэтому мы рекомендуем играм отображать экран ожидания до вызова функции обратного вызова, чтобы пользователи не могли начать играть, пока не завершится аутентификация.

Используйте функцию подписи приложений Play.

Google управляет и защищает ключ подписи вашего приложения с помощью Play App Signing. Вы можете использовать Play App Signing для подписи оптимизированных дистрибутивов файлов Android APP Bundle . Play App Signing хранит ключ подписи вашего приложения в защищенной инфраструктуре Google. Чтобы использовать Play App Signing, сначала необходимо создать и загрузить файл AAB из Unity Hub. Затем вы можете загрузить файл AAB в Play Console и создать внутренний тестовый релиз.

Создайте файл AAB

Чтобы создать AAB-файл в Unity Hub, выполните следующие действия:

  1. В Unity Hub нажмите File > Build settings .
  2. Выберите «Создать пакет приложения» (Google Play) .

    Для получения более подробной информации см. справочник по настройкам сборки Android .

  3. Нажмите «Сборка» .

  4. Загрузите файл AAB из Unity Hub.

Создайте внутренний тестовый релиз.

Для создания внутреннего тестового релиза и добавления тестировщиков в Play Console выполните следующие действия:

  1. В консоли Google Play выберите игру.
  2. Перейдите на страницу «Тестирование и выпуск» ( Тестирование > Внутреннее тестирование ).
  3. Нажмите «Загрузить» и выберите файл формата AAB.
  4. В поле «Подробности релиза» введите название.
  5. Нажмите «Далее» и ознакомьтесь с подробностями выпуска.
  6. Нажмите «Сохранить и опубликовать» .
  7. На вкладке «Тестировщики» нажмите «Создать список рассылки» , чтобы добавить до 100 тестировщиков.

    Для получения дополнительной информации см. раздел «Внутреннее тестирование: управление до 100 тестировщиками» .

  8. В поле «URL-адрес для обратной связи или адрес электронной почты» введите URL-адрес или адрес электронной почты для отправки отзыва.

  9. Нажмите « Сохранить ».

Проверьте учетные данные для подписи вашего приложения.

  1. В консоли Google Play выберите игру.
  2. Перейдите на страницу тестирования и выпуска ( Настройка > Подписание приложения ).
  3. Проверьте учетные данные для подписи вашего приложения.

Соберите и запустите проект.

На этом этапе вы можете собрать и запустить игровой проект. При запуске игры вы увидите автоматическую попытку аутентификации.

Вам потребуется физическое устройство на базе Android с включенной отладкой по USB или эмулятор, способный запускать разработанный проект.

Получение кодов аутентификации сервера

Для доступа к API Google на серверной части от имени текущего игрока необходимо получить код аутентификации от клиентского приложения и передать его на серверную часть. Затем этот код можно обменять на токен доступа для выполнения вызовов к различным API. Подробную информацию о процессе см. в разделе «Вход через Google для веб-приложений» .

Чтобы получить код доступа к серверу:

  1. Добавьте идентификатор веб-клиента для вашей игры в Play Console.
    1. В консоли Google Play выберите свою игру.
    2. На странице «Конфигурация» ( Расширение числа пользователей > Службы Play Games > Настройка и управление > Конфигурация ) нажмите «Добавить учетные данные» .
    3. На странице «Добавить учетные данные» выберите «Игровой сервер» .
    4. Сгенерируйте идентификатор клиента OAuth 2.0 .
    5. Запишите значение идентификатора клиента. Вам потребуется указать это значение позже.
  2. Добавьте идентификатор веб-клиента в Unity Hub.

    1. В Unity Hub настройте Google Play Games для Unity и пройдите аутентификацию .
    2. В Unity Hub перейдите в меню Window > Google Play Games > Setup > Android Setup .
    3. Введите значение идентификатора клиента.
  3. Получите код авторизации сервера для дополнительных областей действия.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Настройка и добавление функций