POLYBALL PRIVACY POLICY
THE SHORT VERSION
PolyBall uses the internet for exactly four things: showing ads through Google AdMob, processing optional purchases through Google Play, anonymous usage statistics through PostHog (you can turn these off), and the optional online leaderboard. The game still has no accounts and no sign-in. The online features run on a random install identifier, and the leaderboard shows the player name you choose, publicly. This policy explains exactly what each system does and how you control it.
WHAT CHANGED FROM THE PREVIOUS VERSION
Earlier versions of PolyBall had no internet permission at all. Later versions added it for ads and then for in-app purchases through Google Play. This version adds two more online features, both described in their own sections below: anonymous analytics (PostHog, with an off switch in Settings > DATA) and the online leaderboard. Your saves and the optional local gameplay log remain local-only, exactly as before. From the game update that follows this policy, the leaderboard row also names the platform a run was played on, so the board can show it; the LEADERBOARD section says exactly what that is. From version 0.9.8 the game can ask "How's it playing?" once per version, and the stars and quick answers you tap travel with the anonymous analytics; the ANALYTICS section says exactly what that is. From version 0.9.8 the leaderboard shows the name you choose instead of a generated one; the LEADERBOARD section says how to change or remove it. From version 0.9.9 the game asks the leaderboard for a run code before each run and a submission can be held for review if it fails the board's cheating checks; the LEADERBOARD section says what both hold. From version 0.9.10 you can block or report another player's name on the board; the LEADERBOARD section says what a report sends and how long it is kept.
WHAT THE GAME STORES ON YOUR DEVICE
1. Save file (polyball.cfg, app-private storage): your settings (audio, haptics, colour-blind mode, reduced motion, controls mode, graphics quality), high scores and per-mode bests, coin and gem balance, owned cosmetics, achievement and streak progress, and the player name you chose. No email, no account. The game has no sign-in of any kind.
2. Local gameplay log (beta_telemetry.jsonl, app-private storage), only if you switch TELEMETRY on: a record of your runs used to balance the game (per-catch and per-miss timing and accuracy, score, combo, mode, difficulty, coin and gem earns and spends inside the game, the app version, the OS name, and your device's model name). Each install generates a random install id (16 random bytes) so runs from one device can be grouped. That id is created on your device, is not derived from anything about you or your hardware, and is not linked to your identity. The log is capped at about 8 MB and old runs are trimmed automatically. This log is never uploaded. It leaves the device only through the manual export described below.
You can turn the recording off at any time: Settings > DATA > TELEMETRY. You can erase all progress data via Settings > DATA > Reset progress.
ADS (GOOGLE ADMOB)
This version shows ads through Google AdMob, a service of Google LLC. Ads appear in four forms: optional rewarded videos you choose to watch in exchange for in-game bonuses; full-screen ads between runs, never during one, at most one every three runs and every three minutes, and six a session; a banner on the results screen; and a full-screen ad when you return to the app after two minutes or more away, never over a run and at most three a session. Apart from the optional rewarded videos, no ad appears until you have finished 8 runs and played for 10 minutes. The Remove Ads purchase removes the interstitial, banner and app-open ads permanently; any other purchase pauses those three for 30 days. Rewarded videos always remain optional and are never shown to you unasked.
To serve and measure ads, the Google Mobile Ads SDK (Next-Gen) collects and shares with Google: your device's advertising ID, IP address (which implies coarse location), device information (model, OS version), and app interaction data (such as ad views and taps). This happens under Google's own privacy policy: https://policies.google.com/privacy How Google uses this data: https://policies.google.com/technologies/partner-sites
IN-APP PURCHASES (GOOGLE PLAY)
PolyBall offers a small set of optional purchases (gem packs, coin packs, a starter pack, and Remove Ads), all processed by Google Play's billing system. Every purchase is a fixed, listed price and there are no paid random rewards of any kind. Nothing purchasable affects your rank: coins can buy Combo Shields, which absorb one fatal miss during a run, and any run a shield or an ad revive touched is marked assisted and is never submitted to the leaderboard. The app never sees or stores your payment details; Google processes the payment under its own terms and privacy policy. On your device the game stores only which products you own and, in the local gameplay log (if you enabled it), the product id, price and currency of a completed purchase. Ownership is re-checked against your Google Play account, which is how purchases survive a reinstall: Settings > DATA > RESTORE PURCHASES re-applies them, and Settings > DATA > REFUNDS opens your Google Play order history. Refunded purchases are revoked the same way.
CONSENT AND YOUR CHOICES
On first launch (and again whenever regulations require), a consent form asks how ads may use your data. In the European Economic Area and the UK this is the Google-certified consent flow required by GDPR. You can change your choice at any time: Settings > DATA > MANAGE AD CONSENT. Where you decline personalized ads, ads still appear but are contextual (based on the app and your general region, not on a profile of you). You can also reset your device's advertising ID or opt out of personalization in your device's Google settings.
WHAT LEAVES YOUR DEVICE
Only the traffic described in this policy: the ad and Google Play billing traffic above, plus the anonymous analytics events and optional leaderboard submissions described in the ANALYTICS and LEADERBOARD sections below. There are no crash reporters and no other third-party SDKs. The local gameplay log itself is never transmitted.
Two ways your own data can leave the device, both controlled by you: - Manual export. Settings > DATA > Export beta data copies the gameplay log to your Downloads folder as JSONL and CSV files. Nothing is uploaded. The files only reach the developer if you choose to send them. - Android Auto Backup. Android may include the app's data in the device backup tied to your own Google account. That backup is operated by Google under your Google account settings, and the developer has no access to it.
CHILDREN
PolyBall is not directed at children. It is a simple arcade game with no chat and no external links inside gameplay. The only thing a player writes that others can see is the name on the leaderboard, which the server checks against a blocklist before it shows, and any player can report a name or hide it on their own device. Apart from that name, the game itself collects no personal data from anyone. Ad serving follows the consent rules above, including the regional consent requirements that apply to users under the age of digital consent.
PERMISSIONS
- INTERNET: used by the ad system, Google Play billing, the anonymous analytics, and the online leaderboard, nothing else. - VIBRATE: used only for optional haptic feedback (toggle in Settings). It accesses no data. - Writing the manual export may prompt for storage access on older Android versions. It is used only to place the export files in your Downloads folder.
ANALYTICS
The game sends anonymous usage statistics (which screens are used, how runs end, frame-rate tier) to PostHog, our analytics processor, over HTTPS. These are tied to a random install identifier generated on your device, never your name, email, advertising ID, or anything you typed. You can turn this off any time in Settings > DATA > ANALYTICS. Clearing the app's data resets the identifier.
From version 0.9.8 the game may ask "How's it playing?" after a few runs, at most once per version. If you answer, the star rating and the quick answers you tap (such as "Too hard" or "Love the music") are sent as one more of these anonymous events, with the game version and platform. Nothing you type is sent, and with ANALYTICS off your answer is not sent at all. The "Write to me" button only opens your own email app with the game version, platform and device model filled in. Nothing leaves your device unless you send that email yourself.
LEADERBOARD (WHEN AVAILABLE)
If a ranked run sets a new best, the game transmits exactly one row: that score, the mode and the side count the run was played at, the player name you chose (or a generated name such as SwiftComet38 if you never chose one or the board does not accept yours), the plate style, title and title font you have equipped, the platform the run was played on (Android, Web for the browser build, or Windows, macOS or Linux for the desktop builds), and the same random install identifier, so your row can be updated rather than duplicated. The platform is shown as a small icon beside your score, so players can see which version of the game a run came from. It is the name of the platform and nothing more, never a device model, a browser name or anything that could identify you. With the score the game also sends how many balls the run caught and how many seconds it lasted, and from version 0.9.9 a run code: before each run the game asks the server for one, that request carries nothing about you, and the code holds only the time the server issued it. A Remix run (from version 0.10) also sends how many milliseconds you took to react each time a trickster ball changed colour: a list of numbers and nothing else. The server uses these only to check that the score was possible. Nothing else is sent. The row appears on other players' screens. A submission that fails those checks is kept, with the same fields, for up to 90 days so the developer can review it, and is deleted with your row on request. Your name is shown publicly on the board, in the game and on abdaishere.com, so pick one you are happy for anyone to see. To change it, set a new name in Settings > PROFILE; your next best on a board shows it. To remove your name and scores from the board, email abdaishere@gmail.com and we delete them. Since the game has no account, include your anonymous ID so we can find your rows: Settings > DATA > ANONYMOUS ID has a COPY button for exactly this. From version 0.9.10 the menu on another player's row in the game's Global board can block or report their name. Blocking stays on your device: that row shows a generated name for you, nothing is sent, and Settings > DATA undoes it. A report sends your random install identifier, a reference to the reported row (it cannot be turned back into that player's install identifier) and the name as it showed. Reports are kept for 90 days so the developer can review the name. When enough different players report the same name (three, or five for a player in the top three or in a past cup result; brand-new installs do not count), the board shows a generated name in its place until the developer has looked at it; the score stays. If the developer removes a name, that decision is kept with the reported player's install identifier so the name stays off the board.
BROWSER VERSION
PolyBall also runs in a web browser as a WebAssembly build. For data it behaves exactly like the Android app: the same anonymous PostHog analytics, on by default with the same off switch in Settings > DATA > ANALYTICS, and the same single leaderboard row on a new ranked best, keyed to a random install identifier your browser stores. It shows no ads and offers no purchases at all, because the AdMob and Google Play billing components are Android-only and are absent from that build. Clearing the site data for that page in your browser erases the local save and resets the identifier.
DATA DELETION
The game's own data lives on your device: Settings > DATA > Reset progress erases progress, and uninstalling the app removes everything the game stored locally. Three things can exist server-side: your leaderboard row (install identifier, the name shown, and each best score with its mode, side count, catches, run length, Remix reaction times, the platform it was played on and the plate, title and title font shown beside it, plus any submission held for review, any name report you sent or that was made about your name, and any review decision about your name), the same fields frozen into a monthly cup archive once that month's board closes, and the anonymous analytics events. Resetting or uninstalling does not remove those. Email abdaishere@gmail.com and all of it will be deleted; the deletion page linked from the store listing explains the steps. Data collected by Google for ad serving is handled under Google's privacy policy and controls (advertising ID reset and ad personalization settings on your device).
CHANGES
The analytics and leaderboard features described above shipped with this version of the policy. If a future version adds anything new that transmits data, this policy will be updated first and the change will be visible in the app's store listing before it applies.