Współpraca na żywo nad sceną — teraz cała oś czasu
Cała oś czasu w czasie rzeczywistym
Współpraca na żywo w Moonlight Animate pozwalała już wspólnie malować, przesuwać warstwy, sterować kamerą 2D oraz rozmawiać głosem i tekstem. Brakowało jednak jednej rzeczy: strukturalne edycje osi czasu — przesuwanie i przycinanie klipów, klatki kluczowe, ścieżki audio, a zwłaszcza praca w arkuszu klatek (xsheet) — były lokalne. Każdy współtwórca widział własną wersję montażu, a sesja po cichu się rozjeżdżała. Tę lukę właśnie domknęliśmy: teraz synchronizuje się cała oś czasu.
Co od teraz dociera do wszystkich
- Klipy — dodanie, usunięcie, przesunięcie i przycięcie klipu (wideo/raster) widzą wszyscy.
- Klatki kluczowe — animacja właściwości klipu (pozycja/skala/obrót/krycie) synchronizuje się w całości.
- Audio — dodawanie/usuwanie/przesuwanie/przycinanie klipów dźwiękowych.
- Arkusz klatek (xsheet) — strukturalne operacje animacji klatka-po-klatce: dodaj pustą / usuń / duplikuj / hold / odwróć / wklej klatki cel. (Samo malowanie w klatkach synchronizowało się już wcześniej.)
A do tego najważniejsze: wszystkie te edycje są teraz w pełni cofalne podczas sesji współpracy — wcześniej Cofnij było w trybie współpracy wyłączone. Co więcej, samo Cofnij/Ponów też się synchronizuje: gdy ktoś cofnie przesunięcie klipu, jego cofnięcie dociera do reszty zespołu, więc montaż pozostaje spójny.
Jak to działa pod maską
Wzorowaliśmy się na sprawdzonej już warstwie malarskiej: każda zmiana zawsze trafia na stos cofania, a rozsyłana jest jako lekka „operacja osi czasu" do pozostałych współtwórców. Przeciwne echo (odbicie zdalnej zmiany z powrotem jako własnej) blokuje strażnik, więc nie powstają pętle ani „walka" o ten sam klip. Identyfikatory nowych obiektów są przydzielane w przestrzeni nazw konkretnego użytkownika, więc dwóch animatorów dodających klip jednocześnie nigdy nie wejdzie sobie w drogę.
Dla arkusza klatek poszliśmy o krok dalej: operacje strukturalne wysyłają migawkę zmienionych klatek (stany komórek + piksele), dzięki czemu duplikat, odwrócenie czy wklejenie odtwarzają się u współtwórcy dokładnie tak samo, niezależnie od jego lokalnego stanu — i pozostają cofalne po obu stronach.
Co dalej
To pierwsza pełna odsłona synchronizacji osi czasu. W planach: lżejszy transfer pikseli arkusza klatek (różnicowy zamiast pełnych klatek przy dużych zakresach) oraz dosynchronizowanie stanu przy dołączaniu do sesji w trakcie. Miłej wspólnej animacji!