This document shows you how to publish your game on Google Play Games on PC.

## Before you begin

Integrate the [Google Play Games SDK](https://developer.android.com/games/playgames/native-pc/setup) into your game.

## Package your game as a WAB file

Google Play Games on PC requires your game's installer to be uploaded to
Google Play Console as a Windows app bundle (WAB) file. To create a WAB file,
​follow these steps:

1. Download the [Play publishing tool](https://developer.android.com/games/playgames/native-pc/downloads/playpublishingtool).
   You can run this tool on the Windows command line or Powershell.

2. Create the Play publishing config file, with any name. For example,
   `play_publishing_config.xml` with the following format:

   ```xml
   <?xml version="1.0" encoding="UTF-8"?>
   <play-publishing-config version="1.0">
     <application>
       <package-name>PACKAGE_NAME</package-name>
       <version-name>VERSION_NAME</version-name>
     </application>
     <installer requiresElevation=INSTALLER_REQUIRES_ELEVATION>
       <path>INSTALLER_PATH</path>
       <installation-path-registry-location>
         <key-name>UNIQUE_REGISTRY_PATH</key-name>
         <value-name>InstallLocation</value-name>
       </installation-path-registry-location>
     </installer>
     <launcher requiresElevation=LAUNCHER_REQUIRES_ELEVATION>
       <launch-path-registry-location>
         <key-name>UNIQUE_REGISTRY_PATH</key-name>
         <value-name>InstallLocation</value-name>
       </launch-path-registry-location>
       <executable-invocation>
         <filename>RELATIVE_PATH_TO_LAUNCHER_EXE</filename>
         <arguments>LAUNCHER_ARGS_IF_ANY</arguments>
       </executable-invocation>
     </launcher>
     <uninstaller requiresElevation=UNINSTALLER_REQUIRES_ELEVATION>
       <uninstall-path-registry-location>
         <key-name>UNIQUE_REGISTRY_PATH</key-name>
         <value-name>UninstallString</value-name>
       </uninstall-path-registry-location>
     </uninstaller>
   </play-publishing-config>
   ```

   Replace the following:

   - <var translate="no">PACKAGE_NAME</var>: The package name for your game. For example, `com.yourcompany.yourgame`.
   - <var translate="no">VERSION_NAME</var>: The game's version string. For example, `1.0.0`.
   - <var translate="no">INSTALLER_REQUIRES_ELEVATION</var>: Indicates whether the
     installer executable needs to be run as Administrator to complete the
     installation process.

     - **"true"**: Run the executable as Administrator.

       | **Warning:** Displays a [UAC](https://learn.microsoft.com/en-us/windows/security/application-security/application-control/user-account-control/) prompt for the gamer.
     - **"false"**: Run the executable as the current user.

   - <var translate="no">INSTALLER_PATH</var>: The path to your installer file
     within the WAB. This path can be either *absolute* or *relative* to the
     parent directory of the Play publishing config. For example,
     `path\to\test\installer`.
     Remember to use [authenticode and code signing](https://learn.microsoft.com/en-us/visualstudio/deployment/clickonce-and-authenticode?view=vs-2022#authenticode-and-code-signing) to sign your game's
     installer executable.

   - <var translate="no">UNIQUE_REGISTRY_PATH</var>: The root-key that will contain
     all your registry information. It has to be unique throughout the
     user's machine. This will be the relative path on top of [HKLM](https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/windows-registry-advanced-users).
     For example, `SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YourUniqueName`.
     This entry will create a root-key under `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName`
     on a 64-bit Windows 11 machine.

   - <var translate="no">LAUNCHER_REQUIRES_ESCALATION</var>: Indicates if the
     launcher or game executable needs to be run as Administrator every time
     it is launched.

     - **"true"**: Run the executable as Administrator.

       | **Warning:** Displays a [UAC](https://learn.microsoft.com/en-us/windows/security/application-security/application-control/user-account-control/) prompt for the gamer.
     - **"false"**: Run the executable as the current user.

   - <var translate="no">RELATIVE_PATH_TO_LAUNCHER_EXE</var>: The path to your
     launcher or game executable within the installation directory. This has
     to include your launcher or game executable filename. For example, if
     your launcher or game file is called mygame.exe and it is located under
     {INSTALL_DIR}\\Resources\\mygame.exe, you have to put
     Resources\\mygame.exe

   - <var translate="no">LAUNCHER_ARGS_IF_ANY</var>: any command line arguments
     that need to be passed into your launcher or game.
     This entry is optional.

   - <var translate="no">UNINSTALLER_REQUIRES_ELEVATION</var>: Indicates if the
     uninstaller executable needs to be run as Administrator to complete the
     uninstallation process.

     - **"true"**: Run the executable as Administrator.

       | **Warning:** Displays a [UAC](https://learn.microsoft.com/en-us/windows/security/application-security/application-control/user-account-control/) prompt for the gamer.
     - **"false"**: Run the executable as the current user.

   #### Example Play publishing config file

   Consider a game called `MyGame`, with game installer
   `game_installer.exe`, game's launcher `launcher.exe`.
   The example also shows how to use CDATA.
   The following is what the `play_publishing_config.xml` will look
   like:  

   ```xml
   <?xml version="1.0" encoding="UTF-8"?>

   <play-publishing-config version="1.0">
     <application>
       <package-name>com.mycompany.mygame</package-name>
       <version-name>1.0.0</version-name>
     </application>
     <installer requiresElevation="true">
       <path>game_installer.exe</path>
       <installation-path-registry-location>
         <key-name>SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MySystemWideUniqueKey</key-name>
         <value-name>InstallLocation</value-name>
       </installation-path-registry-location>
     </installer>

     <launcher requiresElevation="true">
       <launch-path-registry-location >
         <key-name>SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MySystemWideUniqueKey</key-name>
         <value-name>InstallLocation</value-name>
       </launch-path-registry-location>
       <executable-invocation>
         <filename>launcher.exe</filename>
         <arguments><![CDATA[arg1&arg2>arg3]]></arguments>
       </executable-invocation>
     </launcher>

     <uninstaller requiresElevation="true">
       <uninstall-path-registry-location>
         <key-name>SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MySystemWideUniqueKey</key-name>
         <value-name>UninstallString</value-name>
       </uninstall-path-registry-location>
     </uninstaller>
   </play-publishing-config>
   ```
3. Run the Play publishing tool on the Windows command line or Powershell.

   ```
   playpublishingtool.exe build-installer-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
   ```

   To overwrite an existing WAB file with the same name, use the
   `--force` argument.  

   ```
   playpublishingtool.exe build-installer-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
   ```

   Replace the following:
   - <var translate="no">PLAY_PUBLISHING_CONFIG_PATH</var>: The path to the Play publishing config. For example, `path\to\play_publishing_config.xml`.
   - <var translate="no">WAB_OUTPUT_PATH</var>: The path to the WAB file. For example, `path\to\output_bundle.wab`.

   | **Important:** The WAB filename in the `--output` must have a `.wab` extension.
   **Note:** The `--input` and `--output` paths can be absolute or relative with respect to the current working directory.  

   #### How to use Play publishing tool

   Consider that you have the Play publishing tool binary
   `playpublishingtool.exe`, Play publishing config
   `play_publishing_config.xml` and your game installer
   `game_installer.exe` in the current working directory.

   Your current working directory should look like this:  

   ```none
   .\
   ├── game_installer.exe
   ├── play_publishing_config.xml
   ├── playpublishingtool.exe
   ```

   To create a WAB with the name, say, `installer_bundle.wab` in the same
   directory, the command would look like:  

   ```
   playpublishingtool.exe build-installer-bundle --input=play_publishing_config.xml --output=installer_bundle.wab
   ```

   With the `--force` argument, the command would look like:  

   ```
   playpublishingtool.exe build-installer-bundle --input=play_publishing_config.xml --output=installer_bundle.wab --force
   ```

   On success, you should see output similar to the following:  

   ```none
   Successfully built the installer bundle at installer_bundle.wab
   ```

   Find the WAB file in the folder:  

   ```none
     .\
     ├── game_installer.exe
     ├── installer_bundle.wab
     ├── play_publishing_config.xml
     ├── playpublishingtool.exe
   ```

## Publish the game using Play Console

After you successfully create the WAB for your game, upload it to
Play Console and manage its settings and requirements. Follow the
steps to publish your game:
| **Note:** For all the steps, open the [Play Console](https://play.google.com/console) and select your app first. Then proceed with the mentioned steps for that particular app.

### Add the Google Play Games on PC form factor

Publish a game only requires this step the first time.

1. In the Play Console on the left menu, select **Test and
   release \> Setup \> Advanced settings** ([direct link](https://play.google.com/console/u/0/developers/app/advanced-distribution)).
2. Go to the **Form factors** tab and add `Google Play Games on PC(Windows)` from the
   **+ Add form factor** drop-down.

   | **Note:** If you cannot access the Google Play Games on PC(Windows) in the form factors tab, you can reach out to our Play partners to allowlist your account.
3. Click the **Manage** button corresponding to the **Google Play Games on PC**
   form factor on the right-hand side.

4. Select the option **Use a dedicated track for your Windows app bundle game**.

5. Click **Save** and then **Save** again on the confirmation dialog.

### Upload the WAB file

To upload the WAB file:

1. In the Play Console on the left menu, select **Test and release \> Production** ([direct link](https://play.google.com/console/u/0/developers/app/tracks/production)).
2. In the **Production** page, select **Google Play Games on PC (Windows) only** from the form factor drop-down on the right-hand side.
3. In the **Windows app bundle** tab, click **Upload a Windows app bundle** button and upload the WAB file. Alternatively, you can also click the **Upload a Windows app bundle** button on the right side of the form factor drop-down.
4. Click **Save**.

### Configure the windows PC requirements

To configure the windows PC requirements:

1. In the Play Console on the left menu, select **Grow users \> Store presence \> Store settings** ([direct link](https://play.google.com/console/u/0/developers/app/store-s)).
2. In the **PC requirements** section, click the **Edit** button on the right-hand side.
3. Update the fields and click **Save**.

### Configure the in-app purchase graphic

This is an optional step. To configure the in-app purchase graphic:

1. In the Play Console on the left menu, select **Grow users \> Store presence \> Store listings** ([direct link](https://play.google.com/console/u/0/developers/app/main-store-listing)).
2. In the **Default store listing** section in the **Listings** tab, click the **-\>** (arrow) button on the right-hand side. This will take you to the **Default store listing** page.
3. Navigate to the **Google Play Games on PC** section and upload the image at **Google Play Games on PC (Windows) in-app purchase graphic**.
4. Click **Save**.

### Send changes for review

| **Note:** You can use **Managed publishing** to have more control over when your changes are published. Managed publishing is switched off by default, which means your changes will be published as soon as they are approved. To turn on Managed publishing, go to the [Publishing overview](https://play.google.com/console/u/0/developers/app/publishing) page and click the **Turn on managed publishing** button on the right-hand side.

1. In the Play Console on the left menu, select **Publishing overview**.
2. In the **Changes not yet sent for review** section, click **Send changes for review**.

When the Review team has approved your changes, your game will be discoverable on
Google Play.