Privacy Policy
Last updated: September 29, 2026
This policy explains how Reversi: 80 Days Patent War (the "App") handles information. The App does not collect your name, email address, phone number, or date of birth. However, the app version distributed through the App Store / Google Play shows ads, so the advertising provider obtains an advertising identifier (Section 5).
1. Summary
- The App shows ads. Ads are served by Google (AdMob), which obtains an advertising identifier.
- If you buy Premium (a paid item), no ads are shown at all. Buying it is optional; every game feature remains available for free.
- We do not collect information for advertising ourselves. All we receive is aggregated impression counts and revenue figures.
- We do not use any analytics tools (such as Google Analytics) or any third-party crash-reporting tool (such as Firebase Crashlytics or Sentry) inside the App. We do use Google Analytics on our introduction page and our column on the web, and only there, to see how those pages are used (Section 5). We do, however, send a record to our own server when the App runs into a problem, so that we can find the cause (Section 10). You can turn this off in Settings at any time.
- No account registration is required. We do not collect your name, email address, phone number, or date of birth.
- The App does not request access to your location (GPS), contacts, photos, camera, or microphone.
- Most information about your games is stored only in your device's browser storage (localStorage).
- If you play online matches against other people, the match results and your display name (the one you set on the Profile screen or, if you have not set one, a provisional display name assigned automatically by the server) are stored on the server and shown to your opponents and on the leaderboard. Even if you never play online, using the AI features (the AI coach's summary and AI reviews) causes an identifier to be recorded on the server for rate limiting (Section 4).
2. Information stored only on your device
The following information is stored in your device's browser storage (localStorage). Apart from online matches (Section 3), the AI features (Section 4), and problem reports (Section 10), none of it is sent anywhere. When you use the AI features, only your display-language setting is sent, to tell the AI which language to write in.
- Display settings (othero.prefs.v1)
- Color theme, board texture, disc style, amount of HUD information, sound effects on/off, BGM on/off, haptic feedback on/off, display of legal moves, reduced animation, display language, and whether "The AI's thoughts" is enabled.
- Profile (othero.profile.v1)
- Your display name (default "Anonymous"; a display name you set yourself is also sent to the server when you connect to an online match, while the default is not sent and the server uses a provisional display name instead), the identifier of the avatar you selected, and the highest AI level you have beaten.
- Match records (othero.records.v1)
- For each game: when it was recorded, whether it was against the AI or a person, the AI level, the color you played, the result, how the game ended, the final disc count, and the move list (a string of move coordinates). Older records beyond the storage limit are discarded automatically.
- Skill estimate (othero.skill.v1, othero.skillTally.v1)
- Your estimated skill rating, the history of recent results used for the estimate, the match intent you selected, whether you have completed the skill assessment, and a per-game tally of skill metrics.
- Skill assessment progress (othero.onboarding.v1)
- The assessment stage, results of games played during the assessment, the level currently being played, when the assessment started, and the final estimate.
- Achievement progress (othero.achievements.v1)
- Completion status and progress for each achievement, and the version of the achievement data.
- Journey progress (othero.journey.v1, othero.journey.grandfather.v1)
- Chapter progress, sealed chapters, the number of playthroughs, the patent for each leg (its grade and when it was earned), and an unlock floor preserved for players who were already playing before the journey was introduced.
- "The AI's thoughts" (othero.advice.v2)
- The short lines shown during games and the state of that display. The lines are chosen entirely on your device, and nothing is sent anywhere for this feature.
- AI reviews (othero.review.v2)
- The text of post-game AI reviews you have received. The network communication involved in generating them is described in Section 4.
- Device identifier (othero.clientId, othero.auth.migratedFrom)
- A UUID generated automatically for each device and used to connect to online matches. It is not linked to your name, email address, or similar. A value recording an identifier issued under an earlier scheme is stored alongside it.
- Anonymous authentication session (othero.auth.v1)
- Only when server features are enabled. Session information (access token) for your anonymous account.
- Ad and Premium state (othero.ads.v1, othero.ads.remote.v1)
- The number of games completed and when an ad was last shown (used to space out ads), and a cached copy of operational settings for how ads are shown.
- Feature switches and splash-screen cache (othero.features.v1, othero.splash.v1)
- A cached copy of the feature on/off switches that we change during operation, and the splash-screen display duration. These copies let the App start without a network request and contain no information about you.
- Review-prompt state (othero.reviewPrompt.v1, othero.reviewPrompt.remote.v1)
- How many times and when we have asked you to rate the App on the App Store or Google Play, the number of games played, the days you played, the time of your last purchase, and a cached copy of the operational settings for how often to ask. Used only to avoid asking the same person repeatedly and kept on your device. These values themselves are never sent.
- Crash records (othero.crash.v1)
- When the App crashes, the time, the location in the App, a summary of the error, the screen being shown, and the device and version are stored, up to the 5 most recent entries. You can view, copy and delete this on-device copy by tapping the version number in Settings seven times in a row. A summary of the same information is also sent to our server (Section 10; you can turn this off in Settings).
- Problem reports waiting to be sent (othero.diag.queue.v1)
- Problem reports that could not be sent yet. They are kept in case you are offline or the App closes before sending, and are removed once sent. Anything older than 7 days is discarded without being sent.
- The number attached to problem reports (othero.diag.install.v1)
- A random number used only to tell whether the same problem is happening repeatedly on one device or across many devices. It was generated on this device when the App was installed. It is unrelated to any device identifier, advertising identifier or account, and cannot identify you.
- The setting that stops problem reports (othero.diag.optout.v1)
- Written only when you turn sending off in Settings. "Delete all saved data" also clears this setting, returning it to the default (sending).
- Audio recovery method (othero.audioRecovery.v1)
- Your choice of how the App restores sound after returning from another app on iOS. Present only if you changed it in an earlier version. The current version no longer writes this value, but it still reads one saved earlier.
- Development and testing settings (othero.adminUnlocked.v1, othero.advice.endpoint.v1, othero.advice.generated.v1)
- Whether the admin screen has been opened, and a runtime override of the connection endpoint. These are not written during normal use.
The names in parentheses are the storage keys in the browser storage (localStorage). All of them begin with "othero." and are removed together by the App's "Delete all saved data" action. An automated check confirms that this list does not omit any key actually in use.
Your account in the App is anonymous and is tied to the browser storage (localStorage) of this device. If that storage is lost — for example, when browser data is cleared, the App is uninstalled, the device is reset, or a private browsing session ends — there is no way to restore the same account. Your game history, skill estimate, achievements, and online rating will all be lost. A feature for carrying an account over to another device is not currently offered.
3. Information sent to and stored on the server for online matches
Only when you start an online match against another person is the following information sent to the match server. If you only play against the on-device AI, none of the transmissions in this section occur.
- On connection
- The identifier (UUID) generated automatically for your device, and the protocol version. To keep the connection alive, a periodic keep-alive signal is sent.
- During a game
- The coordinates of your moves, the game ID, the move number, and requests to resign or resynchronize. Because the server adjudicates the game, every move is validated on the server.
- Stored when a game ends
- The game ID, the player identifiers for Black and White, the result, how the game ended, the final disc count, the move list, the number of moves, the start and end times, and whether the game was rated.
- Player information
- Your display name (the one you set on the Profile screen, 1–12 characters; if you have not set one, a provisional display name assigned automatically by the server, for example "Player#4821"), the time you last changed your display name, your avatar identifier, creation and update timestamps, and the time of last access. Your display name and avatar are visible to your opponents and on the leaderboard. The time of last access and the time of the last change are not visible to other users.
- Results
- Rating, total games played, wins, losses, and draws.
- Network-level information
- By the nature of network communication, the IP address you connect from reaches the server. It is handled only to the extent needed to establish the connection and prevent abuse.
On the leaderboard, the display names, avatars, ratings, and overall records of top players are visible to other users. If you report your opponent's display name during a game, we record on the server the identifiers of the reporting and reported users, the match ID, and the time of the report (there is no free-text field for a reason). A display name that receives a certain number of reports is reset to a provisional display name, and that fact is recorded on the server.
4. Communication involving AI
The App has two features that use generative AI (Google Gemini). In both cases, our server-side function (a Supabase Edge Function) acts as an intermediary; the App never connects to the generative AI directly. Because the two features differ in what triggers a transmission and in what is sent, they are described separately.
- (1) The AI coach's skill summary — only when you request it
- Data is sent only when you request a summary on the match records screen. What is sent is the scores on the five skill axes calculated on your device, the sample count for each axis, your total number of games, and your display language. The move list itself is not sent. This is a Premium feature.
- (2) Post-game AI review — only when you request it
- Data is sent only when you request a review after a game. What is sent is the move list (a string of move coordinates), the color you played, the result, the final disc count, the level of the AI you played, an evaluation of each move (move number, coordinates, change in evaluation, and so on), and your display language. This is available without buying Premium.
Features (1) and (2) send data only when you request them, so if you do not request them, no communication described in this section occurs. Note that "The AI's thoughts" — the lines your opponent speaks during a game — are chosen entirely on your device to match what happens on the board. Neither the generative AI nor our servers are involved.
Only the contents of games and skill metrics are passed to the generative AI (Gemini); your name, email address, account identifier, display name, and IP address are not included, and no individual can be identified from that data. Separately, an account identifier may be sent to our intermediary server for rate limiting and entitlement checks (it is not passed to the generative AI).
The API key for the generative AI exists only on the server and is not included in the App. To prevent abuse and runaway costs, our server applies a rate limit to each call and, in order to count calls, records the following identifiers in our database.
- When you are not signed in
- A value derived from the IP address you connect from, in a form from which it cannot be recovered (a salted hash). The raw IP address is not stored.
- When you are signed in with an anonymous account
- The account's identifier (UUID) itself. This avoids penalizing other people on a shared connection and keeps the limit attached to you even if you connect from somewhere else. This identifier is not linked to your name, email address, or similar.
These records are used solely for rate-limit counting. Their retention period is described in Section 9.
The skill-summary and review texts are both generated automatically by generative AI. Their accuracy is not guaranteed.
5. Ads, Premium (paid features) and analytics on our introduction page and column
The App is distributed through the App Store / Google Play and shows ads between games. The official website only presents information about the App and hosts these documents; no ads are placed on the website.
Ads are served through Google's AdMob. To show ads, prevent fraudulent clicks, and measure effectiveness, Google obtains the following information.
- The advertising identifier (the Android advertising ID or the iOS IDFA). This is an identifier assigned to your device, which you can reset or delete yourself at any time. It is not linked to your name or email address.
- An approximate location inferred from your IP address — coarser than city level, not a street address or coordinates.
- Technical information such as device model, OS version, language, and screen size.
- How many times an ad was shown and whether it was clicked.
Google obtains and uses this information in its capacity as an advertising provider; we do not receive it. All we receive is aggregated impression counts and revenue figures. For how Google handles it, see "How Google uses information from sites or apps that use our services" (https://policies.google.com/technologies/partner-sites).
You can stop ads, or make them non-personalized, as follows.
- Buy Premium
- Once you have bought Premium, no ads are shown at all: the App does not even load ads, so no ad-related communication occurs.
- Delete your advertising ID on Android
- On your device, go to Settings → Google → Ads to delete or reset your advertising ID. After deletion, ads are no longer personalized to your interests (ads are still shown).
- Decline tracking on iOS
- Choose "Ask App Not to Track" when the App asks for tracking permission, or change it later under Settings → Privacy & Security → Tracking. Ads are still shown if you decline, but they are not personalized to your interests.
We use RevenueCat (RevenueCat, Inc., United States) for purchases of Premium and cosmetic items and for keeping track of what you have bought. Payment itself is processed by the App Store / Google Play; neither we nor RevenueCat obtain payment details such as credit card numbers.
RevenueCat records whether a purchase was made, when it was made, when it expires (for a subscription), and an identifier corresponding to your device or anonymous account. We use this only to determine whether ads should be hidden for you and whether paid features are available to you, and for no other purpose.
We also store what you have bought (the identifier of the product purchased, which store it was purchased from, whether it is active, and, for a subscription, its expiry date) in our database (Supabase), so that the App can determine whether the paid features are available to you without querying the purchase records every time it opens. No payment details such as your name, email address, or credit card number are stored.
- Analytics on our introduction page and column (web)
- On our introduction page (https://reversi.aicreonext.com/ and its versions in each language) and on our column (the articles under https://reversi.aicreonext.com/column/) we use Google Analytics, provided by Google LLC (including by way of Google Tag Manager), to see how these pages are used. We use it to improve these pages and to see which link led someone to the store. We do not send anything that identifies you, such as your name or email address. The App itself (the version distributed on the App Store and Google Play) does not run this measurement. The following is sent:
- The URL of the page you viewed and the site you came from (the referrer).
- The type of device and browser, the screen size, and the language.
- An approximate region estimated from your IP address. The IP address itself is not stored.
- An identifier stored in a cookie (such as _ga). You can delete it at any time in your browser settings.
- The fact that you pressed a store button (App Store or Google Play), including where you pressed it (on the introduction page: the top, the bottom, or the bar at the foot of the screen; in a column article: partway through or at the end).
- The fact that you pressed a link in the "Related apps" section at the end of a page that leads to one of our other games or to our company website, including the destination of the link and where you pressed it (at the end of the introduction page or of a column page).
- The date and time of the visit and how long the page was open.
The measurement data may be sent to Google’s servers, including www.google.com in addition to google-analytics.com. For visits from the European Economic Area, the United Kingdom and Switzerland, we do not measure anything until you consent. We also do not measure anything if your browser sends “Do Not Track” or Global Privacy Control. For how Google handles the data, see the Google Privacy Policy (https://policies.google.com/privacy); to stop the measurement, see the Google Analytics Opt-out Browser Add-on (https://tools.google.com/dlpage/gaoptout).
6. Purposes of use
- Running games, determining results, and recording and displaying game results
- Estimating your skill and suggesting an appropriate difficulty level and opponents
- Calculating ratings for online matches and displaying the leaderboard
- Determining and displaying achievements
- Keeping the display, sound, and control settings you have chosen
- Generating the AI coach's skill summary (when you request it)
- Generating post-game AI reviews (when you request them)
- Rate limiting the features that use generative AI, and preventing abuse and runaway costs
- Showing ads in the app version (not done if you have bought Premium)
- Providing Premium and checking whether you have bought it
- Detecting and preventing cheating and abuse, and investigating failures
- Investigating and fixing problems that occur in the App (Section 10; can be turned off in Settings)
We do not use information for any purpose other than those listed above. We do not use the match records, achievements, or settings on your device for ad targeting or for analyzing your interests, nor do we pass them to advertising providers.
7. Information we do not collect
The App does not obtain any of the following information. This is not merely a statement of policy: no implementation to collect it exists. One exception: in the administrative features used by the operator itself (web version only; the app version distributed through the App Store / Google Play has no entry point to them), the operator signs in with an email address and password. That is entered by us as the operator; there is no screen where you as a user enter such information. Information that Google obtains for advertising is described separately in Section 5 (it is not obtained by us, so it is not listed here).
- Analytics and behavioral measurement (Google Analytics, Firebase Analytics, or any other analytics tool). No analytics tool is built into the App. We do, however, run analytics on our introduction page and our column on the web (Section 5).
- Third-party crash-reporting or error-collection tools (such as Firebase Crashlytics or Sentry). No information reaches those companies. We do, however, send problem reports to our own server (Section 10, which describes what is sent and how to stop it).
- Name, email address, phone number, postal address, date of birth, or gender.
- Precise GPS location, contacts, calendar, photos, camera, microphone, or health data.
- Credit card numbers or other payment details. Payment for Premium and cosmetic items is processed by the App Store / Google Play, and we do not receive such information.
- Browser history, or your use of other apps.
8. Disclosure to third parties
Except where required by law, we do not provide the information we obtain to third parties. We do not sell it.
We do, however, use the following service providers, and information is processed on their servers. Any of them may have servers located outside Japan.
- Supabase (database and authentication)
- Used for online match records, player information, results, what you have bought, and rate-limit counting for the features that use generative AI. It also stores problem reports (Section 10). A service provider engaged by us.
- Google (Gemini API)
- Used to generate the AI coach's skill summary and post-game AI reviews. Only the contents of games and skill metrics are sent; no information that could identify you is included. A service provider engaged by us.
- Google (AdMob, ad serving)
- Used to serve ads in the app version. For this service Google is not a provider engaged by us; it obtains and uses advertising identifiers and related data as an independent advertising provider. What is obtained and how to stop it are described in Section 5.
- Fly.io, Inc. (online match server)
- Used for matchmaking and running online matches. Moves, ratings, and results are processed on this server. A service provider engaged by us; the server is located in Japan (Tokyo).
- RevenueCat, Inc. (keeping track of purchases)
- Used to record and verify purchases of Premium and cosmetic items. A service provider engaged by us. It does not handle payment details.
- Google (Google Analytics — analytics for our introduction page and column)
- Used to analyse how our introduction page and our column on the web are used. Google is not a service provider engaged by us; it obtains and uses the information as an independent business. What is obtained, and how to stop it, is set out in Section 5.
When personal data is provided to a third party located in a foreign country, we provide on this page, in accordance with the Act on the Protection of Personal Information of Japan, the name of the destination country and information about that country's personal-data protection regime. If you would like more detailed information, please contact us at the address given below.
9. Retention periods
- Data on your device
- Kept until you delete it, or until your device's or browser's storage is lost. Match records have a storage limit, and the oldest records beyond it are discarded automatically.
- Data on the server
- Online match records, player information, and results are kept until you request deletion. Because a match record is shared with your opponent, deleting it for you does not remove it from your opponent's history; on deletion it is retained in a form no longer linked to you (anonymized).
- Unused anonymous accounts
- Anonymous accounts that have played no games and hold no paid entitlement are deleted automatically 30 days after last use (including the identifier, display name, avatar selection, and settings). Accounts with at least one recorded game, or with a paid entitlement, are not subject to this automatic deletion.
- Problem reports (on the server)
- Deleted automatically 90 days after the same problem last occurred, or 365 days after it was first recorded, whichever comes first. Deletion runs automatically every day.
- Data sent to generative AI, and rate-limit records
- The game and skill content sent to the generative AI is not stored on our server. Rate-limit counts (the identifiers described in Section 4) are recorded in our database, and entries older than 2 hours are deleted automatically in the course of subsequent calls. While no calls are being made, no deletion takes place either, so entries may remain until the next call. Raw IP addresses are never stored.
10. Problem reports
When the App runs into a problem (a crash, or an internal warning or error), we send a record to our server so we can find the cause. This exists so that we notice and fix problems without waiting for you to contact us.
- What is sent
- A summary of the error (including where in the App it occurred), the name of the screen being shown, the App version, the platform (iOS / Android / Web), a coarse description of the operating system and its generation (for example "iOS 18"), the display language, how many times the same problem occurred and when, and the random number described in Section 2 (othero.diag.install.v1).
- What is not sent
- We do not send your name, email address, account identifier, display name, match records, device identifier, advertising identifier, or anything that could identify you. We also do not send the detailed device string (the full User-Agent); it is reduced to the coarse generation above. Values that can appear inside an error message — text that looks like an email address, long strings that look like keys or tokens, and the query part of a URL — are masked before sending.
- Not linked to you
- These reports are sent without any sign-in credentials, so they cannot be tied to a particular user or account. The random number (othero.diag.install.v1) is used only to tell whether the same problem repeats on one device or occurs across many devices, and is never combined with any other information.
- When it is sent
- Reports are sent together when you close the App or switch to another app. If you are offline they stay on your device and are sent next time (anything older than 7 days is discarded without being sent).
- How to stop it
- Turn off "Send problem reports" in Settings and nothing further is sent. Reports sent before you turned it off cannot be deleted individually, because, as described above, they are not linked to you. Note that "Delete all saved data" also resets this setting to the default (sending).
- Retention
- See Section 9.
The copy kept on your device can be viewed, copied and deleted by tapping the version number in Settings seven times in a row.
11. How to delete your data
You can delete the match records stored on your device yourself at any time.
- Open the App's Settings screen.
- Tap "Clear local game data". To prevent accidental deletion, you will be asked to tap once more to confirm; the data is then erased.
To delete all data on your device, including settings, profile, and achievements, uninstall the App or delete this site's data from your browser settings. Doing so also discards your anonymous account, which cannot be recovered.
The player information about you stored on the server (your identifier, your display name, and the avatar you chose), the records of reports, and your online results are deleted together with your device data by "Delete all saved data" in Settings, on versions of the App in which that action also deletes server-side data. If you are using a version that does not, or if you are unable to perform the action, please contact us at the address given below; we will delete the same data, to the extent that we can verify the request comes from the account holder. On either route, the records of your online matches remain in a form from which your identifier has been removed, so that your opponents' records stay intact. Your purchases (your entitlements to Premium and to cosmetic items) are also kept, so that "Restore purchases" in each store can give them back without paying again. What is deleted and what remains is set out in full on the "Deleting your account and data" page. Requests for access, correction, and suspension of use are handled through the same contact.
12. Security measures
- Communication with the server uses encrypted connections.
- The database uses row-level access control (Row Level Security) so that no one other than the account holder can read or write their settings or match records.
- Ratings and overall results can be updated only on the server and cannot be modified directly from the App.
- The API key for the generative AI exists only on the server and is not included in the distributed App.
- Our policy is never to write credentials, tokens, or other secrets to logs, and this is enforced by automated checks.
13. Use by minors
The App is intended for people aged 13 and over. Because we do not collect age information, we cannot verify a user's age. Parents and guardians are asked to supervise their children's use as appropriate.
14. Changes to this policy
This policy may be revised in response to changes in the law or the addition of features. Revisions take effect when they are posted on this page. If a revision materially expands the types of information collected or the purposes of use, we will notify you in the App in advance.
15. Contact
For inquiries about this policy or about how information is handled, and for requests for access, correction, or deletion, please contact:
- Operator
- AICREO NEXT LLC (合同会社AICREO NEXT)
- contact@aicreonext.com