kakaki soft

// DZIENNIK TWÓRCY · 4 min czytania · Krzysztof Pliszka

Zapis gry bez konta i przenoszenie go krótkim kodem

W moich grach nie zakładasz konta, a postęp i tak się zapisuje. Jeśli chcesz grać na kilku urządzeniach, możesz je połączyć ośmioznakowym kodem.

Zapis zostaje u ciebie

Zacznę od najprostszej rzeczy: gdy grasz w moją grę, zapis ląduje w pamięci twojej przeglądarki, na twoim urządzeniu. Nie trzeba się logować, podawać adresu e-mail ani wymyślać hasła. Otwierasz grę, grasz, zamykasz kartę, a następnym razem wybierasz „Kontynuuj”.

To rozwiązanie ma wygodną stronę: gra działa też bez internetu i nikt nie musi mi zostawiać żadnych danych. Ma też drugą stronę: zapis jest przypięty do jednego urządzenia i jednej przeglądarki. Jeśli wyczyścisz dane przeglądarki, możesz go stracić. Dlatego dołożyłem kilka sposobów na to, żeby postępów nie zgubić.

Sloty i autozapis

W grach możesz mieć kilka niezależnych zapisów, tak jak kilka kartek w zeszycie. Na przykład w Mojej knajpie jest sześć slotów, czyli miejsc na zapis, oraz osobny „Autozapis”. Autozapis robi się sam co jakiś czas, więc nawet jeśli zapomnisz kliknąć „Zapisz”, nie stracisz całej pracy.

Każdy slot pamięta nazwę i krótkie podsumowanie, na przykład który to dzień gry albo ile masz pieniędzy. Dzięki temu na liście widzisz, który zapis jest który, i nie musisz ich wczytywać po kolei.

Zapis jednej gry nie wczyta się w innej. Każda gra ma własny „klucz” i własne nazwy w pamięci, więc zapisy nie mieszają się nawet wtedy, gdy wszystkie gry leżą pod jednym adresem.

Co jest w zapisie

Zapis to po prostu opis stanu gry: co zbudowałeś, ile masz pieniędzy, jak dzień się toczy, jakie ustawienia wybrałeś. Gra zamienia to na tekst, który zaczyna się od oznaczenia „KKS1”. Wygląda jak długi ciąg liter i cyfr.

Ten tekst jest skompresowany, czyli zmniejszony, tak jak plik ZIP, więc zajmuje kilka razy mniej miejsca. Jest też przemieszany, więc nie da się go odczytać gołym okiem ani łatwo poprawić ręcznie. Powiem szczerze: to nie jest prawdziwa kryptografia. Kluczem do tej mieszanki jest nazwa gry zapisana w jej kodzie. Ma to chronić przed przypadkowym uszkodzeniem i zaglądaniem, a nie przed kimś, kto bardzo się uprze. Do zapisu dodana jest też suma kontrolna, jak pieczątka sprawdzająca, czy tekst nie został po drodze zmieniony albo uszkodzony. Jeśli się nie zgadza, gra odmawia wczytania, zamiast wczytać błędny stan.

Plik zapisu i kopia ręczna

Zapis możesz wyeksportować do pliku albo skopiować jako tekst. Potem wystarczy go wczytać na innym urządzeniu: wybierasz plik albo wklejasz tekst, a gra wstawia go do pierwszego wolnego slotu. To działa bez internetu i bez żadnego konta, i dobrze sprawdza się jako zapasowa kopia przed ważnym eksperymentem.

Gra uważa też na wersje. Jeśli zapis pochodzi z nowszej wersji gry niż ta, którą masz otwartą, nie wczytuje go na siłę, tylko prosi o odświeżenie strony.

Gdy chcesz grać na telefonie i komputerze

Plik przenosi się ręcznie, a ja chciałem czegoś wygodniejszego. Dlatego jest opcjonalna synchronizacja zapisów. Słowo „opcjonalna” jest najważniejsze: bez niej wszystko działa jak dotąd, a ona sama nic nie robi, dopóki jej nie włączysz.

Synchronizacja nie wymaga e-maila ani hasła. Gdy ją włączasz, urządzenie dostaje losowy anonimowy klucz, czyli długi ciąg znaków. To on jest twoim „kontem”. Jedno takie konto działa we wszystkich moich grach naraz.

Żeby podłączyć drugie urządzenie, robisz tak:

  1. Na pierwszym urządzeniu otwierasz okno „Synchronizacja” w menu gry i wybierasz „Połącz kolejne urządzenie”. Gra pokazuje krótki kod, na przykład w formie K7Q4-MX2P, czyli osiem znaków.
  2. Na drugim urządzeniu otwierasz „Synchronizację”, wybierasz „Mam kod z innego urządzenia” i wpisujesz ten kod.
  3. Gotowe. Oba urządzenia są połączone.

Kod ważny jest tylko przez około 10 minut i działa jeden raz. Dzięki temu nawet jeśli ktoś go zobaczy przez ramię, za chwilę będzie bezużyteczny. Krótki kod jest też łatwiejszy do przepisania niż długi klucz.

Jest też klucz zapasowy: pełny, długi ciąg, który możesz zapisać w bezpiecznym miejscu. Zastępuje kod, gdy nie masz pod ręką żadnego połączonego urządzenia. Trzeba go jednak traktować jak hasło, bo kto ma klucz, ma dostęp do twoich zapisów.

Co jest wysyłane i kiedy

Gdy synchronizacja jest włączona, po każdym zapisie slotu (także autozapisie) gra wysyła ten sam tekst zapisu na mój serwer, razem z krótkim opisem: nazwą zapisu i podsumowaniem w rodzaju „Rok 2, dzień 34, 12 300 zł”. Dochodzi do tego numer wersji gry. Gra nie zbiera twojego imienia ani e-maila, bo ich nie podajesz.

Wysyłka nie dzieje się co sekundę. Gra czeka i wysyła każdy slot najwyżej raz na minutę, a liczy się najnowsza wersja. Gdy nie ma internetu, zapis czeka w kolejce w twoim urządzeniu i idzie dalej, gdy sieć wraca, albo kiedy znów otworzysz grę. Przed wyjściem z gry na stronę z listą gier też jest wysyłany to, co czeka.

Na drugim urządzeniu, w menu wczytywania, widać, które zapisy są nowsze w chmurze, i można je pobrać.

Co jeśli dwa urządzenia się pokłócą

Zdarza się, że ten sam zapis zmienisz na telefonie i na komputerze, zanim zdążą się dogadać. Wtedy gra nie wybiera za ciebie. Pokazuje okno „Dwie różne wersje zapisu” z opisem obu (na przykład dzień gry i pieniądze) i pyta, którą wersją grać. Druga zostanie zastąpiona. Możesz też odłożyć decyzję na później.

Wolę zapytać, niż po cichu skasować komuś godziny gry.

Odłączanie i usuwanie

W oknie synchronizacji możesz odłączyć urządzenie. Zapisy zostają wtedy na nim i na serwerze. Możesz też usunąć konto razem ze wszystkimi zapisami z serwera. Tego nie da się cofnąć, więc gra najpierw pyta o potwierdzenie, a zapisy na twoich urządzeniach zostają nietknięte.

Podsumowanie

Domyślnie zapis jest tylko twój i leży na twoim urządzeniu. Jeśli chcesz, możesz go przenieść plikiem, wkleić jako tekst albo połączyć urządzenia krótkim kodem. Wszystko jest dobrowolne, a gra działa tak samo, czy z synchronizacją, czy bez.

Gry tworzy po godzinach, dla frajdy, jedna osoba: Krzysztof Pliszka (kakaki soft). O studiu →

Inne wpisy w dzienniku