Current Collection
PunchAGuy currently collects server gameplay state when the backend flag is enabled:
- User ID: SpacetimeDB owner identity, display name, profile row, leaderboard identity, and hashed Sign in with Apple account-link key after account recovery is enabled.
- Gameplay Content: active fighter state, combat events, corpses, pickups, map leader, score records, gems, equipped outfit, equipped KO effects, and owned cosmetics.
- Usage Data / Product Interaction: private analytics rows for joins, shop opens, purchase attempts, punched-screen choices, gameplay starts, block/punch/parry/KO events, disconnects, and account deletion. Completed PvE runs also submit one compact private combat digest containing aggregate outcome, actor-pair, contact-distance/facing, bot skill/persona counts, and at most 24 representative timing samples; it does not contain names, touch coordinates, frames, or world positions.
- Diagnostics / Performance: reducer latency estimates, reconnect timing, fanout/latency harness output, server-side error rates, and sanitized Apple MetricKit crash summaries when those are logged for operations.
- Purchase History: gem grants, owned cosmetics, and payment-provider transaction references once StoreKit/Stripe payment paths are live. Payment-provider transaction references are retained only in private audit ledgers and are not published in player profiles or public combat events.
- Customer Support / Safety Data: private abuse report rows with reporter, reported player, reason, context, status, timestamp, and private review history.
Payment card details should not be collected by PunchAGuy. iOS payment details stay with Apple through StoreKit. Web payment details stay with Stripe Checkout.
Data Not Collected
The current app does not collect:
- Precise or coarse location.
- Contacts.
- Photos or videos.
- Microphone/audio recordings.
- Advertising ID.
- Browsing history.
- Health, fitness, financial, or sensitive personal data.
- Third-party advertising or tracking data.
App Store Privacy Label
Declare these data types as collected and linked to the user:
- Identifiers: User ID.
- User Content: Gameplay Content.
- Purchases: Purchase History after paid gems/cosmetics launch.
- Usage Data: Product Interaction.
- Diagnostics: Performance Data and Crash Data.
- User Content or Customer Support: abuse report context.
Use purposes:
- App Functionality: account/profile, multiplayer, leaderboard, cosmetics, purchases, support, abuse response, and account deletion.
- Analytics: balancing, retention, latency, crash/performance quality, and funnel/churn analysis.
Tracking:
- No tracking.
- No third-party advertising.
- No sale or sharing with data brokers.
Optional disclosure candidates:
- One-off customer support messages may be optional only if they remain user-initiated, infrequent, clearly disclosed in the form, and unrelated to primary gameplay. Abuse reports are now part of core safety/moderation and should be disclosed.
Retention Policy
Recommended production retention:
- Account/profile, gems, owned cosmetics, and purchase-grant ledger: retain while the account exists; keep payment audit rows as long as required for fraud, tax, refund, and platform-dispute handling.
- Account recovery links: retain while the linked account exists; delete or unlink hashed account-link rows on account deletion.
- Public leaderboard/profile fields: retain while the account exists; remove or anonymize on account deletion.
- Active fighter rows: current session only; delete on leave/account deletion or disconnect timeout.
- Corpse rows: rolling 15 rows per map; remove owned corpse rows on account deletion.
- Combat event logs: retain 30 days in production unless needed for active abuse/fraud investigations.
- Private analytics events and per-run PvE combat digests: retain 90 days in production; aggregated metrics may live longer if not user-linked.
- Crash/performance logs and summaries: retain 90 days.
- Support/abuse reports: retain 1 year or until investigation closure, whichever is longer, then anonymize unless legal/safety needs require more.
Sources
- Apple App Privacy Details: https://developer.apple.com/app-store/app-privacy-details/