DepositMonsters to gra oparta na polskim systemie kaucyjnym: oddajesz opakowanie do recyklomatu, skanujesz bon i dostajesz Ładunek, z którego budujesz Iskrzaka. Żeby to działało, aplikacja musi wiedzieć, kim jesteś, gdzie stoisz w chwili naciśnięcia przycisku i co było na bonie. Ten dokument mówi, co z tego zostaje u nas, co idzie dalej, a co ginie od razu.
Administrator i kontakt
Administratorem danych osobowych jest [NAZWA FIRMY - do uzupelnienia], [ADRES POCZTOWY - do uzupelnienia].
- kontakt we wszystkich sprawach, także dotyczących danych osobowych: support@depositmonsters.com
- usunięcie konta i danych: /usun-konto
Inspektor ochrony danych: [do uzupełnienia przez prawnika - zależy od skali przetwarzania i formy prawnej administratora].
Jakie dane i po co
Poniższa tabela jest pełną listą danych, które aplikacja zbiera albo wytwarza. Nie ma w niej pozycji „i inne dane techniczne": jeśli czegoś tu nie ma, to tego nie zbieramy.
| Dane | Skąd | Dokąd | Jak długo |
|---|---|---|---|
| Tożsamość u dostawcy logowania (para „dostawca i jego wewnętrzny identyfikator"), adres e-mail, nazwa wyświetlana | logowanie Google albo Apple | nasza baza | do usunięcia konta |
| Skrót hasła przy rejestracji hasłem | rejestracja | nasza baza, nigdy samo hasło | do usunięcia konta |
| Token odświeżania sesji, przechowywany jako SHA-256 | sesja w aplikacji | nasza baza | 30 dni, z rotacją i unieważnianiem całej rodziny tokenów |
| Zdjęcie bonu | aparat w aplikacji | pamięć procesu serwera, nie dysk; awaryjnie model wizyjny Google (Gemini), gdy jest włączony | nie jest przechowywane |
| Skrót kodu kreskowego bonu (SHA-256) | bon | nasza baza, osobna kolekcja bez właściciela | 7 dni, kasowane automatycznie przez bazę |
| Położenie GPS | jeden odczyt po naciśnięciu „jestem przy maszynie" | pamięć podręczna serwera jako otwarta obecność przy Strefie | około 26 godzin; trwały wpis o wizycie nie zawiera współrzędnych |
| Pinezka zgłoszonej Strefy: współrzędne maszyny, adres, konto odkrywcy | gracz | nasza baza, a po potwierdzeniu obecnością - wspólna mapa | doba bez potwierdzenia obecnością, potem trwale jako Strefa |
| Rozliczone reaktywacje, księga Ładunku, stan Iskrzaka, skrzynia, gang, wyzwania i mecze | rozgrywka | nasza baza | do usunięcia konta; księga Ładunku jest z zasady tylko dopisywana |
| Urządzenie: identyfikator instalacji, platforma, wersja aplikacji, strefa czasowa, token powiadomień | aplikacja, zgoda systemowa na powiadomienia | nasza baza; token także do Firebase Cloud Messaging (Google) | do wyciszenia powiadomień albo usunięcia konta |
| Identyfikator reklamowy urządzenia, zgody reklamowe | AdMob i formularz zgód | Google AdMob; u nas nie ma ich wcale | zgodnie z polityką Google |
| Skrót paragonu zakupu (SHA-256), identyfikator produktu, sklep, status licencji | sklep Google Play albo App Store | nasza baza; weryfikacja w Google Play Developer API i App Store Server API | wpis zostaje także po usunięciu konta - patrz sekcja 11 |
| Błędy serwera z identyfikatorem żądania | serwer | Sentry | zgodnie z ustawieniem retencji w Sentry |
| Identyfikator gracza z Robloxa po sparowaniu | DepositMonsters Tycoon | nasza baza | do usunięcia konta |
| Adres e-mail z wishlisty, platforma, język strony | formularz na stronie | Cloudflare R2, jurysdykcja UE | do wysłania powiadomienia o premierze albo do wycofania zgody |
| Wejścia do gry na Robloxie i czas w niej (tylko konta sparowane) | DepositMonsters Tycoon | nasza baza | 90 dni |
| Adres IP i logi żądań | serwer i dostawca hostingu | Render, nasza infrastruktura | krótko, technicznie [do uzupełnienia: dokładny okres retencji logów] |
Podstawy prawne
- Wykonanie umowy (art. 6 ust. 1 lit. b RODO): konto, rozgrywka, rozliczanie bonów, Ładunek, pojedynki, sprzedaż licencji.
- Zgoda (art. 6 ust. 1 lit. a RODO): reklamy dopasowane, powiadomienia push, odczyt położenia. Każdą z nich można wycofać, a wycofanie nie odbiera dostępu do gry.
- Uzasadniony interes (art. 6 ust. 1 lit. f RODO): wykrywanie oszustw i nadużyć, bezpieczeństwo kont, diagnostyka błędów, obrona przed roszczeniami.
- Obowiązek prawny (art. 6 ust. 1 lit. c RODO): rozliczenia zakupów i reklamacje [do uzupełnienia przez prawnika: które konkretnie obowiązki i na jaki okres].
Zgoda na regulamin i potwierdzenie wieku są warunkiem założenia konta - bez nich konto w ogóle nie powstaje.
Bon i zdjęcie bonu
Droga bonu wygląda tak:
- Aplikacja robi zdjęcie i wysyła je do naszego serwera. Serwer trzyma je w pamięci procesu na czas odczytu.
- Kod kreskowy dekodujemy sami, lokalnie. Tekst bonu czyta najpierw Tesseract, czyli program działający na naszym serwerze, bez wysyłania czegokolwiek na zewnątrz.
- Jeśli ten odczyt się nie uda, a awaryjny model wizyjny jest włączony, to samo zdjęcie - pomniejszone do 1024 pikseli dłuższej krawędzi - trafia do Google (interfejs Gemini) wyłącznie po to, żeby przepisać z niego liczby. Model nie czyta kodu kreskowego i nie dostaje danych konta. Tę ścieżkę wyłącza się po naszej stronie jednym ustawieniem i wtedy nie idzie nigdzie nic.
- Z bonu zostaje u nas wyłącznie skrót SHA-256 cyfr kodu kreskowego, w osobnej kolekcji, bez właściciela, kwoty, godziny i sklepu. Baza kasuje go sama po 7 dniach. Służy jednej rzeczy: żeby tego samego bonu nie dało się rozliczyć dwa razy.
- Trwały wpis o rozliczeniu mówi tylko: to konto dostało tyle Ładunku przy tej Strefie, z takim statusem i taką liczbą sztuk. Nie ma w nim niczego z treści bonu.
Położenie
Odczyt trafia do pamięci podręcznej serwera jako otwarta obecność przy wybranej Strefie i znika z niej sam po około 26 godzinach, czyli po czasie, w którym bonu i tak nie da się już rozliczyć. Wpis, który zostaje na stałe, mówi wyłącznie, przy której Strefie było rozliczenie - bez współrzędnych.
Osobno: gdy zgłaszasz nową Strefę, współrzędne maszyny i jej adres stają się - po potwierdzeniu obecnością - punktem na wspólnej mapie, widocznym dla wszystkich graczy. Przy Strefie zostaje też trwale informacja, że odkryło ją Twoje konto. To położenie recyklomatu, a nie Twoje, ale warto wiedzieć, że jest publiczne.
Logowanie i tożsamość
Do gry logujesz się kontem Google albo Apple; można też założyć konto hasłem. Tożsamość zapisujemy jako parę „dostawca i jego wewnętrzny identyfikator" - nigdy jako sam adres e-mail. Adres e-mail, jeśli dostawca go poda, służy dwóm rzeczom: kontaktowi i łączeniu kont.
- Łączenie kont działa wyłącznie po zweryfikowanym adresie. Konto założone hasłem jest niezweryfikowane, więc nie da się do niego podpiąć logowania Google ani Apple. To zabezpieczenie, a nie niedogodność: bez niego ktoś mógłby założyć konto na cudzy adres i czekać, aż właściciel zaloguje się przez Google prosto na konto, do którego on zna hasło.
- Hasło trzymamy wyłącznie jako skrót. Samego hasła nie znamy i nie da się go z bazy odtworzyć.
- Od Apple przechowujemy jeden dodatkowy token i wyłącznie po to, żeby przy usuwaniu konta unieważnić powiązanie po stronie Apple. Do niczego innego go nie używamy i nie wysyłamy go nigdzie poza Apple.
- Konto dostaje publiczny, sześcioznakowy kod, po którym znajdują Cię inni gracze chcący rzucić wyzwanie. Nazwa Twojego Iskrzaka to ten sam kod zapisany sylabami, a nie osobna dana w bazie. Wyszukiwarka rywali działa tylko na pełny kod albo pełną nazwę, nigdy na fragment nazwy konta: ta lista celowo nie jest książką adresową.
- Zapisujemy też datę potwierdzenia wieku i akceptacji regulaminu - to wymóg, a nie statystyka.
Reklamy i zgody
Aplikacja jest darmowa i wyświetla reklamy pełnoekranowe dostarczane przez Google AdMob. Reklama ani pieniądze nigdy nie dają Ładunku ani żadnej przewagi w grze.
Reklamy pełnoekranowe pojawiają się w trzech miejscach i tylko w nich:
- na podsumowaniu rundy mini-gry, po pokazaniu wyniku;
- na podsumowaniu meczu Wyrzutni;
- przy wyjściu z ekranu gier.
Lista miejsc bez reklam jest zamknięta:
- cała ścieżka przy maszynie: wybór Strefy, obecność, aparat, wynik bonu;
- wyklucie Kapsuły i pierwszy dzień nowego gracza;
- zabiegi opieki nad Iskrzakiem;
- mapa w trakcie szukania maszyny;
- pierwsze uruchomienie, wybór języka, logowanie i ekrany zgód.
Do wyświetlenia reklamy AdMob używa identyfikatora reklamowego urządzenia i danych o zdarzeniach w aplikacji. Te dane trafiają do Google, a nie do nas: u siebie nie trzymamy ani identyfikatora reklamowego, ani profilu reklamowego gracza.
W Europejskim Obszarze Gospodarczym i w Wielkiej Brytanii przed pierwszą reklamą pokazujemy formularz zgód (Google User Messaging Platform). Do czasu odpowiedzi nie idzie żadna reklama. Zgodę można wycofać albo zmienić w każdej chwili w ustawieniach aplikacji, w sekcji dokumentów. Odmowa dopasowania nie wyłącza reklam - wyłącza personalizację. Na iOS o zgodę na śledzenie prosi osobno system (App Tracking Transparency), a jej brak oznacza reklamy niedopasowane.
Stanu zgody nie zapisujemy u siebie - jego właścicielem jest oprogramowanie dostawcy i system operacyjny.
Jednorazowy zakup licencji usuwa reklamy pełnoekranowe na zawsze, na każdym urządzeniu tego konta. Reklamy dobrowolne, czyli takie, które gracz sam włącza, działają także po zakupie i tak samo nie dają Ładunku.
Zakupy i licencja
Licencję bez reklam kupuje się w Google Play albo App Store. Płatność obsługuje sklep: nie widzimy i nie przechowujemy danych karty ani żadnych innych danych płatniczych.
Po zakupie sklep wydaje paragon. U nas zostaje:
- skrót SHA-256 paragonu - żeby jeden zakup nie odblokował dwóch kont;
- identyfikator produktu, nazwa sklepu, data zakupu i status licencji.
Paragon sprawdzamy bezpośrednio u wydawcy (Google Play Developer API, App Store Server API); deklaracja aplikacji nam nie wystarcza. Nasłuchujemy też powiadomień sklepu o zwrocie pieniędzy: zwrot gasi licencję, a wpis o niej zostaje ze statusem „zwrócona", żeby dało się odpowiedzieć na pytanie, dlaczego reklamy wróciły.
Właścicielem licencji jest konto w naszej bazie, nie telefon i nie konto sklepu.
Powiadomienia
Powiadomienia są dobrowolne. O zgodę systemową prosimy dopiero przy pierwszym umówionym pojedynku, a nie przy starcie aplikacji.
Wysyłamy dwa rodzaje powiadomień i tylko te dwa:
- twoja tura w umówionym pojedynku;
- Ładunek na wyczerpaniu, najwyżej raz na dobę.
Do wysyłki potrzebny jest token urządzenia z Firebase Cloud Messaging (Google). Zapisujemy go razem z identyfikatorem instalacji, platformą, wersją aplikacji i strefą czasową urządzenia. Strefa czasowa jest potrzebna po to, żeby nie budzić nikogo w nocy: powiadomienie przypadające na godziny 22-8 czasu gracza czeka do rana, zamiast zostać skasowane.
Wyciszenie w ustawieniach aplikacji kasuje token z naszej bazy, więc nie mamy dokąd wysłać powiadomienia. Zgody systemowej nie kopiujemy u siebie - jej jedynym właścicielem jest system operacyjny i tam też można ją odebrać.
Gra na Robloxie
DepositMonsters Tycoon to osobne miejsce na platformie Roblox, w którym Twój Iskrzak z tej aplikacji pracuje w zakładzie, który odbudowujesz. Nie jest jeszcze wydane.
- Konta łączy się kodem parowania wygenerowanym w naszej aplikacji: jeden kod na konto, ważny kilka minut, jednorazowy. Kod przepisuje się w grze na Robloxie. Nie używamy do tego publicznego kodu konta, bo ten znają inni gracze.
- Postęp zakładu zapisuje Roblox na swoich serwerach i nie trzymamy go u siebie. Dla kont sparowanych zapisujemy natomiast wejścia do gry i czas w niej (zdarzenia kasują się po 90 dniach), żeby pomoc techniczna widziała, co się działo. Nic z tego nie wpływa na rozgrywkę w aplikacji.
- Po sparowaniu zapisujemy u siebie identyfikator gracza Roblox i wiążemy go z kontem w grze. Roblox przekazuje nam wyłącznie ten identyfikator - nie dostajemy ani nazwy gracza, ani adresu e-mail, ani żadnych innych danych z konta Roblox.
- Powiązanie jest jednorazowe i nie da się go rozpiąć z aplikacji. Jedno konto Roblox odpowiada jednemu kontu w grze i odwrotnie. Pomyłkę prostuje pomoc techniczna, bo to jedyne miejsce, w którym po drugiej stronie stoi człowiek. Powiązanie znika razem z usunięciem konta.
- Wszystko, co dzieje się na platformie Roblox, podlega regulaminowi i polityce prywatności Roblox Corporation. Nie mamy wpływu na to, jakie dane zbiera tam Roblox. DepositMonsters nie jest powiązane z Roblox Corporation.
Odbiorcy danych
Danych nie sprzedajemy i nie udostępniamy do cudzych celów marketingowych. Korzystamy natomiast z dostawców, bez których aplikacja nie działa.
| Odbiorca | Po co | Co dostaje |
|---|---|---|
| logowanie, powiadomienia (Firebase), reklamy (AdMob), sklep Google Play, awaryjny odczyt bonu (Gemini) | tożsamość logowania, token powiadomień, identyfikator reklamowy i zgody, paragon, a przy awaryjnym odczycie także zdjęcie bonu | |
| Apple | logowanie, sklep App Store | tożsamość logowania, paragon |
| MongoDB Atlas | baza danych gry, region Frankfurt (Unia Europejska) | wszystkie dane konta i rozgrywki wymienione w sekcji 2 |
| Render | hosting serwera i pamięć podręczna, region Frankfurt (Unia Europejska) | ruch sieciowy, logi żądań, dane w przetwarzaniu |
| Sentry | zgłoszenia błędów serwera | treść błędu i identyfikator żądania |
| Cloudflare | przechowywanie wishlisty premiery (R2, jurysdykcja UE) | adres e-mail, platforma i język strony z formularza wishlisty |
| Roblox Corporation | DepositMonsters Tycoon, po sparowaniu kont | identyfikator gracza Roblox, dane karty Iskrzaka wyliczone z rozgrywki |
Jak długo trzymamy dane
- Zdjęcie bonu - nie jest przechowywane w ogóle.
- Skrót kodu kreskowego - 7 dni, kasowany automatycznie przez bazę.
- Odczyt położenia - około 26 godzin w pamięci podręcznej, potem znika sam.
- Pinezka bez potwierdzenia obecnością - doba, potem kasuje się sama.
- Token odświeżania sesji - 30 dni, z rotacją przy każdym użyciu.
- Token powiadomień - do wyciszenia powiadomień albo usunięcia konta.
- Konto, tożsamość i dane rozgrywki - do usunięcia konta. Co dokładnie dzieje się przy usunięciu, opisuje strona usunięcia konta.
- Wpis o licencji - zostaje także po usunięciu konta, bo jest dowodem zakupu i podstawą rozliczenia [do uzupełnienia przez prawnika: dokładny okres, wynikający z przepisów o rachunkowości i przedawnieniu roszczeń].
- Strefy na wspólnej mapie - zostają, bo opisują maszynę, a nie gracza; po usunięciu konta informacja o odkrywcy przestaje wskazywać na istniejące konto.
Twoje prawa
Przysługuje Ci prawo do:
- dostępu do swoich danych i uzyskania ich kopii;
- sprostowania danych nieprawidłowych;
- usunięcia danych;
- ograniczenia przetwarzania;
- przenoszenia danych przetwarzanych na podstawie umowy lub zgody;
- sprzeciwu wobec przetwarzania opartego na uzasadnionym interesie;
- wycofania zgody w każdej chwili, bez wpływu na zgodność z prawem przetwarzania sprzed wycofania;
- wniesienia skargi do Prezesa Urzędu Ochrony Danych Osobowych (ul. Stawki 2, 00-193 Warszawa).
Żądania przyjmujemy pod adresem support@depositmonsters.com. Najszybszą drogą do usunięcia danych jest jednak sama aplikacja - opisuje to strona usunięcia konta.
Nie podejmujemy wobec graczy decyzji opartych wyłącznie na zautomatyzowanym przetwarzaniu, które wywoływałyby wobec nich skutki prawne. Automat oznacza natomiast podejrzane rozliczenia bonów i podejrzane przebiegi mini-gier; taką sprawę ogląda potem człowiek w panelu pomocy.
Bezpieczeństwo
- Cała komunikacja aplikacji z serwerem idzie po HTTPS.
- Token dostępu żyje 15 minut, token odświeżania 30 dni i leży w bazie wyłącznie jako SHA-256. Przy każdym użyciu podlega rotacji, a próba użycia zużytego tokenu unieważnia całą rodzinę sesji.
- Hasła trzymamy jako skróty; paragony i kody kreskowe bonów również wyłącznie jako skróty.
- Baza i serwer stoją w regionie Frankfurt, z kopiami zapasowymi i odtwarzaniem do punktu w czasie.
- Dostęp do panelu pomocy mają wyłącznie konta z nadaną rolą; roli nie da się przyznać sobie z poziomu aplikacji.
- Zbieramy tak mało, jak się da - stąd brak magazynu zdjęć bonów, brak śledzenia w tle i brak własnej kopii zgód reklamowych.
Dzieci i wiek
Gra jest przeznaczona dla osób w wieku 16 lat i więcej. Potwierdzenie wieku jest warunkiem założenia konta. Nie kierujemy aplikacji do dzieci i świadomie nie zbieramy danych osób poniżej tego progu. Jeśli dowiemy się, że konto założyła osoba młodsza, usuniemy je razem z danymi.
Wishlista premiery
Na stronie można zostawić adres e-mail, żeby dostać jedno powiadomienie w dniu premiery aplikacji. Zapis nie wymaga konta i nie łączy się z kontem w grze.
- Zapisujemy adres e-mail, platformę, jeśli ją wybrałeś, język strony, z której się zapisałeś (w nim wyślemy powiadomienie), datę zapisu i wersję treści zgody. Nic więcej - ani adresu IP, ani danych przeglądarki.
- Podstawą jest zgoda (art. 6 ust. 1 lit. a RODO). Wycofujesz ją, pisząc na support@depositmonsters.com - usuwamy wtedy adres z listy.
- Lista leży w Cloudflare R2, w jurysdykcji Unii Europejskiej, i nie da się jej odczytać przez stronę - wyłącznie kluczem administratora.
- Do wysłania powiadomienia przekażemy adresy dostawcy poczty [do uzupełnienia: Brevo albo inny], wyłącznie na czas wysyłki.
- Po wysłaniu powiadomienia o premierze kasujemy całą listę. Adresu nie używamy do niczego innego i nikomu go nie sprzedajemy.
Zmiany polityki
O istotnych zmianach uprzedzimy w aplikacji, zanim wejdą w życie. Data ostatniej zmiany stoi na górze tej strony. Zmiana, która wymaga zgody, nie wejdzie bez zapytania o nią.