Игровые сервисы Google Play в UDP-сборках
Обзор
Внедрение игровых сервисов Google Play в ваши игры для Android позволяет использовать сервис Google. слой для таких функций, как достижения и таблицы лидеров. Если в вашей игре реализованы игровые сервисы Google Play, требуется дополнительная настройка для поддержки сборок, которые UDP создает для разных магазинов.< /p>
Когда ваша игра вызывает игровые сервисы Google Play, игровые сервисы Google Play проверяют соответствие следующих сведений информации, зарегистрированной в Google Play Console:
- имя пакета приложения
- Сертификат, которым было подписано приложение
Если они не совпадают, игрок не сможет войти в приложение с игровыми сервисами Google Play.
Для некоторых магазинов, в которых вы публикуете свою игру через UDP, UDP добавляет суффикс для конкретного магазина к имени пакета. Кроме того, если вы не используете свой закрытый ключ для создания сертификата, UDP создает сертификат для каждой переупакованной сборки. Эти события могут привести к тому, что имя вашего сертификата и/или пакета больше не будет соответствовать информации в консоли Google Play. Это помешает пользователям входить в игру с помощью игровых сервисов Google Play.
В следующем разделе объясняется, как решить эту проблему.
Настройка игровых сервисов Google Play для UDP-сборок
В этом разделе объясняется, как связать ваши версии UDP с приложением Google Play, чтобы игровые сервисы Google Play могли работать во всех них.
- В консоли Google Play перейдите к нужному приложению.
- Перейдите в раздел Игровые сервисы Play > Настройка и управление > Конфигурация.
- Если в вашей игре Google Play реализованы игровые сервисы Google Play, ваша игра уже будет связана с проектом игровых сервисов Google Play. В таком случае:
- Выберите Использовать существующий проект Play Games Services.
- Выберите свой игровой проект и нажмите Использовать.
- Следуйте инструкциям в разделе Свяжите UDP-приложения с вашим игровым сервисом.
- Если в вашей игре Google Play не реализованы игровые сервисы Google Play:
- На странице настройки игровых сервисов Play выберите Да, моя игра уже использует Google API или Нет, моя игра не использует Google API.
- Выполните действия, описанные в разделе Создание и связывание проекта игровых сервисов Google Play.
- Если в вашей игре Google Play реализованы игровые сервисы Google Play, ваша игра уже будет связана с проектом игровых сервисов Google Play. В таком случае:
Создание и связывание проекта игровых сервисов Google Play
В этом разделе объясняется, как создать проект игровых сервисов Google Play и связать его с новым или существующим облачным проектом.
Если вы выбрали Да, моя игра уже использует Google API на странице настройки игровых сервисов Play:
- Выберите облачный проект.
- Выберите «Использовать», чтобы создать новый проект Play Games Services и связать его с существующим облачным проектом.
Если вы выбрали Нет, моя игра не использует Google API на странице настройки игровых сервисов Play:
- Введите название игры.
- Нажмите «Создать», чтобы создать новый проект Play Games Services и связать его с новым облачным проектом.
При создании нового проекта Play Games Services ссылка Добавить учетные данные отключается.
- Выберите Настроить экран согласия OAuth.
- На экране конфигурации игровых сервисов Play выберите "Обновить".
Параметр Добавить учетные данные теперь включен. - Выберите Добавить учетные данные.
Откроется страница добавления учетных данных. - На странице добавления учетных данных:
- Выберите Android в качестве Типа.
- Установите для параметра Включить защиту от пиратства значение Выкл.. Это позволит пользователям получить доступ к вашей игре, если они установили ее из магазина приложений, отличного от Google Play.
- В разделе "Авторизация" выберите Создать клиент OAuth. Откроется всплывающее окно.
- Выберите Создать идентификатор клиента OAuth и используйте сведения из всплывающего окна для заполнения формы.
После выполнения описанных выше действий ваша игра в Google Play будет связана с ее игровыми сервисами Google Play. Следующим шагом является связывание сборок UDP с игровыми сервисами.
Связывание UDP-приложений с вашими игровыми сервисами
Связав свое приложение с игровыми сервисами Google Play, вы можете связать другие (UDP) приложения с игровыми сервисами.
- В Google Play Console выберите Игровые сервисы Play > Настройка и управление > Конфигурация.
- На странице конфигурации игровых сервисов Play выберите Добавить учетные данные.
- На странице добавления учетных данных:
- Выберите Android.
- Выключите параметр Включить защиту от пиратства. Это позволит пользователям получить доступ к вашей игре, если они установили ее из магазина приложений, отличного от Google Play.
- В разделе Авторизация выберите Создать клиент OAuth. Откроется всплывающее окно.
- Выберите Создать идентификатор клиента OAuth и используйте сведения из всплывающего окна для заполнения формы.
- В форме «Создание идентификатора клиента OAuth» введите необходимые данные, чтобы создать запись для одной из ваших сборок UDP.
- В поле Имя назовите сборку в честь соответствующего магазина, например «Версия Samsung».
- В поле Имя пакета укажите имя пакета для сборки, зарегистрированной в соответствующем магазине через консоль UDP.
Имя пакета для конкретного магазина отображается в консоли UDP:- Перейдите на вкладку "Мои игры" > "Опубликовать".
- Выберите Дополнительно для соответствующего магазина.
Имя пакета отображается в разделе «Основная информация».
- В поле сертификата используйте сертификат, используемый для соответствующего хранилища UDP. UDP подписывает приложение новым сертификатом после операции переупаковки.
Сертификат конкретного магазина отображается в консоли UDP:- Перейдите на вкладку "Мои игры" > "Опубликовать".
- Выберите Дополнительно для соответствующего магазина.
Сертификат отображается в разделе «Основная информация».
Примечание. Вы также можете загрузить сертификат APK и получить информацию об отпечатке пальца с помощью команды:
openssl x509 -in [путь к загруженному-pem-файлу] -fingerprint -noout
- Скопируйте SHA–1 из консоли UDP в поле сертификата.
- Заполнив форму, выберите Создать и вернитесь в Google Play Console.
- Выберите Обновить клиенты OAuth.
- Выберите новый клиент OAuth.
- Выберите Сохранить изменения, чтобы сохранить учетные данные.
- Повторите описанные выше шаги для каждой сборки UDP для конкретного магазина, которую вы хотите связать со своим приложением Google Play.
Вы можете просмотреть сборки UDP, которые вы связали с вашим приложением Google Play, на панели Google Cloud Platform > Google API & Services в разделе Учетные данные.
Эти шаги позволяют игровым сервисам Google Play успешно работать со всеми версиями магазина UDP, которые связаны таким образом, за исключением Mi GetApps (чей SDK интегрирует старую версию Google Mobile Services, что создает конфликты).
Примечание. Любые изменения в системах Google могут повлиять на решение, описанное выше. Для получения дополнительной информации об устранении неполадок Google см. Документация Google.
Использование Cloud Build с UDP
Вы можете использовать Cloud Buildслужбу непрерывной интеграции для проектов Unity, которая автоматизирует процесс создания сборок на серверах Unity. Подробнее
См. в Словарь, чтобы развернуть игру на консоли UDP следующими способами:
- Загрузите APK-файл в Cloud Build и оттуда разверните его в UDP
- Создайте свою игру с помощью Cloud Build и оттуда разверните ее в UDP
Отправка сборки в UDP-консоль через Cloud Build
В этом разделе объясняется, как использовать Cloud Build для отправки вашей игры в UDP. В редакторе Unity включите Cloud Build в окне Unity Services.
Использование Cloud Build в редакторе для развертывания вашей игры на UDP
Чтобы развернуть свою игру в UDP с помощью функции Cloud Build в редакторе Unity, вам необходимо загрузить свою UDP-сборку и отправить ее в UDP.
- В окне Cloud Build Services, если вы еще не загрузили ни одной сборки, выберите Загрузить сборку.
- В ФАЙЛЕ:
- Выберите ЗАГРУЗИТЬ и дождитесь завершения процесса загрузки.
- В окне Cloud Build Services найдите нужную сборку на временной шкале История сборки и выберите Отправить на портал распространения Unity.
- Убедитесь, что вы хотите отправить сообщение и что действие завершено.
- Убедитесь, что вы хотите отправить сообщение и что действие завершено.
Использование панели инструментов Unity для развертывания игры в UDP
Чтобы развернуть свою игру в UDP с помощью функции Cloud Build на панели инструментов Unity, вам необходимо загрузить свою сборку UDP на панель инструментов Unity и отправить ее оттуда в UDP.
- На панели инструментов разработчика Unity перейдите к Cloud Build вашего проекта > История.
- Выберите Загрузить, затем выберите файл APK.
- В поле Платформа выберите Android.
- Выберите Загрузить.
- Выберите меню "Дополнительно" рядом со своей сборкой, чтобы развернуть раскрывающееся меню.
- Выберите Отправить на портал распространения Unity.
Создание и развертывание с помощью Cloud Build
Если вы используете Unity Teams Advanced, вы можете создавать сборки автоматически.
В окне Cloud Build Services:
- Выберите Управление целями сборки > Добавить новую цель сборки .
- В окне TARGET SETUP установите в поле PLATFORM значение Android и введите полезный TARGET LABEL.
- Выберите Далее: Сохранить.
- Выберите Начать сборку Cloud, а затем выберите только что созданную целевую сборку.
Отправьте свою сборку в UDP напрямую через панель инструментов Unity Cloud Build Developer Dashboard (как показано выше).
Совместимость сервисов
UDP может сообщать другим службам, используемым вашей игрой, из какого магазина была загружена игра.
Эта информация может использоваться разными способами как службами Unity, так и сторонними или вашими собственными службами.
Например, Unity Remote Config позволяет настроить параметры игры на основе определенных вами правил, таких как как магазин, из которого была загружена игра.
В этом разделе объясняется, как разрешить другим службам получать доступ к этой информации, и приведен пример.
Как это работает?
Когда ваша игра впервые запускается на устройстве игрока, UDP создает и размещает файл udp.json
в постоянном пути к данным игры. Этот файл содержит поле udpStore
, в котором указано, из какого магазина была загружена игра. Получите эту информацию, чтобы использовать ее по назначению.
Примечание. Это не добавляет никаких новых разрешений в ваш игровой манифест.
Нахождение файла udp.json
Файл udp.json
сохраняется в:
Application.PersistentDataPath + '/Unity' + /Application.CloudProjectID + /udp/udp.json
Где:
Application.PersistentDataPath
– постоянный путь к данным вашей игрыApplication.CloudProjectID
– это идентификатор проекта Unity вашей игры.
Вот пример пути к файлу udp.json
:
path/storage/emulated/0/Android/data/com.mystudio.mygame/files/Unity/c83d2de2-de74-4b75-83fc-ade948bda064/udp/udp.json
Где:
-
Application.PersistentDataPath
=path/storage/emulated/0/Android/data/com.mystudio.mygame
Application.CloudProjectID
=c83d2de2-de74-4b75-83fc-ade948bda064
Чтение udp.json
Файл udp.json
содержит следующую информацию:
{"key":"UDP","udpStore":"StoreName","udpClientId":"value_of_udpClientId","CloudProjectId":"value_of_CloudProjectId"}
Поле udpStore
содержит значение магазина UDP, из которого была загружена ваша игра.
Вот пример файла udp.json
:
{"key":"UDP","udpStore":"Huawei","udpClientId":"icjaB7wmu_q7AOjrSLH8yw","cloudProjectId":"bc2be074-09f3-450f-8e98-a0f79c9746f7"}
В этом примере игра была загружена из галереи приложений HUAWEI.
Совет. используйте JSONUtility.FromJsonOverwrite
, чтобы прочитать содержимое файла как текстовый ресурс.
значения udpStore
В таблице ниже перечислены значения udpStore
, которые можно ожидать для хранилищ, доступных в UDP.
С учетом регистра.
Магазин (название канала в UDP) | Значение for udpStore |
---|---|
UDP Sandbox (for the generic UDP builds) | UdpSandbox |
ONE store | OneStore |
APPTUTTi | Apptutti |
Mi GetApps (Xiaomi) | XiaomiStore |
HUAWEI AppGallery | Huawei |
QooApp Game Store | QooApp |
Uptodown | Uptodown |
SHAREit | ShareIt |
JioGames | JioGames |
Legion Store | Legion |
Использование udpStore с удаленной настройкой
Unity Remote Config позволяет настраивать параметры игры без развертывания новых версий приложения. Когда игрок запускает вашу игру, Remote Config обнаруживает контекстные атрибуты, используемые в качестве условий правила (на основе Unity, приложения, пользователя или пользовательских критериев, которые вы определяете). Затем служба возвращает индивидуальные настройки для каждого игрока в соответствии с применимыми к ним Правилами.
Используйте udpStore
в качестве атрибута в условиях вашего правила, чтобы вы могли определять настройки игры, зависящие от того, из какого хранилища UDP была загружена игра.
Чтобы внедрить udpStore с удаленной настройкой, выполните следующие действия.
- Загрузите и установите пакет UDP.
- Загрузите и установите Unity Remoteзагружаемое приложение, предназначенное для помощи в разработке для Android, iOS и tvOS. Приложение подключается к Unity, пока вы запускаете свой проект в режиме воспроизведения из редактора Unity. Подробнее
См. в Словарь Пакет конфигурации. См. документацию Remote Config. - Создайте структуру AppAttributes, в которой есть как минимум параметр "udpStore":
public struct AppAttributes { public string udpStore; }
- В коде игры внедрите вызов Remote Config ConfigManager.FetchConfigs.
- При вызове FetchConfigs создайте новый экземпляр структуры AppAttributes, прочитайте файл данных хранилища UDP из:
Application.PersistentDataPath + ‘/Unity’ + /Application.CloudProjectId + /udp/udp.json
Используйте JSONUtility.FromJsonOverwrite, чтобы прочитать содержимое файла как текстовый ресурс.
{ string udpFilePath = System.IO.Path.Combine(Application.persistentDataPath, "Unity", Application.cloudProjectId, "udp", "udp.json"); string udpFileContents = System.IO.File.ReadAllText(udpFilePath); var appAttr = JsonUtility.FromJson
(udpFileContents); Unity.RemoteConfig.ConfigManager.FetchCompleted += ConfigManager_FetchCompleted; Unity.RemoteConfig.ConfigManager.FetchConfigs(null, appAttr); } - Убедитесь, что структура AppAttributes используется в ConfigManager.FetchConfigs.
- Откройте окно Remote Config (Window > Remote Config) и создайте параметры, которые вы хотите изменить на основе UDP-хранилище.
- Когда параметры настроены и реализованы в коде игры, создайте правило для каждого магазина в окне Remote Config.
- В каждом условии правила укажите: app.udpStore == "[storeName]"
- Просмотрите значения для udpStore
- Просмотрите значения для udpStore
- Чтобы включить параметр, установите флажок рядом с названием правила на левой панели в окне Remote Config.
- Создайте приложение для устройства, убедитесь, что правила правильно применяются, и отправьте его.
Реализация элементов IAP для UDP с помощью Unity IAP
Если вы хотите внедрить UDP с помощью Unity IAPаббревиатуры Unity In App Purchase
См. в Словарь, сначала настроить IAP Unity.
Примечание. Если вы решите внедрить UDP с помощью Unity IAP версии 1.22.0–1.23.5 (вместо использования пакета UDP), реализуйте только через Unity IAP.
Unity IAP автоматически обрабатывает следующее:
- Инициализация UDP
- Запрос ассортимента товаров внутри магазина
- Запрос на покупку продукта
- Использование купленного товара
Однако ваша игра должна правильно использовать аналогичные функции Unity IAP (такие как инициализация и покупка) в соответствии с Документацией Unity IAP.
Когда вы реализовали встроенные покупки в игре с помощью Unity IAP, выполните следующие действия, чтобы настроить UDP с Unity IAP.
Запрос инвентаря IAP
С помощью Unity IAP (реализация кода)
Извлечение продуктов IAP, определенных в редакторе
При получении продуктов IAP для передачи методу queryInventory
вызовите ProductCatalog.LoadDefaultCatalog()
. Это возвращает продукты IAP, определенные в Каталоге IAP редактора (Window > Unity IAP > Каталог IAP).
Например:
var catalog = ProductCatalog.LoadDefaultCatalog();
foreach (var product in catalog.allValidProducts)
{
if (product.allStoreIDs.Count > 0)
{
var ids = new IDs();
foreach (var storeID in product.allStoreIDs)
{
ids.Add(storeID.id, storeID.store);
}
builder.AddProduct(product.id, product.type, ids);
}
else
{
builder.AddProduct(product.id, product.type);
}
}
Получение информации о продукте IAP из консоли UDP
Если вы планируете изменить каталог IAP вашей игры в консоли UDP, подготовьте игру к получению информации о продукте IAP из консоли UDP.
При получении продуктов IAP для передачи методу queryInventory
вызовите builder.AddProduct для получения конкретных продуктов IAP, определенных из консоли UDP:
builder.AddProduct(product.id, product.type, новые идентификаторы{})
Чтобы отобразить цену продукта в денежном формате, используйте productInfo.Value.Price
.
Извлечение каталога IAP из консоли UDP
Чтобы получить все продукты IAP, определенные в консоли UDP, не вызывайте никаких методов получения продуктов IAP. Затем ваша игра получит весь каталог IAP из консоли UDP.
Примечание. Загрузка CSV-файла продуктов IAP в консоль UDP полностью перезаписывает ваш каталог IAP.
Заполнение Каталога IAP с помощью пакета IAP Unity
Добавьте и настройте свой Каталог IAP для всех ваших покупок в приложении для UDP.
Примечание. Если вы не используете каталог IAP в своем игровом клиенте (например, вы храните свои элементы IAP исключительно на своем игровом сервере), вы все равно должны создайте свой каталог IAP в консоли UDP.
- В редакторе Unity выберите Окно > Встроенная покупка приложений > Каталог внутренней покупки.
- Выберите Добавить продукт и введите данные для каждого продукта IAP.
- Добавьте цену для элемента IAP в разделе «Конфигурация портала распространения Unity».
- Чтобы сохранить продукт IAP в консоли UDP, выберите Синхронизировать с UDP. Сделайте это для каждого продукта IAP, который вы создаете.
Чтобы убедиться, что каталог IAP сохранен правильно, убедитесь, что добавленные вами элементы отображаются в консоли UDP.