Effective date: September 11, 2026
Frozen Bubble: SDL3 ("the app") is a free, open-source game (GPLv2 licensed, source at github.com/dchau360/frozen-bubble-sdl3). This policy covers the Android build distributed on Google Play; the same practices apply to the other platform builds except where noted (ads and in-app purchases are Android-only).
The app has no user accounts, no analytics SDK, and does not collect your name, email, or any other real-world identity. What it does handle is described below.
Nickname. You choose a display nickname in Settings. It's stored only on your device and sent to whichever multiplayer server you connect to, so other players in your game can see it. It is not tied to any account and isn't sent anywhere else.
Network connection data. Playing network multiplayer means connecting
to a game server over TCP — your IP address is visible to that server the
same way it is for any internet connection, and the reference server
implementation (server/) writes IP address, nickname, and
connect/disconnect times to a local server log for operational purposes
(abuse investigation, debugging). Per-nickname match statistics (wins,
bubbles fired/popped) are also persisted server-side so they can be shown
across sessions. Anyone can run a Frozen Bubble server — the app ships
with no server of its own and fetches a community-maintained list of public
servers on startup (see the
frozen-bubble-servers
repo). The developer only controls the logging behavior of the reference
server code; a third-party server operator's own practices are outside this
policy's scope.
Approximate location. On startup the app asks a third-party IP-geolocation service (ipinfo.io, falling back to ip-api.com) for a rough position derived from your IP address — not GPS, and not anything requiring a location permission. The result is cached to one decimal place, roughly city or region accuracy rather than a precise address, and is shown as a pin on a world map in the network lobby so other online players can see approximately where players and servers are. It is not stored beyond the current session.
Discord join alerts (server-operator feature, not controlled by the developer). A server's operator can optionally run a relay that posts a message to a Discord channel of their choosing every time a player connects to their server. That message contains your nickname and the server's name, and nothing else. Neither your IP address nor your approximate location is included: both briefly reach the relay as part of the connect event (the same information the server already receives under "Network connection data" and "Approximate location" above), and the relay discards both rather than forwarding them anywhere. This is opt-in per server operator, not per player — there is no in-app setting to disable it, because the decision belongs to whichever server you choose to join. Whether a given server does this, and what channel it posts to, is outside the developer's control; see SetupServer.md for the mechanism, and ask a server's operator directly if you want to know whether they've enabled it. Note that the relay is ordinary source code an operator runs themselves, so an operator who modifies their copy could post more than the stock version does — as could any server software that is not this one. What is described here is what the shipped relay sends.
Discord round-result alerts (same server-operator feature, not controlled by the developer). The same optional relay can also post a message at the end of every round: which game mode it was played in, who won or that it ended in a draw, and the nicknames of every player who was in that room. Nothing beyond nicknames, the game mode, and the server's name is included — no IP address, no location, same as the join alert above. The winner named is whatever the reporting player's own client claimed, the same claim already shown on every other player's screen for that round — the server does not verify it, with or without this alert enabled. This posts once per round, not once per full match, and only for players actually seated in that room; a player who disconnects mid-round is never named in one of these messages. Depending on the operator's setup, a room's round-by-round messages may be grouped into one Discord thread rather than posted as separate top-level messages — an organizational choice about where in the channel a message appears, not a change to who can see it or what it contains. As with join alerts, this is opt-in per server operator, not per player, with no in-app setting to disable it, and what a given server actually posts is outside the developer's control — see SetupServer.md.
Opening the community Discord. The NET GAME server list and the online lobby each offer a "Join our Discord" row. It is a link and nothing more: selecting it hands a fixed invite URL to your browser, and no information about you is sent anywhere by the act of opening it. What happens after that is between you and Discord, under Discord's own privacy policy. Nothing is sent if you never select the row.
Advertising identifiers (Android only). The Android build shows an interstitial ad via Google AdMob when entering the multiplayer lobby. AdMob's SDK collects device and advertising identifiers under Google's own policies — see Google's Privacy Policy and How Google uses information from sites or apps that use our services. The developer does not separately collect or receive this data.
Purchase data (Android only). The two ad-removal purchases — a yearly subscription and a one-time permanent unlock — are processed entirely by Google Play Billing. The app never sees your payment method, card number, or billing address — it only receives a purchase token from Google confirming entitlement, which is stored locally on your device to keep ads off.
Crash or diagnostic data. The app does not integrate any crash-reporting or analytics SDK, so none is collected by the developer.
The app is not directed at children under 13 and does not knowingly collect personal information from them. Nicknames are free-text and players should avoid entering real names or other identifying information.
This policy may be updated as the app changes (for example, if a new platform or feature is added). Material changes will be noted in CHANGELOG.md.
The Android build on Google Play is published by Solina AI LLC, a Texas limited liability company, which is the data controller for the purposes of this policy. The game itself remains an independent open-source project: the code is GPLv2, the original game's artwork and music belong to the Frozen-Bubble Team, and the company claims no ownership over either.
Questions, bug reports, and privacy or data-removal requests all go to the public issue tracker, which the maintainer reads: github.com/dchau360/frozen-bubble-sdl3/issues. There is no support email address; using the tracker keeps answers visible to the next player with the same question.