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.tomlby 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.p8key'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.
Privacy and deletion links
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.