06.08.2026 11:38

Moonlight Animate: zapis, który przestał zależeć od rozmiaru pliku

⏱️ 3 min read
Share:

Jest taki moment w pracy nad dużą ilustracją, którego nauczyliśmy się wszyscy nienawidzić: naciskasz Ctrl+S i patrzysz na pasek postępu. Im dłużej pracujesz nad projektem, tym dłużej czekasz — bo klasyczny plik projektu to jeden ciągły strumień danych i każdy zapis przepisuje go w całości. Jedna kreska czy trzy godziny malowania — koszt ten sam, rosnący z rozmiarem pliku.

Od dziś Moonlight Animate zapisuje inaczej.

Plik, który jest bazą danych

Nowy kontener projektu .mart przechowuje obraz tak, jak program trzyma go w pamięci: pocięty na kafle 128×128 pikseli, każdy kafel jako osobny rekord w wewnętrznej bazie danych (tej samej sprawdzonej technologii bazodanowej, która obsługuje miliardy urządzeń na świecie). Zapis po kresce to transakcja obejmująca kilka zmienionych kafli — koszt zależy od edycji, nie od dokumentu.

Zmierzyliśmy to uczciwie, na tej samej maszynie i tych samych projektach:

| Co robisz | Rozmiar projektu | Zapis klasyczny | Zapis przyrostowy | |---|---|---|---| | Ctrl+S po narysowaniu kreski | mały (~5 MB) | 406 ms | 9 ms | | | średni (~45 MB) | 6,4 s | 67 ms | | | duży (~180 MB) | 25,2 s | 321 ms | | Otwarcie projektu | duży | 4,6 s | 1,8 s |

I koszty, bo te też trzeba pokazać: pierwszy zapis dużego projektu jest ok. 1,3× wolniejszy (płacony raz), a plik jest o ~2% większy. Dzień pracy nad dużym projektem z zapisem co 10 minut: klasycznie ~20 minut czekania, teraz ~46 sekund.

Bezpieczeństwo przede wszystkim

Format, w którym trzymasz swoją pracę, musi być nudny i przewidywalny. Dlatego:

  • Duże operacje (zmiana rozmiaru płótna, spłaszczenie, zmiana trybu koloru) uczciwie robią pełny zapis — takich zmian nie da się opisać listą fragmentów, więc program nawet nie próbuje.
  • Bezpiecznik: jeśli dokument zgłasza zmiany, o których licznik zmian nic nie wie, program wymusza pełny zapis. Najgorszy scenariusz każdego przyszłego błędu to wolniejszy zapis — nigdy utracona praca.
  • Plik podmieniony na dysku (kopia zapasowa, chmura) nigdy nie jest łatany — program rozpoznaje podmianę po wewnętrznym identyfikatorze zapisu i przepisuje całość.
  • Po każdym zapisie na dysku leży jeden samowystarczalny plik, gotowy do skopiowania.
  • Starsze pliki .mart otwierają się bez zmian i przechodzą na nowy kontener przy pierwszym zapisie.

Autozapis bez przycięć — i odzysk, który obejmuje wszystko

Kopia odzyskiwania też jest teraz przyrostowa i osobna dla każdej otwartej zakładki. Koniec chwilowych zacięć interfejsu przy autozapisie dużego projektu — i koniec sytuacji, w której po awarii wraca tylko dokument, na który akurat patrzyłeś. Program proponuje odzysk każdej niezapisanej zakładki, z prawdziwym czasem ostatniej kopii (czytanym z wnętrza pliku, nie z systemowej daty modyfikacji, która potrafi kłamać).

Dlaczego to robimy

Bo różnica między „zapisuję co 10 minut" a „zapisuję odruchowo po każdej ważnej kresce" to różnica między utratą godziny pracy a utratą niczego. Zapis, który nie kosztuje, to zapis, którego się nie odkłada — a wszystko inne w tym wpisie jest tylko środkiem do tego celu.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.