В этом документе даны ответы на часто задаваемые вопросы о SDK и публикации игр Google Play на ПК.
Как добавить VPN?
Разработчикам, которым необходимо тестировать свою игру в регионах , где Google Play Games на ПК не поддерживается, мы рекомендуем использовать VPN для получения IP-адреса из поддерживаемого региона .
Убедитесь, что режим TUN включен для VPN. Инструкции по включению режима TUN и настройке брандмауэра можно найти в руководстве пользователя VPN-провайдера.
После включения режима TUN установите на ПК игры Google Play и эмулятор для тестирования.
Можно ли использовать процесс покупки без бэкэнд-сервера?
С точки зрения безопасности, обработка данных без бэкэнд-сервера, как правило, не рекомендуется.
Для получения дополнительной информации см. раздел «Обработка без серверной части» .
Как начать разработку игр для Google Play Games на ПК в редакторе Unity или UE?
- Включите режим разработчика и приступайте к тестированию.
- Добавьте файлы
manifest.xmlи.dll. Для получения дополнительной информации см. документацию для разработчиков . - Зарегистрируйте GUID партнера, предоставляющего ранний доступ, для целей тестирования.
Синхронизируются ли данные вашей учетной записи Google при запуске игры через приложение Google Play Games?
После запуска игры через клиент Google Play Games учетная запись автоматически синхронизируется, и повторный вход через Google Login не требуется.
При отправке пакета приложений Windows (WAB) с использованием стороннего лаунчера, требуется ли для проверки сам игровой пакет?
Вы можете отправить только установщик, нет необходимости отправлять весь игровой пакет целиком, рецензент сможет загрузить ваш игровой пакет, используя установщик.
Если игрок использует сторонний лаунчер вместо клиента Google Play, будет ли его учетная запись Play Games Services синхронизироваться автоматически?
Для корректной работы функций SDK игра должна запускаться непосредственно через клиент Google Play Games. Если игра запускается другим процессом, например, установщиком или лаунчером, то этот процесс также должен запускаться через клиент Google Play Games. Игра должна передавать все параметры, полученные от клиента, клиентскому процессу.
Как SDK обрабатывает вход в систему с использованием учетной записи Google для нескольких экземпляров или учетных записей?
Каждый запуск игры в Google Play Games рассматривается как «игровая сессия», и к каждой «игровой сессии» может быть привязана учетная запись. Они могут быть разными. Таким образом, если вы запустите игру с учетной записью A, а затем переключитесь на учетную запись B и перезапустите игру, обе сессии могут работать одновременно.
Существуют ли какие-либо ограничения по размеру файлов WAB (Windows App Bundle)?
Для WAB-файла можно загрузить файлы размером до 10 ГБ.
Разрешены ли существующие платежные системы на основе API после интеграции SDK Google Play Games для ПК?
Все платежи должны обрабатываться Google Play Games на ПК SDK с использованием Google Play Billing. Вы не можете использовать существующий способ оплаты через API в той же игре.
Существуют ли открытые или закрытые среды тестирования, аналогичные тем, что используются в мобильных приложениях?
Хотя в настоящее время нет выделенной сквозной песочницы, мы понимаем необходимость в среде тестирования, максимально приближенной к производственной, для разработчиков. Более надежное решение будет предложено в ближайшее время.
Мы не можем корректно обрабатывать покупки, инициированные в режиме разработчика?
Использовать приобретенное приложение в режиме разработчика необходимо в течение 3 минут, в противном случае покупка может быть возвращена.
Есть ли какие-либо различия между API (устаревшая версия) и Google Play Games на PC SDK?
- Традиционные решения были сосредоточены исключительно на выставлении счетов.
- SDK будет поддерживать Google Desktop Service (GDS) и все функции ПК.
- Удобный для разработчиков интерфейс SDK
- Вход через Google через браузер не требуется.
Существует ли альтернативный способ инициализации SDK путем запуска игры напрямую через игровой лаунчер, минуя Google Play Games на ПК?
Игру необходимо запускать через клиент Google Play Games на ПК. Для получения более подробной информации см. документацию для разработчиков.
Регулярные платежи или подписки не поддерживаются; планируется ли их внедрение?
В настоящее время не планируется добавлять дополнительные варианты покупок помимо встроенных покупок, но мы будем рады получить ваши отзывы о конкретных сценариях использования.
Ошибка billingerror возникает при запуске процесса покупки или в результате платежа?
Это ответ о результате платежа. LaunchPurchaseFlow вернет результат немедленно, без блокировки, но вам необходимо отслеживать обратный вызов, чтобы узнать, когда он завершится, и получить результат.
Можно ли создать ярлык для прямого запуска игры?
Для прямого запуска игры вы можете использовать следующий URI:
googleplaygames://launch/?pid=2&id=com.company.gamename
URI позволяет определить, открыт ли клиент Google Play Games на ПК. Если клиент не открыт, клиент Google Play Games откроется раньше, чем запустится игра/лаунчер. Вам необходимо управлять игрой/лаунчером, чтобы предотвратить запуск нескольких экземпляров.
Ограничения на количество запросов к API QueryProductDetails
Максимальное количество товаров, которое можно запросить за один вызов API QueryProductDetails , составляет 50. Если вы превысите этот лимит, вам необходимо разбить запрос на несколько вызовов.
Почему моя игра не устанавливается и не отображается после загрузки первого пакета приложений Windows (WAB)?
Если ваша игра добавляется в систему без предварительно созданной версии для ПК («первый WAB»), система может автоматически перевести её в состояние ожидания управляемой публикации. Это происходит потому, что нет существующей базовой версии для обновления. Чтобы полностью разблокировать WAB и сделать игру доступной для установки, необходимо перейти в консоль Google Play и вручную выполнить необходимое действие публикации (например, нажать «Опубликовать изменения»).
Как происходит инициализация, если Google Play Games запускает сторонний игровой лаунчер?
Интеграция SDK непосредственно в лаунчер не обязательна. Однако все аргументы командной строки, полученные лаунчером от клиента Google Play Games, необходимо передавать непосредственно в запущенный дочерний процесс (исполняемый файл игры). Если инициализация не удалась (например, из-за возврата значения kActionRequiredShutdownClientProcess ), все процессы, включая лаунчер, должны быть завершены, чтобы Google Play Games мог попытаться восстановиться и автоматически перезапустить игру. Подробнее см. шаг 5 в руководстве по настройке .
Предполагается ли появление ошибки тайм-аута, если пользователь закрывает браузер, не совершив оплату во время процесса покупки?
Да, это известная проблема и запланированное поведение в текущем браузерном интерфейсе. Google активно работает над функцией бесшовной покупки (на основе WebView), которая позволит сохранить процесс оплаты внутри игры и устранить неудобство, связанное с таймаутом.
Поддерживает ли встроенный SDK для ПК многобайтовые символы в файле сертификации (PEM)?
Да, SDK поддерживает многобайтовые символы для сертификации.
Какие параметры необходимы при вызове BillingClient::QueryPurchases или BillingClient::LaunchPurchaseFlow ?
Функция принимает QueryPurchasesContinuation , которая представляет собой функцию обратного вызова с сигнатурой std::function<void(QueryPurchasesResult)> . Функция обратного вызова передает вам результат со всеми данными ProductPurchaseDetails . Эта информация доступна в заголовочных файлах SDK в файле includes/billing/models.h .
В результате выполнения функции launch_purchase_flow_result появляются функции ok() и code() . Функция ok() возвращает информацию об успешности выполнения потока. Функция code() возвращает перечисление BillingError ( includes/billing/enums.h ), которое содержит 10 возможных вариантов ошибок, таких как отмена пользователем или сетевая ошибка.
Поддерживается ли передача пользовательского номера заказа при вызове BillingClient::LaunchPurchaseFlow() ?
В текущей версии SDK нет возможности передавать собственные данные. Однако вы можете указать любую комбинацию obfuscated_account_id и obfuscated_profile_id . Вы можете не указывать ни одного параметра, указать только один или оба.
Поле offer_token является обязательным и указывает на предложение покупки, которое пользователь пытается совершить на этапе оформления заказа. На данный момент для каждого товара в Google Play существует ровно одно предложение (например, купить один товар за 10 долларов). В будущем команда разработчиков Play Billing обеспечит поддержку нескольких предложений.
Чтобы обеспечить связь метаданных в случае прерывания процесса покупки, сохраните метаданные на своем бэкэнд-сервере до запуска диалога покупки и свяжите их с идентификатором учетной записи пользователя, приобретаемым артикулом и текущей меткой времени. Дополнительную информацию см. в разделе «Связывание покупки с внутренними данными» .
Работает ли интеграция с функцией "Реферер установки из Play Store"?
Последняя версия SDK (25.5.409.0 и выше) поддерживает API рефереров для установки приложений из Play Store. Для получения дополнительной информации см. API рефереров для установки приложений из Play Store .
Нужно ли пользователю входить в систему отдельно для каждой игры, чтобы совершить покупку?
В Google Play Games для каждой игровой сессии используется учетная запись, активная в данный момент, поэтому повторный вход в систему не требуется. Учетная запись, которую вы используете в Google Play Games при запуске игровой сессии, — это та учетная запись, от имени которой выполняются вызовы API. При запуске процесса покупки в браузере необходимо войти в систему и использовать ту же учетную запись, что и в игровой сессии. Если пользователь вошел в систему с другой учетной записью, веб-процесс предложит ему переключиться на другую учетную запись.
Какие предварительные условия необходимы для перехода с системы оплаты Google с использованием OAuth на собственную систему оплаты Google с использованием DLL?
Игры могут продолжать использовать вход через OAuth с помощью Google для управления авторизованным аккаунтом, но Google рекомендует отказаться от использования устаревших REST API для выставления счетов. Переход от REST API для выставления счетов (с входом через OAuth2) к потоку SDK может быть операцией, требующей добавления новых функций, поэтому оба варианта могут сосуществовать некоторое время, пока игра переходит на новый протокол.
Обрабатывается ли запрос на оплату через API ( LaunchPurchaseFlow ) через веб-браузер?
Да, пока обработка происходит через браузер. Google планирует завершить весь процесс, не оставляя возможности запуска игры через SDK.
Можно ли повторно использовать параметры инициализации несколько раз?
Это возможно, если клиент Google Play Games запущен и данные для входа действительны. Однако в сценариях, подобных описанному в руководстве, все процессы, запущенные игрой, должны быть завершены, когда пользователь закрывает игру или игра завершается из-за ошибки инициализации SDK, например, kActionRequiredShutdownClientProcess .
Можно ли использовать ключи реестра из раздела HKEY_CURRENT_USER вместо HKEY_LOCAL_MACHINE ?
Вам следует создавать ключи реестра на основе корневого раздела. В зависимости от ваших целей и характера данных, корневой раздел можно установить либо как HKEY_LOCAL_MACHINE , либо как HKEY_CURRENT_USER В качестве примера в рекомендациях используется раздел HKEY_LOCAL_MACHINE .
Может ли игра одновременно поддерживать как нативный SDK, так и устаревшие платежные системы?
Платежная система работает по двухпотоковой модели в зависимости от версии игрового бинарного файла. Пользователи устаревших версий продолжают использовать существующий поток платежей, а пользователи новых версий переходят на оплату через SDK. В течение переходного периода пользователи обеих платежных систем сосуществуют.
Как загрузить WAB для внутреннего тестирования?
Передайте список разрешенных учетных записей в Google, чтобы компания могла включить их для внутреннего тестирования. После получения списка Google гарантирует, что эти учетные записи будут включены в процесс регистрации.
Где можно добавить новых тестировщиков?
Ваш контактный представитель Google создаст группу электронной почты для каждого проекта PC, куда необходимо добавить учетные записи Google тестировщиков. Только члены этой группы электронной почты имеют право загружать тестовые пакеты в Google Play Games.
Куда следует загрузить официальный пакет для ПК до официального запуска?
Вы можете загрузить пакет WAB по адресу, указанному в первом вопросе. Однако вы не можете опубликовать его вручную. Вам необходимо предоставить сотрудникам бэкэнда Google точное время UTC (с точностью до часа). Затем Google настроит график выпуска и обеспечит своевременную публикацию.
Как вы организуете обновления и техническое обслуживание после официального запуска?
Последующие обновления и техническое обслуживание необходимо выполнять через вашу программу запуска. Клиент Google Play Games не поддерживает функции обновления, поэтому программа запуска должна уметь обновлять как игру, так и саму программу.
Каковы требования к проверке пакетов программного обеспечения для ПК со стороны Google?
Компьютерные версии игр проходят сканирование на наличие вредоносных программ, после чего эксперты проверяют только процессы установки, успешного запуска и удаления игры.
Необходимо ли интегрировать все API?
Другие API не обязательны, но предоставляют дополнительные преимущества. google::play::billing необходим для внутриигровых покупок и продажи цифрового контента. google::play::games::recall необходим для отслеживания данных о реферальных ссылках, чтобы помочь вам понять, какие источники трафика приводят наибольшее количество пользователей к загрузке вашего приложения. google::play::games::integrity необходим для защиты вашего приложения от злоумышленников путем обнаружения потенциально опасных устройств и неизвестных эмуляторов.
Почему при закрытии клиента Google Play Games завершаются одни игровые процессы, а другие — нет?
Google не контролирует дочерние процессы или процессы запущенной игры. Поведение зависит от того, является ли игра эмулированной игрой для Android или нативной игрой для ПК. Эмулированные игры устанавливаются в собственной среде, поэтому их поведение во многом зависит от инициализации и завершения работы эмулятора.
Стоит ли использовать функцию удаления игр из Google Play или воспользоваться пользовательским деинсталлятором?
Google рекомендует использовать функцию удаления игр из Google Play.