Privacy Policy — dOid


Application: dOid Package: cz.tchalupnik.doid Version this describes: 0.4.0 Developer: Tomáš Chalupník Contact: support@doid.online Last updated: 2026-09-26


1. The short version

dOid records how the game is played, and sends a report when it crashes. It does not know who you are.

It is a single-player arcade game with no accounts, no advertisements, no purchases and no messaging. There is no sign-in, no name, no email address, and no field in this game to type anything into.

Two things happen in the background, and this document is mostly about them. The game counts a few moments — the menu appearing, a run starting, a run ending — and sends those counts to Google Analytics, so the developer can tell whether new players work out the controls and whether anybody plays twice. And if the game crashes, it sends a report about the crash to Google Crashlytics, so the crash can be fixed.

You are not asked first, and there is no switch in the game to turn either of them off. That is a deliberate decision by the developer, and this document says so plainly rather than implying a control that does not exist. §5 sets out what you can actually do.

Your scores and your settings are still written to your phone's own storage and still stay there.

This describes dOid version 0.4.0. There is an Android build of it and an iPhone and iPad build of it, made from the same source on the same day, and §2.6 is the short list of what differs between them. Six versions of dOid have been on Google Play before this one. The copies Google Play distributed as 0.1.1, 0.1.2 and 0.1.3 collect nothing: no analytics, no crash reports, no network connection of any kind. If you installed one of those from Google Play, it stays that way until you update. 0.1.4 was the first collecting release; 0.2.0 added a fourth reported moment and 0.3.0 removed it again. This version still reports three moments and adds two fixed-list details to a run: the selected mode combination and its rules/scoring revision. §2.5 lists what moved. The game's menu screen shows its version, on the same line as the address that brought you here, and in this version it reads v0.4.0 · privacy: doid.online/policy on both.

That line is what sent you here, and it does not tell you which copy you have. Builds made while dOid was being developed were never put on any store and carry the same version numbers as the releases that were — and some of the ones numbered 0.1.3 do collect what §2.1 describes. §8 says what to do if your copy did not come from Google Play, and what to do if the number on your menu screen is not the number at the top of this page.

2. What dOid collects

2.1 What is sent, and to whom

Everything below goes to Google, which processes it on the developer's instructions. Nothing goes anywhere else, and nothing is sold.

What the game itself reports. Three moments, and no others:

MomentWhat travels with it
The menu appears after the splash screenHow many milliseconds the start-up took, and which band that falls in
A run startsWhether it started from the menu, from the mode selector or from PLAY AGAIN; which run of this session it is; the selected mode combination; and that combination's rules and scoring revision, plus its recognised goal when it has one
A run endsHow long it lasted, the score, what killed you, how quickly you first tapped, how many close passes you made, which of three things happened to the one close pass the game arranges for you three seconds in — you took it, you missed it, or the game never managed to place it — your longest chain, where the run placed in your own top-five table, a one-word verdict on the run — whether it was a new best, placed in your table, beat your best this sitting, or none of those — which run of this session it was, how many runs you have played on this phone in total, the selected mode combination, and that combination's rules and scoring revision plus its recognised goal when it has one

Every one of those is a number, or a word from a fixed list, about a run rather than about you. The list of words that can appear is short and fixed: menu, mode_select, play_again, enemy, wall_left, wall_right, the four verdicts new_best, placed, session_best and none, the three words taken, missed and absent for the arranged pass, the band names, and the catalogued mode, rules, scoring and optional-goal values. No value is typed by a player. The game sets no user identifier, no user property and no custom key — there are no such calls anywhere in its code. The two mode fields do not contain the complete local history key described in §2.2.

A fourth moment was reported by the previous version and is gone from this one. 0.2.0 sent one report the first time you survived 30, 45, 60 or 100 seconds on a phone. That feature has been taken out of the game, so nothing here sends it, and §2.2 says what this version does with the values 0.2.0 left on your phone.

What Google Analytics reports by itself, whether or not the game asks. The first launch after installation, the start of a session, periodic engagement while the game is open, a screen being shown, an update to the app or to your phone's operating system, the app being uninstalled, its data being cleared, and an error. Alongside every one of those it attaches: a random number identifying this installation of dOid — not you, and not any other app on your phone — plus the app version, your phone's model, its operating-system version, its language, and a rough region worked out from your network address. dOid never asks for your location and has no way to. The region is derived from a masked address by Google and it is approximate — a country, not a place.

What is sent when the game crashes. A description of where in the code the failure happened, the state the game was in, and details about the phone — model, operating-system version, memory and similar. A separate random number identifies this installation for crash reporting. Nothing is sent unless the game actually fails. Failures in the game's compiled code are covered too: this version ships the crash reporter's native handler, not only the one that watches the game's own scripting.

What is never sent. No name, email address, phone number, contacts, calendar, photos, files, camera or microphone. No precise location. No advertising identifier — this app declares no permission that would let it ask for one, by either of the two routes Android provides, and it switches the collection of it off explicitly. 0.1.4 declared one of those two; 0.2.0 removed it, and this version declares neither, exactly as 0.2.0 did — §2.5 records the change and §2.4 says what removing it did. No account of any kind, because there is none. No score is submitted anywhere; the table of your five best runs stays on your phone.

2.2 What is stored on your device

Whole numbers, written to the app's own private storage. Score history is separated by the combination of modes, rules, scoring and fixed settings used for the run. This version also deletes values that earlier versions left on your phone.

WhatWhyShown in the game?
Your best score in each of the 14 combinations that keeps scoresSo the game can show the right best for the combination you selected, and tell you when you have beaten itYes, for the selected combination
The four next-best scores under each of those bestsEach score-keeping combination has its own table of five runsThe top three for the selected combination are drawn as marks while you play; the fourth and fifth are only stored
How many runs you have played on this phoneIt is reported with each run, so the developer can see whether people come backNo. It is stored and sent, never displayed
Whether sound is onYour settingYes
Whether reduced motion is onYour settingYes
Whether vibration is onYour settingYes

The fourth and fifth rows of every local score table are never shown, and neither is the run count. The run count is the only one of those values that also leaves the phone. Saying so seemed better than leaving any of them off a list headed "everything".

This version also deletes values that earlier versions wrote, rather than leaving them alone — and which ones depends on which version you had.

This version removes whichever of them your phone holds, the first time you open it, before any part of the game starts. The reason is the same for both and it is not a privacy improvement: the features they were being kept for are gone. The survival marks were taken out of the game by the developer; the chain feature the other two were kept for was never built. Nothing replaces either of them. Neither set was ever sent anywhere, so there is nothing to delete anywhere else.

No phone loses more than four, and no phone loses both sets. 0.2.0 deleted the two chain values the first time it was opened, before any survival mark could be written — so a phone that has only ever moved forward holds either the two or up to the four, and never all six.

That is about storage, not about §2.1. The end of every run still reports the longest chain in that run, and it always did; the figure is worked out while you are playing and is gone from the game's memory when the run is over. What has stopped is any of it being written to your phone.

Scores are kept separately for each legal combination of modes. Fourteen combinations have a scoring schema and can write one five-row table each. The ten combinations containing Timed have no score schema and write no score history. A death or a completed run can submit once to an eligible table; an aborted or invalidated run writes nothing. A run under one combination is never ranked against one played under another.

Seventy-four numbers on a fresh installation, and at most eighty on an upgraded phone — that is everything dOid itself can write. Seventy are the fourteen five-row score tables; the other four are the run count and three settings. A phone upgraded through the older layouts can also retain five legacy v2 score rows and one bare older best score. These are maximums: a table is only filled when that combination is played.

Every stored value is a whole number. The storage keys are fixed or composed from the closed mode, rules, scoring and settings catalog; nothing in them comes from text entered by a player. The complete local combination fingerprint stays on the phone and is not reproduced by the two mode fields sent in §2.1. All of it is private to the app, none of it identifies you, and all of it is deleted when you uninstall dOid.

Two more things are stored on your phone, and dOid does not write them. Google's libraries keep the two random installation numbers described in §2.1 — one for analytics, one for crash reporting — in the app's own private storage, so that the same installation can be recognised across launches. Clearing the app's data or uninstalling removes them, and a later launch generates new ones.

2.3 What the app contains, and what it uses

dOid is built on Unity and ships with software libraries from Google and from Unity. Some of them now run; the rest are present and inert, and the difference is the point of this section.

PackagedState in this version
Google's Firebase AnalyticsRunning. Switched on in the app's manifest, for every player, with no in-app switch. §2.1 lists what it sends
Google's Firebase CrashlyticsRunning, including its handler for failures in compiled code. §2.1 lists what it sends
Google's advertising libraryNo advertisement is requested, loaded or shown, and the library is never started by the game. A small piece of it does run before the game starts: it reads dOid's own settings, checks the account number in them is well-formed, and writes one line to the phone's log. It opens no connection and reads no identifier about you
Unity's sign-in and leaderboard componentsNever started. No sign-in is attempted, no identifier is created and no score is submitted. Two independent switches stand between this packaged code and any identifier being created, and both are off in this version. The components register what they could provide when the app starts, and stop there

A library that is present but never runs collects nothing. Where that distinction is doing work — the advertising library starts a small piece of itself before the game does — it is stated rather than glossed.

2.4 Permissions

Read out of the built app rather than from a list someone typed. This version holds eight, exactly as the last version did. Nothing was added and nothing was removed — read side by side, the whole of this app's merged manifest is identical to 0.2.0's apart from the version number itself. The paragraph after the table is about two permissions that went at 0.2.0, and it is kept because the last description of dOid explained them.

dOid itself declares one Android permission, for vibration. The rest are added automatically by libraries the game is built on, and each row names which one asks for it.

PermissionWhat it is forWhich library asks for it
VIBRATEDriving the phone's vibration motor. The game asks for a short pulse at four moments: the tap that reverses the dot, the same tap while a run is starting, a button press, and the instant you die. This permission reads nothing. Driving the motor is the only thing it can do; there is no information to come back through itdOid's own manifest. Of the 77 library archives in this app, not one declares it
INTERNETOpening a network connection. This version uses it — it is how the reports in §2.1 leave the phoneGoogle's advertising, measurement, crash-reporting, data-transport and Firebase Installations libraries, and the Unity advertising wrapper
ACCESS_NETWORK_STATEChecking whether a connection exists before using oneAndroidX WorkManager, and the same Google libraries
WAKE_LOCKKeeping a background task running long enough to finishAndroidX WorkManager, Google's measurement libraries
RECEIVE_BOOT_COMPLETEDLetting a library re-schedule its own background work after the phone restarts. dOid schedules noneAndroidX WorkManager, Google's advertising library
FOREGROUND_SERVICERunning a background task with a visible notice. dOid runs no service and shows no noticeAndroidX WorkManager, and nothing else
BIND_GET_INSTALL_REFERRER_SERVICEReading how the app was installed from the Play Store app. No feature of dOid reads itGoogle's measurement libraries
cz.tchalupnik.doid.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSIONA permission the app defines for itself and about itself, so one part of the app can hand a message to another part without any other app on your phone being able to listen. It grants nothing to anybody else: only software signed with the same key as dOid can hold it, and nothing else on your phone isAndroidX Core. The library asks for it under the app's own name, and the name is filled in when the app is built

Eight rows, and that is the whole list — read out of the built app's own manifest, not assembled from what the app was meant to ask for.

The two that were taken out at 0.2.0, and what taking them out did

0.1.4 declared two more, and 0.2.0 removed both. They are still out. Both belong to Android's Privacy Sandbox, both were asked for by two of Google's measurement libraries, and neither was asked for by dOid. They were removed by dOid's own build instructing Android's manifest merger to drop them — the libraries still ask for them, and the app now overrides the request.

Nothing in the two removals affects what §2.1 describes. The reports listed there do not travel through the Privacy Sandbox, and the answer to Google's data-safety question about the advertising identifier was No before the removal, No after it, and is No here. What changed is what the No rests on, and it now rests on less.

One thing was deliberately not removed, said here so it is not read as an oversight. The built app still contains a line declaring the Privacy Sandbox as an optional library it can be linked against. That is a statement about linking, not a permission, it grants nothing, and removing permissions does not remove it.

You are never prompted to grant any of these. Not one is the kind of permission Android asks you about. Every one is granted by the system at install time, with no dialog and no choice to make.

No location permission of any kind is in this app, coarse or precise. The approximate region described in §2.1 is worked out by Google from a network address, which needs no permission and gives no better than a country.

2.5 What earlier descriptions of dOid said, and why they differ

Recorded because earlier versions of this document said otherwise, and anyone comparing them deserves an explanation rather than a silent edit.

Was describedNow
"dOid does not collect anything. Nothing you do in this game leaves your device."No longer true. It was true of the copies Google Play distributed as 0.1.1, 0.1.2 and 0.1.3 — three of the four versions it has carried before this one, and §8 says why that qualifier is there. The fourth, 0.1.4, was the first that collected, and this version sends what §2.1 describes. The change was made deliberately by the developer, and this document was rewritten for it
Firebase Analytics "switched off at the platform level, permanently for this build"On. The earlier build used a setting no running app could reverse; this one uses the ordinary setting, which a consent choice could switch off if one is ever built
Crash reporting "gone, and the library itself was removed rather than disabled"Back, and running, including its handler for failures in compiled code
"The game opens no network connection of any kind"It opens one, for the two purposes in §2.1. The game still plays exactly the same offline — no part of the gameplay waits on a network
"At most eleven numbers, and that is everything dOid stores"Seventy-four on a fresh installation, and at most eighty on an upgraded phone, plus the two identifiers Google's libraries keep. Fourteen mode combinations may each keep a five-row table; ten Timed combinations keep no score history. §2.2
Seven permissions, then ten, then eightEight again, and unchanged. §2.4. Nothing was added and nothing removed at this version; the two that went at 0.2.0 are still out, and one of them removed a capability the app really had rather than tidying a declaration nothing could reach
"Three moments, and no others" are reported, then "Four"Three again. The fourth existed only in 0.2.0 and has been taken out. This version adds the selected mode combination and its rules/scoring revision to the existing run-start and run-end moments; it does not add a fourth event. §2.1
An advertising identifier that "may be accessed", and later a permission whose name suggested it might beStill not accessed, and now the permission is gone too. 0.1.4 needed a paragraph explaining a Privacy Sandbox permission it declared but could not use. This version does not declare it
A score submitted to an anonymous leaderboardStill not submitted. There is no online leaderboard in dOid, the anonymous sign-in that created an identifier for it is still off, and the five-run score table is on your phone and holds only your own runs
An anonymous player identifierStill not created by Unity's components. Two different random numbers are created, by Google's analytics and crash libraries — §2.1
AdvertisementsStill none. They return in a later version, and this document will be rewritten before that version ships
The Facebook SDKGone, entirely and some time ago. There is no login of any kind
NotificationsGone. The app sends none and can send none

2.6 On iPhone and iPad

There is an iPhone and iPad build of this version as well as an Android one, and this section is the whole of what differs between them. They were made from the same source on the same day. Everything else on this page is true of both, so you do not have to know which one you are holding — and you can be reading this page on an iPhone without having the game at all.

This section records the builds before store submission; it does not report either store's current status. The Android bundle is present and hashed on the machine where this policy is written. The iPhone file is not: its size and fingerprint are testimony written into the manifest by the Mac that made it, and the build logs are the evidence available here. Naming those bytes is not the same as opening or hashing them on this machine.

The same two things collect on both, they collect the same things, and that is measured rather than assumed. The game's own list of what it reports and what it stores is character-for-character the same in the source each build was made from, so §2.1 and §2.2 are true of the iPhone build exactly as they are of the Android one. Google Analytics for Firebase and Firebase Crashlytics are in both, and they do what §2.1 describes, for the reasons §2.1 gives. You are not asked first on iPhone either, and there is no switch in the game to turn either of them off — the build's own record shows the setting that would switch Analytics off is absent from the app, which leaves collection on.

§2.4's permission list is Android's alone. iOS has no equivalent: an app that never prompts you declares nothing you could review, and why dOid never prompts is the second list below.

§2.3's table is written from the Android build, and one of its four rows is Android's alone. The row about Google's advertising library does not describe the iPhone build — what is and is not in it is What is not in the iPhone build below, and it is a different answer. The other three rows — Analytics running, Crashlytics running, and Unity's sign-in and leaderboard components packaged and never started — are true of both.

What is linked into the iPhone build

Read from the build's own record rather than from a list of what was intended, these are the third-party components linked into it: FirebaseAnalytics, FirebaseCore, FirebaseCoreExtension, FirebaseCoreInternal, FirebaseCrashlytics, FirebaseInstallations, FirebaseRemoteConfigInterop, FirebaseSessions, GoogleAppMeasurement, GoogleAppMeasurementIdentitySupport, GoogleAdsOnDeviceConversion, GoogleDataTransport, GoogleUtilities, and three small support libraries (FBLPromises, Promises, nanopb). They are Apple's form of the same Firebase and Google measurement libraries the Android build carries.

Two of those sixteen names look like advertising, and they are named here rather than left for somebody to find. GoogleAdsOnDeviceConversion measures whether an advertisement led to an installation. dOid buys no advertising and has nothing to attribute, the advertising SDK that would use it is not in the build, and nothing in the game starts it. GoogleAppMeasurementIdentitySupport is the piece that would let Google's measurement library read the advertising identifier if the app were ever permitted to — and the second bullet below is why it never is.

Neither was asked for by dOid, and this much about where they come from is established. The app's build asks for exactly three things — Firebase's analytics, core and crash-reporting components — and the sixteen above are everything those three drag in behind them. So both names arrive underneath Firebase. Which Firebase component asks for each one is not established here, and this page does not guess: it would be working backwards from counts in a build log, which is a guess dressed as a reading.

What is not in the iPhone build

Where these readings come from, and the one thing they are not

They are read from the build, not from the project's settings. Making an iPhone app leaves a record of which libraries were linked into it and what the build's own checks found, and the two lists above are read out of it. The same reading, run against a different build of dOid, reports the differences that build has — which is what tells you it can tell builds apart rather than answering the same way whatever it is given.

They are not a reading of any file Apple has, and they are not a reading of any file you could install. The build was made on the developer's own computer. A fingerprint of it exists, but it was written down by the computer that made the file rather than checked where this page is written, and those bytes have never been on the machine these checks run on. The build record is the closest thing to the artefact that exists here, and it is not the artefact. §8 says what to do if the copy you hold does not match what you read.

Nothing about the iPhone build has been examined by anybody qualified, and the same is true of every other sentence on this page.

3. What dOid does not do

4. Children

dOid is not directed at children. Its intended audience is 13 and over, which is what is declared to Google Play.

The app does not ask your age, does not infer it, and makes no claim about it to anyone.

5. Your choices, and what this version does not give you

There is no setting in dOid to switch this off, and no dialog asks you first. Saying so is the point of this section.

What you can do:

The advertising identifier is not collected on either platform, so there is nothing there for you to opt out of. On Android it remains yours to reset or switch off at any time in Settings → Privacy → Ads. On iPhone and iPad the question does not arise: §2.6 explains that dOid cannot ask for permission to read it, so there is no choice for you to have made and none to revisit.

If a future version serves advertisements, a consent choice will be presented in the European Economic Area, the United Kingdom and Switzerland before any advertisement loads, and this document will be rewritten before that version ships. That is true whether or not those advertisements are personalised.

6. How long it is kept, and where it goes

7. Your rights

If you are in the European Economic Area or the United Kingdom, the GDPR gives you rights of access, rectification, erasure, restriction, portability and objection — and there is something to exercise them against, which was not true of the copies Google Play distributed as 0.1.1, 0.1.2 and 0.1.3. It became true with 0.1.4 and it stays true here.

One limit has to be stated rather than glossed. What is held is filed under a random number generated on your phone. There is no name, email address or account attached to it, so a request arriving by email cannot be matched to your rows without something to match on. What that means in practice: stopping collection and resetting the identifiers is entirely in your hands, by clearing the app's data or uninstalling; matching an existing record to you needs that number, and this version does not show it to you anywhere. So the honest answer to a request to delete what is already held is that it cannot be located, while stopping any further collection is something you can do yourself at any moment.

Write to the address in §9 and you will receive a reply within 30 days.

8. Changes to this policy

The current version always lives at the address you reached this page by, and the Last updated date at the top changes when it does. There is no mailing list to notify, because dOid collects no email address.

This document describes one version of the app. A later version that serves advertisements, or that adds a leaderboard, will collect data this one does not, and this document will be rewritten and re-dated before that version reaches anybody.

Every version number in this section is a Google Play release. Nothing on this page about 0.1.1, 0.1.2, 0.1.3, 0.1.4 or 0.2.0 describes an iPhone build of dOid. §2.6 is what an iPhone reader needs from this section, and the last paragraph below is what any reader needs whose menu screen shows a number this page does not name.

Google Play has carried six versions of dOid before this one, and they do not all behave alike. The copies it distributed as 0.1.1, 0.1.2 and 0.1.3 transmitted nothing at all; §2.5 lists the sentences that were true of them and are not true of this one. 0.1.4 was the first that collected. 0.2.0 collected one moment more than this version does — the fourth moment §2.1 and §2.5 describe — and later versions neither send it nor keep what it wrote. 0.3.0 reports the same three moments as this version but does not attach the selected mode combination or its rules/scoring revision. If you are reading this page while holding an older copy of dOid that came from Google Play, §2.1 does not describe every field your copy sends.

A version number names a release, not one file

Every sentence on this page about 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2.0 or 0.3.0 is about what Google Play distributed under those names, and that qualifier is doing real work rather than being lawyerly. Builds were made while the game was being developed that were never put on any store, and they carry the same version numbers as the releases that were. They are not all the same software. In particular, some builds numbered 0.1.3 sent usage and crash information to the same services §2.1 names, although they did not send every field this version does — they were made after the developer switched collection on and before the version number was raised to 0.1.4. Only one 0.1.3 was ever released through Google Play, and that one collects nothing.

The version line the game draws is identical in every one of them, so it cannot tell them apart and neither can this page. If your copy of dOid did not come from Google Play, write to the address in §9 with the version number you see and you will be told what that particular build does.

And if the number on your menu screen is not the number at the top of this page, this page does not describe your copy. That holds on any phone and for any number — an older release, a build given to testers, or a build that was never on a store at all. Write to the address in §9 with the number you see, and you will be told what that build sends, what it stores, and how it differs from what is described here. Nothing on this page should be read as describing a build it does not name.

9. Contact

support@doid.online

This is the same address shown on the app's store listing. Write to it about anything in this document.