SKRYPT · publish_model.pyUŻYTKOWNICY · 1 → 340STATUS · w drodze do menu
Rozdział 15 / Narzędzia

Anatomia narzędzia: od skryptu na biurku do przycisku w menu

Odległość między „działa u mnie" a „działa u trzystu osób" to więcej niż jedna funkcja — to cała warstwa, o której artysta nigdy nie myśli.

TL;DR

Znasz już język (Rozdział 14). Ten rozdział pokazuje, co dzieje się między napisaniem działającego skryptu a momentem, w którym trzysta osób klika go codziennie, nie wiedząc nawet, że pod spodem jest Python. To odległość, którą łatwo pominąć, planując narzędzie — a to właśnie w niej mieści się większość realnej pracy pipeline TD.

Etap: Co odróżnia skrypt od narzędzia

Ten sam efekt, inne założenia o użytkowniku

Skrypt napisany „dla siebie" i narzędzie oddane działowi robią często dokładnie to samo — ale opierają się na zupełnie innych założeniach o tym, kto je uruchomi i w jakich warunkach.

Skrypt na biurku
  • Ścieżki wpisane na sztywno w kodzie
  • Zakłada konkretne, znane zaznaczenie
  • Błąd kończy się tracebackiem Pythona
  • Uruchamia go wyłącznie autor
Narzędzie studyjne
  • Ścieżki budowane z szablonu (Rozdział 4)
  • Samo odczytuje kontekst bieżącej sceny
  • Błąd to czytelny komunikat, nie traceback
  • Uruchamiają go setki osób dziennie
Etap: Generalizacja kontekstu

Skąd narzędzie wie, gdzie jest

Osobisty skrypt zwykle zaczyna się od ścieżki wpisanej wprost w kodzie — działa, bo autor wie, gdzie leży jego plik. Narzędzie studyjne nie ma tego luksusu: musi samo ustalić, w jakim showcie, shocie i tasku aktualnie pracuje artysta, i zbudować właściwą ścieżkę z szablonu z Rozdziału 4, zamiast z niczego nie domyślać się na stałe. To właśnie ta zmiana — z „wiem, gdzie to jest" na „umiem to znaleźć samodzielnie, niezależnie od tego, kto mnie uruchamia i gdzie" — jest sercem uogólnienia skryptu do narzędzia.

Etap: Nieszczęśliwa ścieżka

Programista sam sobie radzi, artysta nie

Kiedy osobisty skrypt się wywala, autor czyta traceback, poprawia linijkę i uruchamia ponownie — to dla niego rutyna. Artysta, który nie zna Pythona, widząc ten sam czerwony tekst w konsoli, nie ma z niego żadnej użytecznej informacji — wie tylko, że coś nie działa, i musi napisać do kogoś z pipeline'u, zwykle nie mówiąc nic więcej niż „narzędzie się wysypało". Dlatego narzędzie studyjne musi jawnie sprawdzać sytuacje, które osobisty skrypt może bezpiecznie zignorować: czy coś jest zaznaczone, czy folder publikacji istnieje, czy plik nie jest akurat zablokowany przez kogoś innego (Rozdział 6) — i przy każdej z nich pokazać zdanie w języku, który artysta zrozumie, zamiast stosu wywołań funkcji.

Etap: Pakowanie i dystrybucja

Ostatni krok, zanim ktokolwiek to kliknie

Gotowy, odporny na błędy skrypt wciąż nie jest jeszcze narzędziem — musi dotrzeć na każdą stację roboczą w dokładnie tej samej wersji, ładować się automatycznie przy starcie DCC, i pojawić się w miejscu, gdzie artysta go faktycznie znajdzie. Tym, jak kod trafia na trzysta maszyn naraz w spójnej wersji, zajmuje się Rozdział 17; tym, jak zamienia się w przycisk zamiast linijki do wklejenia w Script Editorze — Rozdział 16, zaraz dalej.

Słowniczek
Hardcoded value (wartość na sztywno)
Wartość wpisana wprost w kodzie zamiast odczytana z kontekstu czy konfiguracji.
Defensive programming
Jawne sprawdzanie warunków brzegowych i błędów, zanim doprowadzą do awarii.
Traceback
Techniczny zrzut stosu wywołań pokazywany przez Pythona przy błędzie — nieczytelny dla nie-programisty.