This document answers common questions about SDKs and publishing for Google Play Games on PC.
Monetization
Can I use the purchase flow without a backend server?
From a security perspective, processing without a backend server is not recommended.
For more information, see Process without a backend server.
Are existing API-based payment systems allowed after integrating the Google Play Games on PC SDK?
All payments must be handled by Google Play Games on PC SDK using the Google Play Billing. You cannot use your existing API-based payment method in the same game.
How can we consume purchases in developer mode?
Consume purchase in the developer mode within 3 minutes, otherwise the purchase will be refunded.
Are recurring payments or subscriptions supported?
Not for the immediate future although you are welcome to provide specific use cases for us to add into our future roadmap.
What is the Billing Error in my purchase calls?
BillingError is the response of the payment result. LaunchPurchaseFlow will return immediately without blocking but you must listen to the callback in order to know when it has finished and to capture the result.
How can I use client-side purchase verification?
We recommend using server-side purchase and its verification process. Processing purchases from your client app requires your game to be on an allowlist. Please contact your Google Partner if your game requires access. For more information, see Process without a backend server.
What are the API limits for querying product details?
The maximum number of products that can be queried in a single call to the
QueryProductDetailsAPI is 50. If you exceed this limit, you must split the request into multiple calls.What parameters are required when calling Query Purchases or Launch Purchase Flow in the Billing Client?
The function accepts
QueryPurchasesContinuation, which is a function callback with thestd::function<void(QueryPurchasesResult)>signature. The callback passes the result to you with all theProductPurchaseDetails. This information is available in the SDK header files in theincludes/billing/models.hfile.The resulting
launch_purchase_flow_resulthasok()andcode()functions. Theok()function returns whether the flow is successful. Thecode()function returns theBillingErrorenum (includes/billing/enums.h), which has 10 possible error cases, such as user canceled or network error.Is a custom ordering supported for the Launch Purchase Flow in the Billing Client?
In the current SDK design, there is no way to pass in your own payload. However, you can provide any combination of
obfuscated_account_idandobfuscated_profile_id. You can provide none, just one, or both.The
offer_tokenfield is required and specifies the purchase offer that the user is attempting to buy in the checkout flow. For now, each SKU in Google Play has exactly one offer (for example, buy one item for $10). In the future, the Play billing team will provide support for multiple offers.To ensure metadata is associated in the case of purchase flow interruptions, store the metadata on your backend server prior to launching the purchase dialog and associate it with your user's account ID, the SKU being purchased, and the current timestamp. For more information, see Associate a purchase with internal data.
Is a timeout error intended if a user closes the browser without paying during a purchase flow?
Yes, this is a known issue and intended behavior in the browser-based flow. We are actively working on a seamless purchase feature (WebView-based) that will keep the payment flow inside the game and resolve this timeout inconvenience.
What are the prerequisites for switching from Google billing with OAuth to the native Google billing with DLL?
Games can continue to use the OAuth sign-in with Google to manage the signed-in account, but Google recommends that you stop using the legacy REST billing APIs. Switching from the REST billing APIs (with OAuth2 sign-in) to the SDK flow can be a feature-flagged operation, so both can coexist for a period of time while the game switches over.
Is the Launch Purchase Flow API call processed through a web browser?
Yes, for now it is processed through a browser. Google plans to complete the entire flow without leaving the game achievable through the SDK.
Does a user need to sign in separately for each game to make a purchase?
The foreground account in Google Play Games is used for each game session, so you don't need to sign in again. The account that you use in Google Play Games when the game session starts is the account that API calls are issued as. When you launch a purchase flow in the browser, you must be signed in and using the same account as the game session. If the user is signed in with a different account, the web flow prompts them to switch accounts.
Can a game support both the native SDK and legacy payment systems at the same time?
The payment system operates under a dual-flow model depending on the game binary version. Users on legacy builds continue on the existing flow, and users on new builds transition to SDK-based payments. Users on both payment flows coexist during the transition period.
Windows App Bundle
When submitting a WAB using a 3P launcher, is the game package required for review?
You can just submit your installer and don't need to submit your entire game package, the reviewer will be able to download your game package using the installer.
Are there any limitations of WAB file size?
You can upload up to 10 GB file size for a WAB.
Why isn't my game installing or appearing after I uploaded my WAB?
If your game is being onboarded without a pre-existing PC version (a "first- time WAB"), the system may automatically place it into a Managed Publishing holding state. This happens because there is no existing baseline to update. To fully release the WAB and make the game available for installation, you must navigate to the Google Play Console and manually execute the required publish action (for example, click "Publish changes").
How do I upload the WAB for internal testing?
Share the allowlist accounts with Google so Google can enable them for internal testing. After Google has the list, Google makes sure they are included in the onboarding process.
Where should the WAB package be uploaded?
You can upload the WAB package at the location mentioned in the first question. However, you cannot publish it manually. You must provide the Google backend staff with a precise UTC time (down to the hour). Google then configures the release schedule and ensures it is published on time.
PC SDK
What are the differences between the Legacy API and Google Play Games on PC SDK?
- Our Legacy API only offers Billing functionality.
- The PC SDK supports Google Desktop Service (GDS) and full PC features.
- No browser-based Google Sign-in needed is required with the PC SDK.
Is there an alternative way to initialize the SDK by launching the game directly using the game launcher, without going through Google Play Games on PC?
Your game must be launched through the Google Play Games on PC client. For more details, refer to this developer document.
Does the native PC SDK support multibyte characters in the PEM certification file?
Yes, the SDK supports multibyte characters for certification.
How does the SDK handle Google Account sign-in for multiple instances or accounts?
Each game launch in Google Play Games is treated as a "game session" and each "game session" can have an account associated with it. They can be different. So if you launch the game with account A, and then switch to account B and relaunch both can run at the same time.
Does the Play Install Referrer integration work with the PC SDK?
The PC SDK (25.5.409.0 and higher) supports the Play Install Referrer API. For more information, see Play Install Referrer API.
Launcher
If a player uses a 3P launcher instead of the Google Play Client, will their Play Games Services account sync automatically?
For the SDK functions to operate, the game must be launched directly through the Google Play Games client. If another process, such as an installer or launcher application, initiates the game, then that process must itself be launched from the Google Play Games client. The game must pass all parameters received from the client to the client process.
How do I handle initialization if Google Play Games launches a third-party game launcher?
You are not required to integrate the SDK directly into your launcher. However, you must pass all command-line arguments received by the launcher from the Google Play Games client directly to the spawned child process (the game executable). If initialization fails (for example, by returning
kActionRequiredShutdownClientProcess), all processes including the launcher must be terminated so Google Play Games can attempt to recover and relaunch the game automatically. For more details, see Step 5 in the setup guide.How can I handle updates and maintenance to my game and launcher after it is in production?
Subsequent updates and maintenance must be implemented through your launcher. The Google Play Games client does not support update functions, so the launcher must be capable of updating both the game and the launcher itself.
Initialization
When I start a game using the Google Play Games app, does it sync my Google Account details?
After launching the game through Google Play Games client, the account is automatically synchronized and there's no need to login through the Google Login process again.
Is it possible to reuse the initialization parameters multiple times?
This is possible as long as the Google Play Games client is running and the login information is valid. However, in scenarios like the one described in the guide, all processes launched by the game must be terminated when the user closes the game or the game exits due to an SDK initialization failure, such as
kActionRequiredShutdownClientProcess.Is there any way to create a shortcut to open the game directly?
You can use the following URI for opening the game directly:
googleplaygames://launch/?pid=2&id=com.company.gamenameThe URI supports detecting whether the Google Play Games on PC client is opened. If the client is not open, the Google Play Games client opens before the game or launcher runs. You need to manage the game or launcher to prevent multiple instances from running.
Is there any way to verify the Google Play Games on PC installation without using the SDK?
You can verify the installation status of Google Play Games on PC without integrating the SDK by checking for the presence of the following Windows Registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Google\Play Games ServicesThe presence of this key indicates that the Google Play Games services (required to run games on PC) are installed on the machine. If the key is missing, you should direct the user to the Google Play Games on PC installation page to download and install the client.
Testing
Are there any open testing or closed testing environments similar to the mobile?
While a dedicated end-to-end sandbox isn't available, we recognize the need for a production-like testing environment for developers. A more robust solution will be offered soon.
How can I add new testers?
Your Google point of contact creates an email group for each PC project, where the testers' Google Accounts must be added. Only members of this email group are authorized to download the test packages within Google Play Games.
Miscellaneous
Can I use a VPN?
For developers requiring to test their game in regions where Google Play Games on PC is not supported, we recommend that you use a VPN to acquire an IP address from a supported region.
Ensure that you enable TUN mode on VPN. Guidance on enabling TUN mode and configuring the firewall can be found in the VPN provider's operating manual.
After the TUN mode is enabled, install the Google Play Games on PC and the emulator for testing purposes.
How can I start developing for Google Play Games on PC in Unity or UE Editor?
- Enable the developer Mode and proceed with testing.
- Add the
manifest.xmland.dllfiles. For more information, see developer document. - Register an early access partner GUID for testing purposes.
How can I use registry keys correctly?
You should create registry keys based on the root hive. You can set the root hive as either
HKEY_LOCAL_MACHINEorHKEY_CURRENT_USERdepending on your purpose and the nature of the data. TheHKEY_LOCAL_MACHINEhive is used as an example in the guidelines.What are the requirements for Google's review of PC packages?
PC packages undergo malware scanning, after which reviewers test only the game installation, successful startup, and uninstallation processes.
Is it necessary to integrate all APIs?
Other APIs are not required, but they offer additional benefits.
google::play::billingis required for in-app purchases and selling digital content.google::play::install_referreris required for tracking referral data to help you understand which traffic sources send the most users to download your app.google::play::games::integrityis required to protect your app from bad actors by detecting potentially risky devices and unknown emulators.Why are some game processes terminated when the Google Play Games client is closed, while others are not?
Google doesn't control the sub processes or processes of the running game. The behavior depends on whether the game is an Android emulated game or a native PC game. Emulated games are installed inside their own environment, so their behavior depends largely on emulator initialization and shutdown.
Should I use Google Play Games uninstallation capability or a custom uninstaller?
Google recommends using our Google Play Games uninstallation capability.
Further assistance
If you need further help not covered in this FAQ, please reach out to google-play-games-pc@google.com