CLI

Store integrations

To release to Steam, Google Play or the App Store, ASE Brain needs your game's ids in each store and the keys that upload builds. ase integrate walks you through each store.

ase integrate list                       # every integration and its status
ase integrate status --game neon-drift   # which ids the game has set
ase integrate add steam --game neon-drift

Run ase integrate add in the game's repo, or pass --project. It shows the store's setup guide, asks for each value (secrets aren't echoed or written to disk), checks them with the store, and stores each one where it belongs.

Where each value goes

Kind Example Stored in
Public ids Steam app id, Play package name, App Store bundle id The game's brain/game.toml, under [stores]
Upload keys Steam build account, Play upload service account, App Store Connect upload key ASE Brain, as the game's secrets
Reporting keys Steam Financial API key, Play reports account, App Store sales key ASE Brain, for revenue reports

After add changes brain/game.toml, commit it. The game's next release stamps the ids into its builds and publishes them to ASE Brain.

Upload and reporting keys are always separate keys: a leaked reporting key can't publish a build, and a leaked upload key can't read your revenue.

The stores

Integration Ids Upload keys
steam stores.steam.app_id, stores.steam.depot_ids (one depot per desktop build, in release.toml's order) STEAM_BUILD_USER, STEAM_BUILD_PASSWORD, STEAM_BUILD_TOTP
play stores.play.package PLAY_UPLOAD_SERVICE_ACCOUNT
appstore stores.appstore.bundle_id, stores.appstore.app_id, stores.appstore.sku APPSTORE_UPLOAD_ISSUER_ID, APPSTORE_UPLOAD_KEY_ID, APPSTORE_UPLOAD_KEY

Each store's guide in ase integrate add says where to find these values and which permissions each key needs. Give every key the least it needs: Steam's build account only build rights, Play's upload account only testing tracks, the App Store upload key only the Developer role.

Current status

Steam, Google Play and the App Store integrations are Experimental (what that means). ase integrate add prints the setup guide and exits with code 2, without asking for values. Until each is ready:

  • Add the ids to brain/game.toml by hand:
[stores.steam]
app_id = 1234560
depot_ids = [1234561, 1234562]

[stores.play]
package = "com.example.neondrift"

[stores.appstore]
bundle_id = "com.example.neondrift"
app_id = "6450000000"
sku = "neon-drift"
  • Set upload keys with ase studio secret, which asks for the value at a masked prompt (paste a .p8 key's whole text) or reads it from standard input:
ase studio secret APPSTORE_UPLOAD_KEY --game neon-drift
ase studio secret APPSTORE_UPLOAD_KEY --game neon-drift < AuthKey_ABC123.p8

Signing keys for mobile builds

Release builds for Android and iOS are signed with keys ASE Brain keeps for the studio or the game:

Platform Secrets
Android ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_PASSWORD
iOS IOS_CERTIFICATE_BASE64, IOS_CERTIFICATE_PASSWORD, IOS_PROVISIONING_PROFILE_BASE64
ase studio secret ANDROID_KEYSTORE_PASSWORD < password.txt                    # for every game in the studio
ase studio secret ANDROID_KEYSTORE_BASE64 --game neon-drift < keystore.b64    # for one game

A game's own value wins over the studio's. A platform without its signing keys is skipped with a warning, and a store target without its upload keys is skipped too, so you can release to the stores you've set up before the rest.

Live games only

Store targets take only live games. Promote a game before its first store release:

ase games promote neon-drift

Store builds are uploaded without going live: to Steam's staging branch, Google Play's internal track, or App Store Connect. You release each build to players from the studio console.

Store listings ask for a privacy policy, and Google Play also for a page where players delete their account. ASE Brain serves both for your game. Give each link your game's id, so the pages name your studio and Apple and Google sign-in there use your game's keys:

Listing field Link
Privacy policy (App Store, Google Play, Steam) https://play.asebrain.com/privacy?game=neon-drift
Delete account URL (Google Play's Data safety) https://play.asebrain.com/delete?game=neon-drift

Players download their data at https://play.asebrain.com/export?game=neon-drift, which the privacy policy links to.

In-game purchases

Purchases need store setup of their own, such as enabling microtransactions on Steam. See Purchases.