Modded copies don't get a pass.
Countersign checks every copy of your Quest game, and the headset it runs on, before PlayFab or Photon let it in. Cloned APKs, copied custom ids and banned players are turned away at the door.
- Game
- 3f9a 0c12 7be4 4d81 a2e6 5b07 c9f1 c21e
- Player
- 8d02 4b19 e730 aa5c 0f61 93d2 1e48 77b1
- Trust
- Elevated, hardware key
- Install
- Store build, signature matches
- Valid
- 10 minutes, renews by itself
signature 3045 0221 00c8 5e1f 9a33 07d4 b2c6 e11a 7f40 52b9 d8e3 6c0a 91f7 2d45 0b8e 3a6f 1c02 2000 f3a9 6d17 e8c2 4b50 0d9e 71a4 c63f 28b5 9e04 17da 5c80 e2b3 46f1
What it keeps out
Modded APKs
A modded build has to be re-signed with someone else's key. Countersign knows yours, so the copy gets no pass.
Copied custom ids
PlayFab accounts are made by the server, for genuine installs only. An id pulled out of a decompiled build opens nothing.
Banned players on a fresh install
A ban follows the headset through a reinstall, by ids only a genuine build can report, even if the player blocks Meta. Meta's own device bans go further once Meta approves your app.
Free currency and items
The client can make only the PlayFab calls you list. Anything that grants something runs as your own CloudScript.
One headset selling passes
A headset keeps only a few keys in play. Past that they knock each other out, and each way back takes a fresh proof from the real headset.
Leaked keyboxes
Countersign reads Google's revocation list every six hours. A key proved by a revoked certificate stops counting, even one that enrolled before the leak.
How a player gets in
The headset proves itself
The game makes a key inside the headset's secure hardware. Store builds add Meta's integrity check.
Countersign checks the copy and the player
Your build's signature, how far the headset can be trusted, and your ban list, every time.
It signs a pass
A ticket that lasts ten minutes and renews in the background while the player plays.
Photon and PlayFab ask for it
Rooms and accounts open only for a valid pass. A player you ban mid-match is removed from the room.
Pricing
Plans go by monthly active players: everyone who got a pass that month, across all your games. Every account starts on Free and upgrades from Billing.
| Plan | Monthly active players | Games | Price | Action |
|---|---|---|---|---|
| Free | 100 | 2 games | $0 | Start free |
| Starter | 1,000 | 3 games | $5 / month | |
| Studio | 10,000 | 10 games | $20 / month |
Made for the usual stack
Unity on Quest, PlayFab for accounts, Photon PUN 2 for rooms. The Unity package signs players in, renews passes and recovers from errors by itself, so there is no session code to write. Read the setup guide.
Your moderators work from your own Discord server: /ban, /unban and /player as slash commands, with a digest of refusals in a channel.