1. Scope and Controller
This Policy applies to the website houseduck.in and to the games and apps that Junhee Choi operates in Germany under the name House Duck (together, “our games”). The titles currently covered are the mobile game Quirky Ball (Android, iOS) and the arcade game 10key Survival. Future House Duck titles are covered by this Policy as well. Before a title processes data in a materially different way, we will add that processing here or publish a short title-specific supplement, which then applies together with this Policy for that title. Sections 2 to 12 describe Quirky Ball 2.0.0 and later and the website, unless stated otherwise. Section 13 describes 10key Survival and states which parts of sections 2 to 12 also apply to it. Section 14 describes support requests and House Duck’s internal operations tools; it applies to all our games and the website.
Controller: Junhee Choi, House Duck (하우스덕)
Address: Ringstr. 23, 61476 Kronberg im Taunus (Hessen), Germany
Email: support@houseduck.in
Phone: +82 10 7620 3959
This policy is a notice about personal-data processing. Acknowledging it or playing a game does not replace consent to optional analytics, advertising, or tracking. Consent for personal-data processing and consent for device storage/access are assessed separately under applicable law.
2. Information We Process
| Information | When and why it is processed |
|---|---|
| Account identifiers (guest identifier (UID) and identity-provider identifier) | A guest account is created when Quirky Ball is first used. If you optionally link a Google account (Android and iOS) or an Apple account (iOS), the provider identifier is stored for sign-in, account linking, and loading the same account on another device. If you sign in with an account that is already linked to another game account, that account’s saved progress is loaded and the current guest progress on the device is replaced. |
| Email address and profile name | Processed only to the extent you choose Google Sign-In or Sign in with Apple and the provider discloses them. Apple may provide a private relay address. To prevent invitation abuse, the server may check whether two linked accounts share the same sign-in email. |
| Game and account data | Nickname, display code, user-selected country/faction, profile icon, nameplate and other owned/equipped customization, progress and saved game state (for Quirky Ball, for example lab progress and run results), virtual currencies and items (such as gems, reagent and tickets), rankings, friends and gifts, invitation codes and invitation status, mailbox items, attendance and missions. Stored on the device and in Supabase. |
| Fair-play and reward records | Server-issued run tickets, play and reward records, and plausibility checks of time, score and currency changes, used to grant rewards correctly and to prevent cheating, duplicate rewards and abuse. |
| Purchase data | Product ID, store transaction ID or purchase token, purchase status, platform, the game account the purchase is linked to, restoration/refund status, and entitlement. House Duck does not receive full card or bank-account details. |
| In-app reports and support requests | If you send a Quick Report in the app settings, the text you enter (up to 2,000 characters) is stored with your account ID, app version, build number, platform and language so that we can investigate the problem; we see your current nickname next to the report. Support emails and the contact details needed to reply are processed to answer the request (see section 14). Please do not include passwords or payment details. |
| Advertising and device data | The Google Mobile Ads SDK (AdMob) may process IP-derived approximate location, app/ad interactions, diagnostics, advertising ID, App Set ID, and similar identifiers for ad delivery, measurement, error handling, and fraud prevention. |
| First-party usage analytics stored in Supabase (optional) | Only with the optional usage-analytics consent: app start/session, screen and button interactions, game start/end, ad request/impression/reward, purchase flow events, app version, platform, time-zone offset and distribution channel. This includes basic stability diagnostics: the code location (file and line) of client errors, and a flag when the app ended unexpectedly while it was open on screen (a crash or forced close), not when you closed it from the app switcher. Random installation/session identifiers are used and kept separate from the account UID; these events do not include the advertising ID. |
| Optional Firebase Analytics | Only with the same optional consent: Firebase Analytics may process automatically collected events, app-use information such as tutorial completion, and app/device information including an app instance ID. Declining does not restrict the game, and the choice can be changed or withdrawn at any time in the app settings. |
| Notification data | If you allow notifications, the push token, installation identifier, account link, platform, app version, language and delivery/open status (see below). |
| Device settings | Language, sound, vibration, graphics settings, your consent choices and the calculated age band are stored locally on the device. |
| Website network and storage information | The website is delivered through GitHub Pages. A browser makes requests to GitHub for page resources and delivery/security logs, may request YouTube thumbnails from Google at i.ytimg.com, and may request Supabase public endpoints: one returns public version information, and another returns aggregate homepage game score/play-count totals only, not individual record data. BGM files in the music panel are served by this website and load only when a visitor manually starts playback. A separate external YouTube playlist link opens that service when selected. Recipients of those requests may process IP address and HTTP request metadata. When a visitor selects a language, the house_duck_site_language key may be stored in browser localStorage. The email button opens the visitor’s email application; the website does not send the message to a website backend before the visitor sends it from that application. |
Our games are not designed to collect precise location, contacts, photos, camera, microphone, or other information unnecessary for the game. Sharing a result card uses your device’s share sheet; we do not receive what you share.
Notifications use Firebase Cloud Messaging (FCM) on Android and Apple Push Notification service (APNs) on iOS. Notification installation identifiers/tokens, account links, platform, app version, language, and delivery/open status may be processed by Google, Apple, and Supabase for delivery, device registration, and troubleshooting. Notification permission is optional and can be managed in device settings. It is separate from the optional usage-analytics consent; disabling notifications does not itself mean immediate erasure of all prior tokens or history.
3. Purposes and Legal Bases
- Providing the games, accounts, account linking and loading, rankings, Friend features, mailbox, invitations, purchases, restoration, in-app reports and support: contract performance or pre-contractual steps (GDPR Art. 6(1)(b)).
- Payment, refund, fraud checks, and legally required records: legal obligation (Art. 6(1)(c)) and legitimate interests (Art. 6(1)(f)).
- Security, fair play, stability, and error investigation necessary to operate and protect the service: legitimate interests (Art. 6(1)(f)). Essential account, currency, transaction, and security processing is separate from optional behavioral analytics.
- House Duck first-party usage analytics stored in Supabase (including the stability diagnostics above), Firebase Analytics, and the use of the tutorial-completion event for ad-campaign measurement: separate optional consent (Art. 6(1)(a)), withdrawable at any time.
- Personalized advertising and processing that requires tracking consent: consent (Art. 6(1)(a)), which may be withdrawn at any time.
- Limited/non-personalized advertising and fraud prevention: consent or legitimate interests where permitted by applicable law.
The legitimate interests are protecting accounts and transactions, preventing fraudulent scores or duplicate rewards, investigating errors, handling reports efficiently, and maintaining service stability. Random installation/session identifiers do not by themselves make data anonymous. Behavioral analysis such as screen navigation or button interactions is not treated as essential security processing, and accepting the terms alone does not satisfy any required consent.
4. Service Providers and Recipients
House Duck does not sell personal information to data brokers for money. However, disclosures for personalized advertising or ad measurement may fall within broader statutory definitions of sale or sharing in some jurisdictions; applicable choices and statutory rights remain unaffected. The following providers may process information as independent controllers or processors as applicable.
For customer data hosted in Supabase, House Duck remains the controller and Supabase processes that data as a processor acting on House Duck's instructions. Supabase's published Data Processing Addendum provides information about these roles.
| Service | Purpose |
|---|---|
| Supabase | Authentication, account linking/synchronization, game state, rankings/social features, mailbox, invitations, purchase entitlements/reward state, in-app reports, notification registration, first-party analytics storage, the public-version check, and aggregate homepage game score/play-count totals |
| Firebase Analytics and Google Ads (Google affiliates) | Optional app-usage analytics after you consent; with that consent, the tutorial-completion event may be used by Google Ads to measure our app-install campaigns (conversion measurement) |
| Google AdMob and User Messaging Platform (UMP) (Google affiliates) | Rewarded, interstitial, banner and native ads, and advertising-consent management |
| Google Sign-In, Google Play Billing, Firebase Cloud Messaging (Google affiliates) | Optional sign-in, Android in-app purchase, restoration and refund processing, Android notifications |
| Google Gemini API (Google affiliates) | Short summaries and categories of support messages and in-app reports for the operator, after email addresses, links, display codes, phone numbers and long identifiers are removed. Only the operator uses the result; it does not decide anything about you. |
| Google Workspace (Gmail) and Google Identity Services (Google affiliates) | Receiving, storing and answering email sent to support@houseduck.in and business@houseduck.in; staff sign-in with Google to the House Duck operations console (section 14) |
Google YouTube thumbnail service (i.ytimg.com) | Delivery of YouTube thumbnail images requested by the browser |
| Sign in with Apple, App Store/StoreKit, APNs (Apple affiliates) | On iOS, optional sign-in, in-app purchase, restoration and refund processing, and notifications |
| GitHub Pages | Static hosting, website-served BGM files, and security/delivery logs for houseduck.in |
Quirky Ball uses Google AdMob as its only ad network; no other ad network or mediation SDK is active. If we add one to any of our games, we will update this Policy and the in-app notice before it is used.
- Google Privacy Policy
- Firebase Privacy and Security information
- Apple Privacy Policy
- Supabase Privacy Policy
- GitHub Privacy Statement
5. Processing Countries and International Transfers
House Duck operates and processes personal data in Germany. The primary Supabase database for our games is in Ireland (AWS eu-west-1). This is the database location, not a promise that all support, delivery, or log processing remains in Ireland. The table distinguishes the confirmed primary location from providers’ published processing scope.
| Recipient/service and contact route | Countries and scope | Data, purpose, and timing |
|---|---|---|
| Supabase (Supabase DPA; privacy@supabase.io) | Primary database: Ireland. The published DPA names Supabase Pte. Ltd. (Singapore); Supabase, Inc. is listed as a support subprocessor. Global support and subprocessor processing are separate. | Guest/account identifiers, game state, purchase entitlements, in-app reports, and first-party analytics. Encrypted network transmission/storage when the app runs, authenticates, synchronizes, or records gameplay. |
| Google services (Google, Firebase) | United States and Google’s published global facilities. Google LLC, Google Ireland Limited, or other applicable affiliates process data depending on the service and user’s residence; storage is not Germany-only. | Information for optional analytics and ad measurement, ads/consent, optional sign-in, Android purchases, support email (Google Workspace), staff sign-in to the operations console, redacted support summaries, and website thumbnails. Sent when the relevant feature is used, subject to any required separate consent. Notification installation identifiers/tokens and delivery/open status may also be processed during notification device registration, delivery, and confirmation. |
| Apple services (Apple) | Apple states that data is generally stored in the United States. Apple Distribution International Limited in Ireland controls personal data relating to EEA, UK, and Swiss users; service-specific entities may differ. | Information for optional Apple sign-in, iOS purchases, restoration, and refunds, sent when you use those features. Notification installation identifiers/tokens and delivery/open status may also be processed during notification device registration, delivery, and confirmation. |
| GitHub Pages (GitHub) | United States and other countries disclosed by GitHub. GitHub, Inc., GitHub B.V., or the applicable entity processes the information. | IP addresses and request metadata when pages, images, or music are requested, for website delivery and security/delivery logs. |
The linked official privacy pages provide recipient contact routes. A primary database location or legal entity’s address is not an exhaustive list of that provider’s processing countries. See Supabase subprocessors for the Supabase subprocessor list and section 6 for retention.
Direct collection by House Duck as an overseas operator is distinct from subsequent disclosure, processing outsourcing, or storage with another overseas provider. Transfers subject to the Korean Personal Information Protection Act require a valid basis for the particular processing, such as separate consent or the statutory disclosures for outsourcing/storage necessary to perform a contract. Reading this notice or playing a game is not separate consent to international transfers.
Transfers outside the EU/EEA require an applicable adequacy decision, Standard Contractual Clauses (SCCs), or another valid safeguard. Supabase’s published DPA contains SCCs; Google, Apple, and GitHub describe their transfer mechanisms in their official policies. Contact support@houseduck.in for the countries, recipients, basis, and a copy of safeguards applicable to particular processing.
Optional analytics can be declined or withdrawn in settings; advertising choices can be managed through Ad Privacy Settings. Optional sign-in may also be skipped. Server-based game services cannot readily be provided without the required Supabase account/synchronization processing. Contact support to object or request deletion; we will explain affected features and available actions in your case. Making a rights request is not itself grounds for adverse treatment.
6. Retention
- Detailed play, season and weekly records and account-separated first-party analytics events: normally 28 days from the record-specific time explained below.
- Account, current synchronized state, best records, progress and fair-play/reward records: until account deletion.
- In-app reports: while needed to handle the report, and no longer than until account deletion.
- Mailbox items: deleted 90 days after they are claimed or expire.
- Entitlements, transaction references, refund and fraud records: as needed to support the purchase or for the applicable statutory retention period.
- Support emails: as needed to resolve the request and handle disputes.
- Local settings: until the app or device data is deleted.
- Information independently held by store, sign-in, advertising, analytics, and hosting providers: under each provider's retention policy and settings.
How retention is calculated: daily cleanup removes data older than 28 days based on the play time for detailed gameplay, the update/achievement time for season/weekly records, and server receipt time for first-party analytics. The next daily run can normally add up to one day after that threshold. The 28-day window does not apply uniformly to Firebase analytics, push tokens, or providers’ independent logs.
The app-managed unsent first-party analytics queue and pending Firebase custom-event queue expire 24 hours after event creation. Expired entries are discarded at the next queue check or before transmission; both queues are also discarded upon withdrawal or account switching. This does not mean deletion occurs at exactly 24 hours while the app is closed. It does not set a blanket limit for Firebase SDK internal storage or providers’ independent retention, and does not guarantee immediate deletion of information already transmitted.
7. Account Deletion
You can delete your game account in the app under Settings → Delete Account or follow the external deletion instructions. The account profile, synchronized state, progress, friends and social connections, mailbox, invitations, in-app reports and fair-play records linked to the account are deleted and cannot be recovered; a Sign in with Apple link is also revoked with Apple. Some detailed play records may remain until the 28-day threshold described in section 6 and the next daily cleanup and are then deleted automatically. Minimal records strictly required for legal obligations, payment/refund handling, fraud prevention, or legal claims may remain until those purposes end. Store transaction records managed independently by Apple or Google are not deleted by deleting the game account; restorable purchases can later be restored to a new game account as described in the Terms.
8. Advertising and Analytics Consent Choices
- Optional usage analytics: one optional choice jointly controls House Duck first-party usage analytics stored in Supabase (including the stability diagnostics in section 2) and Firebase Analytics (including automatically collected events and tutorial completion). Users aged 18 or over make an explicit choice that is not preselected, separate from required terms acceptance and advertising consent. Declining does not restrict the game. Essential account, currency, transaction, and security processing is separate.
- The choice can be changed or withdrawn at any time in the app settings (“Optional usage analytics”). Withdrawal stops future collection and transmission for both optional analytics systems, discards the app-managed unsent queues, and resets the Firebase Analytics data on the device. It does not affect processing lawfully completed before withdrawal; deletion of information already transmitted follows sections 6 and 9.
- Ad-campaign measurement: we promote Quirky Ball with Google Ads app campaigns. Only if you gave the optional usage-analytics consent, the Firebase tutorial-completion event may be used by Google to count how many installs from those campaigns finished the tutorial (conversion measurement). Google may link this to its own advertising data under Google’s policies. Without that consent, no such event is sent.
- Older app versions: the Firebase-only notice and setting in older Quirky Ball 1.x versions such as 1.1.2 (build 53) control Firebase Analytics only, not first-party analytics stored in Supabase. A previous Firebase-only ON choice does not retroactively extend to the combined scope; a fresh explicit choice on the new notice is required.
- Ads: Quirky Ball shows Google AdMob rewarded, interstitial, banner, and native ads. A Google UMP message may be shown in regions that require consent, including the EEA, UK, and Switzerland. On iOS, Apple’s App Tracking Transparency (ATT) prompt is shown separately when cross-app tracking permission is requested.
- Where required, you can reopen Ad Privacy Settings in the app settings and can also manage advertising identifiers and tracking in device settings. Declining advertising consent does not prevent gameplay, but rewards conditional on completing an ad view may be unavailable.
- Whether advertising is personalized, limited, or non-personalized does not by itself settle whether consent is required. The requirement depends on applicable law and the particular storage or access to a device. In Germany, TDDDG Section 25 may require consent for applicable storage or access.
9. Your Rights
Subject to applicable law, you may request access, rectification, erasure, restriction, portability, objection, or withdrawal of consent by contacting support@houseduck.in. For requests to which the GDPR applies, we normally respond within one month. Where necessary because a request is complex or numerous, we may extend that period by up to two further months and will tell you within the first month, including the reasons. The right to lodge a complaint with a supervisory authority is unaffected. The competent authority in Hesse is Der Hessische Beauftragte für Datenschutz und Informationsfreiheit.
You may object to processing based on legitimate interests on grounds relating to your particular situation, and at any time to processing for direct marketing. Withdrawing analytics consent or resetting the device SDK does not mean that all previously stored server data is immediately erased; contact support separately about historical deletion. Korean users may also seek help through the personal-information complaint service (118) or the Personal Information Dispute Mediation Committee.
10. Children's Privacy
Our games are not directed to children under 14, or a higher minimum age required by local law. In Quirky Ball, you cannot enter the game before confirming your age (unknown age: 0) or if you are under 14. Users aged 14–17 can play, but ad SDK/Google UMP requests and optional usage analytics are disabled for them. Users aged 18 or over can proceed to the standard advertising-consent flow after accepting the required terms; ads are not requested without the required consent. You select your birth year and month on the age-confirmation screen; the age band is calculated only on the device. The day of birth is not requested, and the selected year/month is not saved or transmitted. Because the day is unknown, the age-14 and age-18 thresholds are conservatively treated as met only from the month after the relevant birth month. Only the calculated band is stored locally (0: unknown, 14: ages 14–17, 18: age 18 or over). This does not replace identity/age verification or any required parental authorization. If we learn that information from an underage user was processed, we will verify and delete it.
The game’s age-14 requirement is separate from the age for data-processing consent. Where local law requires parental or guardian authorization for consent-based processing, that authorization is required. In Germany, online consent-based processing covered by GDPR Article 8 generally requires parental authorization below 16; this is not a blanket prohibition on all gameplay. The on-device age-band calculation is not legal age verification or a parental-consent mechanism. Contact support about children’s data.
11. Security
House Duck uses reasonable safeguards including TLS, access controls, Supabase Row Level Security, least privilege, server-side purchase verification with Apple and Google, and duplicate-transaction controls. No transmission or storage method can be guaranteed completely secure.
12. Required Information and Automated Decisions
A guest UID, basic game state, and the Supabase-backed operations that store and synchronize them are required to provide Quirky Ball. Essential account, currency, transaction, and security processing is separate from optional analytics. Supabase-backed usage analytics and Firebase Analytics can be declined or withdrawn together; declining does not restrict the game. Without optional sign-in or advertising consent, some features (for example friends, invitations or loading your account on another device) or personalized advertising may be unavailable. Automated fair-play checks may withhold a reward or a ranking entry that fails a plausibility check; you can ask support for a human review. House Duck does not make solely automated decisions producing legal or similarly significant effects.
13. 10key Survival
10key Survival is a single-player arcade game in which you steer a 3D numeric keypad over a board of keyboard keys. It is offered through platforms and stores; “the platform” below means the platform or store through which you play or obtained 10key Survival (for example CrazyGames, Google Play, the Apple App Store or Steam). This section describes what House Duck processes for 10key Survival: on every platform for play, saves and the online rankings, and in the Android and iOS apps also for the House Duck guest account and in-app purchases. Sections 1, 9 and 14, the statements about Supabase in sections 4, 5 and 11, and, for in-app purchases, the statements about Google Play Billing and the App Store in sections 4 and 5 also apply to 10key Survival; the rest of sections 2 to 12 describes Quirky Ball and the website and applies to 10key Survival only where this section refers to it. Use of the game is governed by the 10key Survival Terms of Service.
Play and saves
10key Survival can be played offline. Your progress (levels, upgrades and the in-game parts called “scrap”), in the Android and iOS apps also your balance of gem keycaps, and your settings are saved only on your device or in your browser’s storage. House Duck does not receive this save. What our server keeps for the guest account and for purchases is described below.
Online rankings
10key Survival has online rankings (a weekly board and an all-time board) stored on House Duck’s server at Supabase, in the same House Duck project as our other games but in a separate part (schema) of the database.
- Viewing the boards: the game requests the public board entries (rank, display name, avatar image URL, score and level) without sending an account or player identifier. Like any web request, these requests carry your IP address and HTTP request metadata, which are processed to deliver the response and to protect the server. When the game starts, it also reads a small settings file from this website (
houseduck.in/10key/config.json, delivered by GitHub Pages, section 5) in the same way, without any identifier. - Sending records on CrazyGames: the game sends your results to our server only if you are signed in to your platform account (today: a CrazyGames account). If you play there without signing in, the game sends no records about you and no device identifier is created for you. There is no House Duck account on CrazyGames. Besides ranking records, the web version can send only the anonymous basic crash report for the first error of a session, without any identifier (see “Crash reports, daily usage counts and run records”).
- Sending records in the Android and iOS apps: results are sent with your House Duck guest account (see below) and shown under its nickname.
- Before 10key Survival offers ranking sign-in on another platform or processes other data, we will update this section.
| Information (players whose results are sent) | Details |
|---|---|
| Player identifier | On CrazyGames, the identifier of your platform account (your CrazyGames userId). The game receives it inside a short-lived token issued by the platform; our server verifies the token and stores the user ID. The token itself is not stored. In the Android and iOS apps, the login ID of your guest account. |
| Display name and avatar | On CrazyGames, your platform display name (username) and the address (URL) of your avatar image, taken from your platform account; you change them on the platform. In the apps, the nickname of your guest account (no avatar image). They are shown publicly on the boards. |
| Player record | When your record was created and when you were last seen (in the apps also when the app checked your account at start while online). |
| Best scores | Your best result on each board (weekly and all-time): score, level, play time and when it was achieved. |
| Run records | Records of submitted runs (one play from start to end), used against cheating: score, level, play time, depth, scrap, combo, number of skills, how the run ended, game build, platform name and an anti-cheat flag. |
House Duck stores no other details of your platform account. 10key Survival has no chat and no user content other than the display name or nickname and the avatar shown on the boards, and it is not designed to collect precise location, contacts, photos, camera or microphone data.
House Duck guest account (Android and iOS)
The Android and iOS apps use a House Duck guest account; the CrazyGames version does not. At the first start the app asks for your birth year and month and for your agreement to the Terms of Service and this Policy. The app works out your age band on the device (under 14, 14 to 17, or 18 and over; your birthday month counts as not yet reached, because the day is not asked). The year and month themselves are not saved and not sent.
- Under 14: the app creates no account. You play with your progress only on the device; no name is asked and no records about you are sent. The game may still load the public boards and its settings file as described above, without any identifier, and, like every player, may send the anonymous basic crash report described under “Crash reports, daily usage counts and run records”.
- 14 and over: you choose a nickname. The app then signs in anonymously at Supabase Auth (no email address, no password, no phone number) and creates your 10key Survival account on our server. If you are offline, the app keeps the guest account on the device and creates it on the server the next time it can.
| Information (guest account) | Details |
|---|---|
| Login ID | A random identifier that Supabase Auth creates for the anonymous login. It identifies your account on our server and the purchases bound to it. |
| Sign-in tokens | An access token and a refresh token that keep you signed in. They are stored only in the app’s save on your device and are sent only to House Duck’s server. Supabase Auth keeps the records it needs to run the login, for example when it was created and last used and, for active sessions, the IP address and the app’s user agent. |
| Account record | Your nickname (2 to 10 letters or digits, unique, shown on the boards), your age band (14 or 18), the version of the Terms you accepted and when you agreed, when the account was created, and when and how often you changed the nickname. |
| Rankings | The player record, best scores and run records described above, under your nickname. |
Nicknames are checked automatically against a list of offensive and misleading words; a refused name must be changed. You can change your nickname in the app while online (your profile at the top left of the home screen, then Account → Change name).
Logging out (Account → Log out) ends the session, and the device forgets the guest account and your age answer; the next start asks again. A guest account cannot be signed back into, because it has no password and no recovery code. Logging out does not delete the account’s data on our server: your nickname and records stay on the boards until the cleanup described under “Retention”, unless you delete the account first or ask us to delete it. Logging out or deleting the account does not remove your progress on the device.
In-app purchases (Android and iOS)
The apps sell gem keycaps in three packs (gems are used only for the one revive per run after the battery runs out) and the Revive Pass (a one-time purchase that makes that revive free). Payment is handled by Google Play Billing on Android and by the App Store (StoreKit) on iOS under their own terms and privacy policies. House Duck receives no payment card data and no name or email address of your store account. A purchase needs your guest account: our server verifies each purchase with Google or Apple and binds it to your account before the game grants it.
| Information (purchases) | Details |
|---|---|
| Purchase record | Product, platform (Android or iOS), a one-way hash (SHA-256) of the store’s purchase token or transaction ID, the store order ID (Google) or transaction ID (Apple), the state (granted, test purchase or refunded), the time of purchase and, after a refund, when it was refunded and the refund category. The record is bound to your login ID. |
| Store verification | To verify a purchase, our server asks Google or Apple about it and reads the answer (for example the product, the purchase state and whether it was refunded); only the items in this table are stored from it. On Google Play the app passes Google a one-way hash (SHA-256) of your login ID with each purchase, so that the receipt can be matched to your account; on iOS the app passes no account identifier to Apple. For Restore purchases on iOS the app may send the device’s App Store receipt, which our server uses only to find your transactions and does not store. |
| Revive Pass | A record that your account owns the Revive Pass, so that it can be restored on a new device or after reinstalling. |
| Gem records | A ledger of gem grants and spends (event ID, amount, reason, reference and time), so that a purchase is never counted twice and support can check a lost balance. Our server writes the grants of verified purchases; the app may also send its own gem events (gems earned in play and gems spent on revives). |
Crash reports, daily usage counts and run records
So that we can find and fix crashes, see how many people play and check that the game’s difficulty is right, 10key Survival sends three kinds of technical signals to House Duck’s server: crash reports, daily usage counts and run records. They are sent by the game’s own code, not by an analytics or advertising SDK, and only by released store versions, never by development or test builds. They have no field for your nickname, your login ID or an advertising identifier, and House Duck does not link them to your guest account.
| Information | Details |
|---|---|
| Basic crash report | Sent when the previous session ended while the app was open on screen (a crash), when the app stopped responding for 5 seconds or more, and for the first error of a session. It contains the kind of event, the platform (Android, iOS or web), the app version (version name, Android version code and iOS build number), the device model, the operating-system version, the device’s language setting and technical details: how long the app had been running or how long it stopped responding, where in the program the error happened together with its error text, and a short trail of the last 30 steps before it (start, change of screen, going to the background or foreground, errors). The server adds the time it received the report and how often the same report was repeated. Going to the home screen or closing the app in the app switcher is not treated as a crash. |
| Extended crash report (Android and iOS apps, with a guest account) | If the previous session ended while the app was open on screen, the app adds the following on its next start, and the server attaches it to the basic report of the same event: the random install ID (see below), the build number, the line that names the crash (the engine’s crash message or the last error line, up to 200 characters) and an excerpt of the app’s own technical log, at most the last 8 KB. The log is a record of what the game and its engine printed (messages, warnings and errors); it is not meant to contain personal data. A report that cannot be sent stays on the device and is tried again for up to 3 days. |
| Install ID | A random identifier (UUID) that the app creates by itself and keeps in its own file on your device, separate from your save. It is not your login ID and is not derived from your device, your account or your name. Logging out or deleting the guest account does not change it; deleting the app or its data removes it, and a new installation creates a new ID that has no relation to the old one. |
| Daily usage counts | Once a day, shortly after the app starts: the install ID, the platform (Android or iOS), the app version and build number, the game language and the total number of runs played so far (a counter). When you leave the app after playing more runs (at most once every 20 seconds): the same details with the new total, so that the number of runs per day can be worked out. The server keeps one record per installation (first and last day seen, number of days seen, latest platform, version, build, language and run total) and one record per day on which it was seen (the counters at the first and last count of that day and the times). The device model and the operating-system version are not included. |
| Run records | Collected on the device each time a run (one play from start to end) ends and sent a few runs at a time while the app is open: the install ID, the platform, the app version and build number, a random run ID made for each run, when the run ended, the game mode, the level reached, the play time, the depth, how the run ended, whether it was completed, the form at the end (keyboard, DRIFT or robot) and the levels at which DRIFT and the robot were reached, the level-up cards chosen and the level at which each was chosen (at most 24 per run), the enemies met and beaten, the best combo, the scrap collected, whether the revive offer appeared and was used, whether Transform mode is owned, and the balance settings number. A record that cannot be sent stays on the device and is tried again for up to 7 days. The server keeps one record per run. The device model and the operating-system version are not included. |
- Which versions send: The basic crash report is sent by the released Android and iOS apps, also before you have a guest account and by players under 14, because it contains no identifier. The released web version (CrazyGames) sends it only for the first error of a session. The extended crash report, the daily usage counts and the run records are sent only by the released Android and iOS apps and only while you have a House Duck guest account (age 14 or over, Terms accepted, nickname chosen). The web version (CrazyGames), desktop versions and test builds do not send these three, and they are not sent before the guest account exists or after you log out. Like any web request, each signal carries your IP address and HTTP request metadata, which are processed to deliver the response and to protect the server.
- Purposes: Crash reports: to find, group and fix crashes and freezes and to see which app versions and devices are affected. Daily usage counts: to count how many installations are used per day and how many runs are played, to see how many come back and which versions are in use, and to check that an update runs stably and the service works. Run records: to count at which level and why runs end, how far players get to DRIFT and the robot and how often each card is chosen, so that the game’s difficulty and balance can be tuned. We use them for nothing else.
- Legal basis: legitimate interests (GDPR Art. 6(1)(f)) in the stability and operation of the game, in fixing errors, in knowing how many people use it and in balancing the game. A random install ID does not by itself make data anonymous. Your right to object is described in section 9.
- Recipients and countries: The server that receives these signals is run by Supabase as House Duck’s processor (section 4); the primary database is in Ireland (AWS eu-west-1), and section 5 describes support and subprocessor processing outside the EU. The records can be read only by House Duck staff in the operations console (section 14). House Duck does not pass them to advertising or analytics providers.
- No advertising, no profiling: House Duck does not use these signals for advertising, does not share them with advertising partners, does not combine them with your account or nickname to build a profile of you, and makes no decision about you based on them. They are used for error analysis and for counts and trends.
- Retention: Run records: deleted after 90 days. Daily usage counts: the records per day are deleted after 120 days; the record of an installation, with any day records left, is deleted when the installation has not been seen for 183 days (6 months). Crash reports: the log excerpt is deleted after 7 days and the rest of the report after 30 days. These deletions are made by a regular automatic cleanup.
- Deletion: These signals are not linked to your guest account, so deleting the account in the app does not delete them; the cleanup removes them after the periods above. Deleting the app or its data removes the install ID from your device. Because they contain no name, nickname or login ID, we generally cannot tell which records belong to which person; if you write to support@houseduck.in (section 9), we will explain what is possible.
Launch pre-registration (website)
If you leave your email address on the 10key Survival page (houseduck.in/10key/), we send you one launch email with the download link (houseduck.in/10key/get/) when the game comes out on iOS and Android. Pre-registering is free and is not a purchase. We send no other marketing email.
| Information (pre-registration) | Details |
|---|---|
| Sign-up record | Email address, page language (Korean or English), the version of the consent text you agreed to, a random confirmation token, the status (awaiting confirmation, confirmed, unsubscribed) and its times (sign-up, confirmation email sent and how often, confirmation, unsubscribe, launch email sent). We do not store your IP address and do not link the record to a game account. |
- Double opt-in: after you sign up, support@houseduck.in sends you a confirmation email; the pre-registration is only complete when you click its button. Unconfirmed addresses never get the launch email.
- Legal basis: your consent (Art. 6(1)(a) GDPR). You can withdraw it at any time with the unsubscribe link in our email or by writing to support@houseduck.in; this does not affect processing before the withdrawal.
- Recipients and countries: the sign-up record is kept on the House Duck server at Supabase (section 4) in Ireland (AWS eu-west-1). Emails are sent by Resend (Plus Five Five, Inc., USA) as House Duck's processor, which receives your email address and the email content for this. Transfers to the USA rely on Resend's EU-U.S. Data Privacy Framework certification and the Standard Contractual Clauses.
- Retention: unconfirmed sign-ups are deleted after 30 days, unsubscribed ones 30 days after unsubscribing, and sign-ups that received the launch email 30 days after it was sent, by automatic clean-up. We delete earlier on request.
Purposes and legal bases
- Showing the boards and your rank, and accepting and storing your records for them: contract performance (GDPR Art. 6(1)(b)), because the ranking is a service you choose to use.
- Creating and running the guest account (login ID, sign-in tokens, nickname), verifying, delivering and restoring purchases, and keeping the Revive Pass and gem records: contract performance (Art. 6(1)(b)).
- The age band, the Terms version and the time of your agreement, to apply the age rule (no account under 14) and to show what was agreed: legitimate interests (Art. 6(1)(f)) and, where a law requires such a check or record, legal obligation (Art. 6(1)(c)).
- Preventing cheating and abuse (verifying the platform token or the sign-in, plausibility checks, rate limits, the nickname check, excluding players from the rankings) and purchase fraud (binding a receipt to one account, refusing a receipt used twice, recording refunds, keeping purchase records after an account is deleted): legitimate interests (Art. 6(1)(f)) in fair rankings, in protecting purchases and in protecting the service.
- Keeping purchase records where tax, commercial or consumer law requires it: legal obligation (Art. 6(1)(c)).
- IP address and request metadata for delivering responses and protecting the server: legitimate interests (Art. 6(1)(f)).
Recipients and countries
- Supabase runs the 10key Survival server, including the sign-in of guest accounts (Supabase Auth), as House Duck’s processor (section 4). The primary database is in Ireland (AWS eu-west-1); support and subprocessor processing outside the EU follows the safeguards described for Supabase in section 5.
- Other players and anyone who views the boards see the public board entries: rank, display name or nickname, avatar, score and level.
- Google and Apple process in-app purchases, their restoration and refunds in the Android and iOS apps (Google Play Billing, App Store) as independent controllers under their own terms and privacy policies; sections 4 and 5 describe them and the countries involved. Our server contacts them only to verify purchases.
- The platform runs or delivers the game and provides your platform account, its own services and, where applicable, payment processing under its own terms and privacy policy, as an independent controller. On CrazyGames, the CrazyGames SDK runs within CrazyGames’ site (with its account, its ads and its own measurement) under the CrazyGames Privacy Policy; 10key Survival calls it only for loading and gameplay events, sign-in state, the user token and celebration events.
- GitHub Pages delivers this website, including the game’s settings file (section 5).
Retention
- Weekly board entries: deleted once the week is more than 12 weeks old.
- Run records: deleted after 35 days; run records flagged by our checks after 90 days.
- Player record, all-time best and all other ranking data of a player, and in the apps the account record (nickname, age band, Terms version): deleted together once the player has not been seen for 6 months (183 days), or earlier on request or when you delete the account.
- Guest login, Revive Pass record and gem records: kept until you delete the account in the app or ask us to delete it, because they are needed to restore the Revive Pass and to handle refunds and support requests. Sign-in sessions end when you log out or delete the account.
- Purchase records: while the account exists, as part of it. When the account is deleted, the link to the account is removed and the rest of the record (product, platform, the hash of the purchase token or transaction ID, the store order or transaction ID, state and times) is kept, so that the same receipt can never be granted again to another account and refunds and disputes can be matched, for as long as these purposes and any statutory retention period require.
- Crash reports and daily usage counts: as described under “Crash reports, daily usage counts and run records” (day records of usage counts 120 days; an installation’s record until it has not been seen for 183 days; crash log excerpts 7 days; crash reports 30 days; run records 90 days).
- Saves, settings and sign-in tokens on your device or in your browser: under your control; House Duck holds no copy of the save. Deleting the app or its data removes them.
- Information independently held by the platform or store, and request logs kept by hosting providers: under each provider’s retention policy and settings.
These deletions are made by a regular automatic cleanup once the periods have passed.
Deletion and your rights
In the Android and iOS apps you can delete your guest account at any time: tap your profile at the top left of the home screen, press and hold Hold to delete account under Account, and confirm with Delete (an internet connection is needed). Our server then deletes your account record, player record, best scores, run records, Revive Pass record and gem records and, unless another House Duck game uses the same login, the login itself. Purchase records are kept without the link to your account, as described under “Retention”. The app then forgets the account; your progress on the device stays. The Revive Pass can later be restored to a new guest account with Restore purchases and the same store account; gems cannot be restored.
You can also ask at any time for your 10key Survival data to be deleted, for example if you have logged out or no longer have the app: email support@houseduck.in and give your platform username (CrazyGames) or your nickname (apps). House Duck then deletes your 10key Survival data on its server (your player record, best scores and run records and, for a guest account, also the account record, Revive Pass and gem records and the login, with purchase records kept as described above). Because usernames and nicknames are public, we may ask for the minimum additional information needed to confirm that the request comes from you (for example the order ID on a store receipt); do not send passwords. If you later send records again while signed in, or create a new guest account, a new player record is created. Your other rights, response times and the right to complain to a supervisory authority are described in section 9. Your platform or store account and the data the platform holds are managed by the platform; contact the platform about them.
Ads and analytics
- 10key Survival itself contains no analytics SDK and no advertising SDK of its own, and House Duck receives no advertising identifiers. The crash reports and daily usage counts that House Duck’s own code sends are described under “Crash reports, daily usage counts and run records”. The Android and iOS apps show no ads.
- Where 10key Survival is free on a platform, ads may be shown by that platform (today: CrazyGames) under its own terms and privacy policy; ad consent and ad choices are managed by the platform.
- Where 10key Survival is sold through a store, the store processes the purchase of the game and of in-app purchases under its own terms and privacy policy; what our server keeps about in-app purchases is described above. House Duck receives no payment card data.
Children
Like our other games, 10key Survival is not directed to children under 14, or a higher minimum age required by local law. In the Android and iOS apps, players under 14 get no account and send no records (see “House Duck guest account”); the age question is not identity or age verification. Players below the age at which local law lets them consent to data processing on their own (in Germany generally 16) should play 10key Survival only with the permission of a parent or guardian, and the platform’s own age rules also apply. Purchases by minors may need the approval of a parent or guardian (see the Terms). If we learn that we processed a child’s data without a required authorization, we delete it; a parent or guardian can ask for deletion at support@houseduck.in.
Security and automated checks
Our server accepts records only after verifying the platform token or the guest account’s sign-in, and it checks submitted runs automatically (plausibility checks and rate limits). A run that fails these checks is flagged and may not count for the boards, and players who cheat may be excluded from the rankings. Nicknames are checked automatically against a word list, and purchases are granted only after Google or Apple confirm them. The game sends data only encrypted (HTTPS); the account and purchase tables can be read only by House Duck’s server (Row Level Security), and purchase tokens are stored only as a hash. You can ask support for a human review. House Duck does not make solely automated decisions producing legal or similarly significant effects. On CrazyGames, signing in and sending records are needed only for the rankings; you can play 10key Survival without them. In the Android and iOS apps, the guest account is part of the game from age 14: it holds your nickname for the rankings and your purchases.
14. Support Requests and House Duck’s Operations Tools
This section applies to all House Duck games and to the website. It describes how we handle support requests and the internal tools that House Duck staff use to answer them and to run our games.
Support email
Email sent to support@houseduck.in or business@houseduck.in is received, stored and answered in Google Workspace (Gmail), which Google provides to House Duck as a service provider (section 4). We process what you send: your email address, the name shown with it, the subject, the message, attachments and anything else you include (for example a game display code or a platform username). We use it to answer and resolve your request, which may include looking up the game account you ask about. Legal basis: contract performance or pre-contractual steps (GDPR Art. 6(1)(b)) where the request concerns a game, an account or a purchase; legal obligation (Art. 6(1)(c)) for rights requests; otherwise legitimate interests (Art. 6(1)(f)) in answering inquiries. Support emails are kept as long as needed to resolve the request and handle disputes (section 6). Please do not send passwords or payment details.
House Duck operations console
The House Duck operations console at houseduck.in/console/ is an internal tool used only by House Duck staff. Players do not sign in to it and cannot create an account there. Staff sign in with Google: the console receives a Google ID token that contains the staff member’s Google account email address, Google account ID and, where Google includes them, name and profile picture. House Duck’s server (Supabase) verifies this token with Google, checks the email address against the staff allow list, asks a second security question and then issues its own session ticket, valid for 72 hours. The ID token and the session ticket are kept in that browser’s local storage until they expire or the staff member signs out. Failed sign-in attempts are counted under a hashed identifier so that repeated failures lock the sign-in, and changes that staff make to game data are recorded in an audit log with the staff member’s email address. We process this sign-in data to keep the console limited to authorised staff and to keep operations traceable (legitimate interests, Art. 6(1)(f)).
In the console, staff may look up the game account data described in sections 2 and 13 (for example, the account that matches the display code given in a support email) only to answer that player’s support request, to handle purchases and refunds, or to keep the games running and fair. Changes to game data are made through House Duck’s server, not directly from the browser, and are recorded in the audit log.
Gmail access (Google user data)
With the staff member’s consent on Google’s consent screen, the console requests the Gmail scope https://www.googleapis.com/auth/gmail.modify and uses it only for the House Duck support mailbox (support@houseduck.in), to:
- list and read the messages and attachments sent to support@houseduck.in;
- add and remove House Duck support labels (for example “House Duck/CS/Needs Reply” or “House Duck/CS/Done”) and move answered conversations out of the inbox;
- write and send replies to those messages from the support mailbox.
The console calls the Gmail API directly from the staff member’s browser. The access token stays only in the browser’s memory for that session and is revoked when the staff member disconnects Gmail or signs out. Mail, attachments and access tokens are not copied to House Duck’s servers (Supabase) or to any code repository. The short summary and category that staff see for each message are made by the console inside the browser; mail text is not sent to any AI service. People at House Duck read mail only to answer and resolve the request. House Duck does not sell Gmail data, does not use it for advertising, does not share it with anyone other than the providers named in this section that process it for House Duck, and does not use it to train AI models. A staff member can remove the console’s access at any time in their Google Account under third-party connections.
House Duck’s use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
15. Changes
- October 25, 2026 notice revision — added run records to section 13: the short record of every finished run that the store apps send with the random install ID (what it contains, which versions send it, why, the legal basis, retention 90 days).
- October 24, 2026 notice revision — added the launch pre-registration on the 10key Survival web page to section 13: what we store (email address, language, consent text version, status and times), double opt-in, processing based on consent and how to withdraw it, Resend (USA) as the email processor and the transfer basis, and retention (30 days).
- Notice update October 23, 2026 — Added to section 13 the crash reports and daily usage counts that the Android and iOS apps of 10key Survival send (and, for the first error of a session, the web version): what they contain, which versions send them, why, the legal basis (legitimate interests), recipients, retention (120 and 183 days for usage counts, 7 and 30 days for crash reports) and why deleting the guest account does not delete them. Cross-references were added to the under-14, CrazyGames, retention and “Ads and analytics” text.
- Effective October 20, 2026 (v4.3) — 10key Survival in the Android and iOS apps (section 13): the House Duck guest account (the age question, of which only the age band is used; the nickname; the anonymous sign-in at Supabase Auth; sign-in tokens kept on the device; logging out), in-app purchases of gem keycaps and the Revive Pass through Google Play Billing and the App Store with verification on our server (purchase records with a hash of the purchase token, the Revive Pass record, gem records; a hashed login ID passed to Google Play), the legal bases for this processing, Google and Apple as recipients, retention, what is kept after an account is deleted and why, and account deletion in the app or by email. Nothing changes for players on CrazyGames or the web.
- Name update October 20, 2026 — The game formerly called 10KEY is now called 10key Survival (딸깍 서바이벌 in Korean); section 13 and the other mentions use the new name. Nothing else changed: the same data is processed for the same purposes, and your rights are the same.
- Effective October 20, 2026 (v4.2) — Added section 14 on support requests and House Duck’s operations tools: support email handled in Google Workspace (Gmail), the staff-only operations console with Google sign-in, the console’s access to the support mailbox through the Gmail API (
gmail.modify), and the Limited Use statement for information received from Google APIs. Added Google Workspace and Google Identity Services to the providers in section 4. “Changes” is now section 15. - Effective October 19, 2026 (v4.1) — Added 10key Survival (section 13): offline play with saves only on the device, optional online rankings for players signed in to their platform account, the data stored for them, retention, deletion on request, and ads and purchases handled by the platform or store. The separate 10key Survival privacy notice of October 18, 2026 was folded into this Policy. Clarified that sections 2 to 12 describe Quirky Ball and the website unless stated otherwise; “Changes” is now section 14.
- Effective October 5, 2026 (v4.0) — Made this the shared policy for all House Duck games, with Quirky Ball as the current title; updated it for Quirky Ball 2.0.0: Google sign-in on iOS, account loading on another device, in-app Quick Report, fair-play records, invitations, stability diagnostics inside the optional usage analytics, Google Ads conversion measurement under that consent, redacted support summaries with the Google Gemini API, mailbox retention, and purchase restoration. Removed the AppLovin MAX preparation notice: AppLovin will not be used, and Google AdMob remains the only ad network.
- Notice update September 9, 2026 — Clarified age bands, the combined optional analytics choice and 24-hour unsent queues, no retroactive expansion of Firebase-only choices, and ad-reward conditions.
- Notice update September 8, 2026 — Clarified processing countries, recipients/transfers, notice versus consent, minors, and rights requests.
- Analytics notice update September 5, 2026 — Distinguished Supabase-backed operations and first-party analytics from optional Firebase Analytics, and documented consent, refusal, and withdrawal in settings.
- Clarity update September 5, 2026 — Clarified website requests and local preferences, deletion-request verification, and the rights-request process.
- Effective August 24, 2026 (v3.0) — Converted to a shared House Duck policy and added Android/Google Play, iOS with Sign in with Apple, advertising consent, and one-time purchase processing.
Material changes will be announced on the website or in the app before they take effect.