mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
fix(moonlaunch): disclose the telemetry and analytics the game actually sends
The policy described leaderboards and cloud save as the only things that leave the device, and stated outright: "This data is not transmitted to our servers unless you use the leaderboard or cloud save features." That is not true. - Gameplay telemetry POSTs to api.such.software on every platform, automatically rather than opt-in, tagged with the anonymous device ID, display name and platform. It carries level starts and completions with times and stars, how a run ended (cause, hazard, speed, fuel, progress through the level), rewarded-ad and share actions, purchase attempts, and error messages. None of it was disclosed. - Google Firebase (Analytics and Crashlytics) ships in the mobile builds and receives the same device ID as a user property alongside app version, device model, OS version and language. It was not mentioned anywhere, including in the third-party recipients table. - Cloud save uploads automatically on every save, not only on an explicit action, and its payload now also carries store purchase receipts (the ledger that stops a purchase being credited twice). - The page claimed Google AdSense serves ads on the web build. It does not: web/custom_shell.html records that the AdSense placeholders were removed and web monetization is handled in-game. Removed the claim and the AdSense row from the recipients table. Left as-is: the statement that iOS serves non-personalized ads and does not access the IDFA. No code path presents the ATT prompt, so the identifier stays zeroed and that claim holds.
This commit is contained in:
@@ -21,7 +21,7 @@ export default function SuchMoonLaunchPrivacyPage() {
|
|||||||
<div className="glass-card mt-6">
|
<div className="glass-card mt-6">
|
||||||
<header className="mb-8 pb-6 border-b border-border">
|
<header className="mb-8 pb-6 border-b border-border">
|
||||||
<h1 className="text-3xl md:text-4xl font-bold">Privacy Policy for Such Moon Launch</h1>
|
<h1 className="text-3xl md:text-4xl font-bold">Privacy Policy for Such Moon Launch</h1>
|
||||||
<p className="text-muted-foreground mt-2">Last Updated: May 20, 2026</p>
|
<p className="text-muted-foreground mt-2">Last Updated: August 14, 2026</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div className="prose dark:prose-invert max-w-none">
|
<div className="prose dark:prose-invert max-w-none">
|
||||||
@@ -61,8 +61,9 @@ export default function SuchMoonLaunchPrivacyPage() {
|
|||||||
|
|
||||||
<h3>Advertising Data (Mobile & Web Only)</h3>
|
<h3>Advertising Data (Mobile & Web Only)</h3>
|
||||||
<p>
|
<p>
|
||||||
We use <strong>Google AdMob</strong> (mobile) and <strong>Google AdSense</strong> (web) to display
|
We use <strong>Google AdMob</strong> to display advertisements in the mobile
|
||||||
advertisements. These services may collect and use data to show you personalized ads. This data may include:
|
(iOS and Android) builds. The browser and desktop builds show no third-party
|
||||||
|
advertising. These services may collect and use data to show you personalized ads. This data may include:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Device identifiers (Advertising ID)</li>
|
<li>Device identifiers (Advertising ID)</li>
|
||||||
@@ -117,7 +118,9 @@ export default function SuchMoonLaunchPrivacyPage() {
|
|||||||
<li>Your chosen display name (randomly generated by default, editable)</li>
|
<li>Your chosen display name (randomly generated by default, editable)</li>
|
||||||
<li>Your game scores, star ratings, and level completion times</li>
|
<li>Your game scores, star ratings, and level completion times</li>
|
||||||
<li>A randomly generated anonymous device ID</li>
|
<li>A randomly generated anonymous device ID</li>
|
||||||
<li>Your game save data (upgrades, skins, progress) for cloud backup</li>
|
<li>Your game save data for cloud backup — upgrades, skins, progress, wallet
|
||||||
|
balance, settings, and the store purchase receipts used to stop a purchase
|
||||||
|
being credited twice</li>
|
||||||
<li>Your device platform (e.g. "Android", "iOS", "Web")</li>
|
<li>Your device platform (e.g. "Android", "iOS", "Web")</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
@@ -135,7 +138,33 @@ export default function SuchMoonLaunchPrivacyPage() {
|
|||||||
<li>Premium purchase status (ad removal)</li>
|
<li>Premium purchase status (ad removal)</li>
|
||||||
<li>Death count and lifetime statistics</li>
|
<li>Death count and lifetime statistics</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>This data is not transmitted to our servers unless you use the leaderboard or cloud save features.</p>
|
<p>
|
||||||
|
Cloud save uploads automatically whenever your progress is saved, so this data
|
||||||
|
reaches our servers without a separate action from you. See the next section for
|
||||||
|
the gameplay events we send.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Gameplay Analytics</h3>
|
||||||
|
<p>
|
||||||
|
On every platform, the App sends gameplay events to our own backend at{" "}
|
||||||
|
<strong>api.such.software</strong>. This is automatic rather than opt-in, and it is
|
||||||
|
how we balance level difficulty and find bugs. Each batch is tagged with your
|
||||||
|
anonymous device ID, your display name, and your platform, and contains:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Levels started and completed, with times, star ratings, and Moonrocks collected</li>
|
||||||
|
<li>How a run ended — the cause of death, which hazard, your speed and fuel at
|
||||||
|
the time, and how far through the level you were</li>
|
||||||
|
<li>Whether you chose to watch a rewarded ad, shared a score, or saw a rating prompt</li>
|
||||||
|
<li>Purchases you start and whether they complete</li>
|
||||||
|
<li>Error messages, so we can fix crashes and faults</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
The mobile builds additionally include <strong>Google Firebase</strong> (Analytics and
|
||||||
|
Crashlytics), which receives the same anonymous device ID as a user property along with
|
||||||
|
your app version, device model, operating-system version, and language. We do not send
|
||||||
|
Google your real name or email, because the App never asks for them.
|
||||||
|
</p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
@@ -171,9 +200,9 @@ export default function SuchMoonLaunchPrivacyPage() {
|
|||||||
<td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Link</a></td>
|
<td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Link</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Google AdSense</td>
|
<td>Google Firebase (Analytics, Crashlytics)</td>
|
||||||
<td>Advertising (web)</td>
|
<td>Usage analytics and crash reporting (mobile)</td>
|
||||||
<td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Link</a></td>
|
<td><a href="https://firebase.google.com/support/privacy" target="_blank" rel="noopener noreferrer">Link</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Google Play Games Services</td>
|
<td>Google Play Games Services</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user