Часто задаваемые вопросы

В этом документе приведены ответы на часто задаваемые вопросы о SDK и публикации игр в Google Play Играх на компьютере.

Монетизация

  1. Почему после добавления нового платежного или лицензионного ключа процесс покупки прерывается с кодом ошибки 6?

    Новые лицензионные ключи, созданные в Google Play Console, проходят многочасовое кэширование и распространение в коммерческом бэкенде, прежде чем внутренние кеши Google Play синхронизируются во всех средах показа. Даже если клиент игры может успешно запрашивать информацию о товарах, запросы о покупке будут отклоняться с кодом ошибки 6, пока синхронизация не завершится. После загрузки или обновления лицензионного ключа подождите несколько часов, прежде чем тестировать покупки.

  2. Можно ли использовать процесс покупки без бэкенд-сервера?

    С точки зрения безопасности Google рекомендует использовать бэкенд-сервер.

    Подробнее об обработке без бэкенд-сервера…

  3. Можно ли использовать существующие платежные системы на основе API после интеграции SDK Google Play Игр на компьютере?

    Все платежи должны обрабатываться SDK Google Play Игр на компьютере с помощью Google Play Платежей. Вы не можете использовать существующий способ оплаты на основе API в той же игре.

  4. Как использовать покупки в режиме разработчика?

    В режиме разработчика покупку нужно обработать в течение трех минут, иначе средства будут возвращены покупателю.

  5. Поддерживаются ли регулярные платежи и подписки?

    В ближайшем будущем нет, но вы можете предложить нам варианты использования, которые мы добавим в план развития.

  6. Что означает ошибка оплаты в звонках-покупках?

    BillingError – это ответ с результатом платежа. Метод LaunchPurchaseFlow возвращает результат сразу, не блокируя работу приложения, но вам нужно отслеживать обратный вызов, чтобы узнать, когда он завершится, и получить результат.

  7. Как использовать клиентское подтверждение покупок?

    Рекомендуем использовать обработку и проверку покупок на стороне сервера. Чтобы обрабатывать покупки из клиентского приложения, ваша игра должна быть в белом списке. Если вашей игре нужен доступ, обратитесь к партнеру Google. Подробнее об обработке без бэкенд-сервера…

  8. Какие ограничения API действуют для запросов информации о товарах?

    Максимальное количество товаров, которые можно запросить за один вызов API QueryProductDetails, – 50. Если вы превысите это ограничение, вам придется разделить запрос на несколько вызовов.

  9. Почему при загрузке большого количества SKU товаров запросы товаров или процессы покупки завершаются с внутренними ошибками?

    Запрос слишком большого количества SKU товаров за один раз или слишком частый вызов QueryProductDetails в C++ или QueryProductDetailsAsync в Unity за короткий период времени (например, отправка десятков пакетных вызовов в узком цикле или создание нового экземпляра BillingClient для каждого пакета) может перегрузить локальные подключения IPC и серверной части. Когда эти подключения сбрасываются, запросы информации о товарах завершаются ошибкой и игра не может получить токены специальных предложений, необходимые для запуска процесса покупки.

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

    • Соблюдайте ограничения на количество товаров в одном вызове. Запрашивайте не более 50 товаров в одном вызове QueryProductDetails или QueryProductDetailsAsync и кешируйте возвращенные ProductDetails в памяти, а не запрашивайте весь каталог повторно. Дополнительную информацию о поддерживаемых ограничениях на пакеты и запросах информации о товаре можно найти в ответе на предыдущий вопрос об ограничениях API, а также в статьях Показ наличия товара для покупки (для C++) и Запрос информации о товаре (для Unity).
    • Не вызывайте API слишком часто за короткий период времени. Не отправляйте несколько пакетов запросов одновременно или один за другим без пауз. Повторно используйте один экземпляр BillingClient, сериализуйте запросы или ограничьте параллелизм до двух или трех одновременных вызовов и добавьте небольшую задержку между последовательными пакетами.
    • Обновите SDK до последней версии. Чтобы в вашем клиенте были последние улучшения, связанные с оплатой и стабильностью IPC, обновите интеграцию до последней версии SDK Google Play Игр на компьютере. Для C++ это версия 26.9.261.0, а для Unity – 26.9.261.0. Скачать их можно на странице Скачивание SDK Play Игр на компьютере.
  10. Какие параметры необходимы при вызове Query Purchases или Launch Purchase Flow в Billing Client?

    Функция принимает 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 возможных ошибок, например отмену пользователем или ошибку сети.

  11. Поддерживается ли пользовательский порядок для процесса покупки при запуске в Billing Client?

    В текущей версии SDK передать собственную полезную нагрузку невозможно. Однако вы можете указать любое сочетание obfuscated_account_id и obfuscated_profile_id. Вы можете указать один из них, оба или ни одного.

    Поле offer_token является обязательным и указывает на предложение, которое пользователь пытается приобрести в процессе оформления заказа. Сейчас для каждого SKU в Google Play есть только одно предложение (например, купить один товар за 10 долларов США). В будущем команда Google Play Платежей добавит поддержку нескольких специальных предложений.

    Чтобы метаданные были связаны с покупкой даже в случае сбоя процесса покупки, сохраните их на бэкенд-сервере до запуска диалогового окна покупки и свяжите с идентификатором аккаунта пользователя, SKU приобретаемого товара и текущей временной меткой. Подробнее о том, как связать покупку с внутренними данными…

  12. Что нужно сделать, чтобы перейти с выставления счетов Google с OAuth на выставление счетов Google на основе DLL?

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

  13. Обрабатывается ли вызов API процесса покупки через веб-браузер?

    Нет, теперь процесс покупки полностью совершается в игре с помощью оверлея WebView, не выходя из игрового клиента.

  14. Нужно ли пользователю входить в каждую игру отдельно, чтобы совершить покупку?

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

  15. Может ли игра одновременно поддерживать PC SDK и устаревшие платежные системы?

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

Windows App Bundle

  1. Нужно ли отправлять на проверку пакет игры, если WAB отправляется через сторонний лаунчер?

    Вы можете отправить только установщик, а не весь пакет игры. Специалист, который будет проводить проверку, сможет скачать пакет игры с помощью установщика.

  2. Есть ли ограничения на размер файла WAB?

    При публикации установщика можно загрузить WAB-файл размером до 10 ГБ. При управляемой публикации в Google Play максимальный размер файла WAB составляет 200 ГБ.

  3. Почему после загрузки WAB-файла игра не устанавливается или не появляется?

    Если вы добавляете игру, у которой нет версии для ПК (то есть это первый WAB), система может автоматически перевести ее в режим ожидания управляемой публикации. Это происходит потому, что нет контрольной группы, которую можно было бы обновить. Чтобы полностью выпустить WAB и сделать игру доступной для установки, перейдите в Google Play Console и вручную выполните необходимое действие для публикации (например, нажмите "Опубликовать изменения").

  4. Как загрузить WAB для внутреннего тестирования?

    Отправьте список аккаунтов в Google, чтобы мы могли включить их для внутреннего тестирования. После того как Google получит список, мы убедимся, что они включены в процесс регистрации.

  5. Куда нужно загрузить пакет WAB?

    Вы можете загрузить пакет WAB в место, указанное в первом вопросе. Однако вы не можете опубликовать его вручную. Вы должны предоставить специалистам Google точное время по UTC (с точностью до часа). Затем Google настраивает график выпуска и обеспечивает своевременную публикацию.

SDK для ПК

  1. В чем разница между устаревшим API и SDK Google Play Игр на компьютере?

    • В устаревшем API доступны только функции, связанные с оплатой.
    • PC SDK поддерживает Google Desktop Service (GDS) и все функции ПК.
    • При использовании SDK для ПК не требуется вход в аккаунт Google через браузер.
  2. Можно ли инициализировать SDK, запустив игру напрямую через программу запуска, а не через Google Play Игры на компьютере?

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

  3. Поддерживает ли PC SDK многобайтовые символы в файле сертификата PEM?

    Да, SDK поддерживает многобайтовые символы для сертификации.

  4. Как SDK обрабатывает вход в аккаунт Google для нескольких экземпляров или аккаунтов?

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

  5. Работает ли интеграция Play Install Referrer с SDK для ПК?

    SDK для ПК (версии 25.5.409.0 и выше) поддерживает Play Install Referrer API. Подробнее о Play Install Referrer API…

Панель запуска

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

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

  2. Как выполнить инициализацию, если Google Play Игры запускают сторонний лаунчер?

    Вам не нужно интегрировать SDK непосредственно в лаунчер. Однако вы должны передавать все аргументы командной строки, полученные средством запуска от клиента Google Play Games, непосредственно порожденному дочернему процессу (исполняемому файлу игры). Если инициализация не удалась (например, возвращается kActionRequiredShutdownClientProcess), все процессы, включая программу запуска, должны быть завершены, чтобы Google Play Games могли попытаться восстановить и перезапустить игру автоматически. Подробную информацию можно найти в шаге 5 руководства по настройке.

  3. Как обновлять и обслуживать игру и программу запуска после их публикации?

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

  4. Как установщик получает токен сеанса Google Play Игр для автоматического запуска?

    GPG передает токен сеанса с помощью аргумента командной строки --g_session_token=<token> в установщик. Чтобы включить эту функцию, задайте параметр acceptsCommandLineArguments="true" в файле play_publishing_config.xml.

    Установщик должен извлечь этот токен и использовать его для запуска игры. Если токен не удается сгенерировать, GPG запускает установщик без токена (резервный вариант).

Инициализация

  1. Когда я запускаю игру в приложении "Google Play Игры", синхронизируются ли данные моего аккаунта Google?

    После запуска игры через клиент Google Play Games аккаунт синхронизируется автоматически, и вам не нужно снова входить в систему через Google.

  2. Можно ли использовать параметры инициализации несколько раз?

    Это возможно, если клиент Google Play Games запущен и учетные данные действительны. Однако в сценариях, подобных описанному в руководстве, все процессы, запущенные игрой, должны быть завершены, когда пользователь закрывает игру или игра завершает работу из-за сбоя инициализации SDK, например kActionRequiredShutdownClientProcess.

  3. Можно ли создать ярлык, чтобы открывать игру напрямую?

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

    googleplaygames://launch/?pid=2&id=com.company.gamename

    URI поддерживает определение того, открыт ли клиент Google Play Игр на компьютере. Если клиент Google Play Games не запущен, он откроется перед запуском игры или программы запуска. Вам нужно настроить игру или программу запуска так, чтобы они не запускались несколько раз.

  4. Можно ли проверить установку Google Play Games на компьютере без использования SDK?

    Вы можете проверить статус установки Google Play Games на компьютере, не интегрируя SDK, посмотрев, есть ли в реестре Windows следующий ключ:

    HKEY_LOCAL_MACHINE\SOFTWARE\Google\Play Games Services

    Наличие этого ключа указывает на то, что на компьютере установлены сервисы Google Play Игр, необходимые для запуска игр на ПК. Если ключ отсутствует, направьте пользователя на страницу установки Google Play Игр на компьютере, чтобы он скачал и установил клиент.

Тестирование

  1. Есть ли у вас среды для открытого или закрытого тестирования, похожие на мобильные?

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

  2. Как добавить новых тестировщиков?

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

Другое

  1. Можно ли использовать VPN?

    Если вам нужно протестировать игру в регионе, где Google Play Игры на компьютере не поддерживаются, рекомендуем использовать VPN, чтобы получить IP-адрес из поддерживаемого региона.

    Убедитесь, что в VPN включен режим TUN. Инструкции по включению режима TUN и настройке брандмауэра можно найти в руководстве по эксплуатации поставщика VPN-сервиса.

    После включения режима TUN установите Google Play Игры на компьютере и эмулятор для тестирования.

  2. Как начать разработку для Google Play Games на компьютере в Unity или UE Editor?

  3. Как правильно использовать ключи реестра?

    Разделы реестра следует создавать на основе корневого куста. В зависимости от ваших целей и характера данных вы можете задать в качестве корневого куста HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER. В качестве примера в инструкциях используется куст HKEY_LOCAL_MACHINE.

  4. Какие требования предъявляются к пакетам для ПК, которые проверяет Google?

    Пакеты для ПК проверяются на наличие вредоносного ПО, после чего тестируются только процессы установки, запуска и удаления игры.

  5. Нужно ли интегрировать все API?

    Другие API не обязательны, но они дают дополнительные преимущества. google::play::billing требуется для покупок в приложениях и продажи цифрового контента. google::play::install_referrer требуется для отслеживания данных о переходах, чтобы вы могли понять, какие источники трафика привлекают больше всего пользователей, скачивающих ваше приложение. google::play::games::integrity требуется для защиты приложения от злоумышленников путем обнаружения потенциально опасных устройств и неизвестных эмуляторов.

  6. Почему при закрытии клиента Google Play Games некоторые игровые процессы завершаются, а другие – нет?

    Google не контролирует процессы и подпроцессы запущенной игры. Поведение зависит от того, является ли игра эмулированной игрой для Android или игрой для ПК. Эмулируемые игры устанавливаются в собственной среде, поэтому их поведение во многом зависит от инициализации и завершения работы эмулятора.

  7. Что лучше использовать: функцию удаления Google Play Games или собственный деинсталлятор?

    Мы рекомендуем использовать функцию удаления Google Play Games.

Дополнительная помощь

Если вам нужна дополнительная помощь, не описанная в этом разделе часто задаваемых вопросов, напишите нам на адрес google-play-games-pc@google.com.