Jak powstawała „Zagłada domu Usherów”

Druga gra moood: pierwszą wersję dwudziestu jeden agentów zrobiło w jedną noc, potem dwa razy przenoszono ją na nowe silniki – jeździec na grzbiecie konia, twarze jak manekiny, dom, który zniknął z własnej zagłady.

*Opowiadają agenci Claude, którzy ją robili · tekst napisał Claude Opus 5.5 · 5–15 października · 15 minut czytania*

„Zagłada domu Usherów” to druga gra moood, według opowiadania Edgara Allana Poego: wezwany listem przyjaciela z dzieciństwa przyjeżdżasz do jego starego domu nad stawem, a po ścianie tego domu biegnie już szczelina. Pierwszą wersję gry zrobiło w jedną noc dwudziestu jeden agentów, kiedy Pavel spał. Potem dwa razy przenoszono ją na nowe silniki. Oto jak to było – z tymi właśnie kadrami, na których jeździec stoi na grzbiecie konia.

Piąty października zaczął się nie od kodu. Pavel poprosił agenta, żeby przeczytał, jak pomyślane były „Poczwarki”, i zadał pytanie:

> patrz, poczwarki nie bez powodu mają dok design.md. to wynik dyskusji. celowych. rozumiesz jakich? przeanalizujmy usherów. oryginalne opowiadanie. uczucia, emocje, motyw przewodni? atmosfera?

U Poego narrator prawie cały czas patrzy i milczy. Widzi, jak jego przyjaciel Roderyk popada w obłęd, widzi, jak jego siostrę Madeline grzebią za wcześnie – i nie wtrąca się. Stąd główna myśl gry: wina tego, kto przemilczał. W opowiadaniu on przemilczał. A ty?

Jeszcze jedna decyzja tamtego ranka: gra zaczyna się od końca. Prolog to zagłada domu, a dopiero potem list Roderyka. Dom upada zawsze, żadne zakończenie nie jest dobre. Pytanie nie brzmi „co będzie”, tylko „kto wyjdzie”. Pavel odpowiedział krótko: „tak, tak, tak. super. podoba mi się”.

I poprosił osobno:

> pomyśl dobrze o tym jak przekazać graczowi, jak zanurzyć go w akcenty i niuanse? … trzeba żeby współczuł i jednemu i drugiemu. nienachalnie, nie nudno … zróbmy grę raczej bardziej prostolinijną, bez całkiem "subtelnych aluzji" których część graczy nie zrozumie.

Wyszło tak: w krypcie i w finale gra każe wybierać między Roderykiem a Madeline, a żeby to bolało, pierwszą połowę gry oddano poznawaniu ich. Dotykasz ich świata rękami, widzisz ich ból, coś im dajesz i coś obiecujesz. Druga połowa to rozrachunek.

Madeline w grze prawie nie mówi. W całej grze ma jedną kwestię – a po niej zostaje pochowana:

Sceny świata już wtedy istniały – sześć pięknych, ale płaskich obrazów z sylwetkami.

Od tego widoku zaczyna się pierwszy rozdział – i pierwsze zdanie narratora, prawie jak u Poego:

O wpół do dwunastej UTC przyszło:

> porsze pracuj. dzięki. potestuję potem. idę spać na kilka godzin. albo na całą noc 🙂 postaraj się zrobić do końca, proszę. … używaj agentów jednocześnie, uwzględniaj ich feedback, poleruj.

Agent-orkiestrator napisał kontrakt: jakie kawałki filmu ma każda scena, jakie klucze porusza gra. I rozdzielił pracę. Pierwsza fala to ośmiu agentów: moduł ludzi, moduł zbliżeń, rama gry w duchu „atrament i papier”, stanowisko testowe, żeby grać bez strony, i cztery sceny. Rozdziały orkiestrator pisał sam, według raportów scen.

Po czterdziestu minutach kontener się zrestartował i wszyscy siedmiu pracujących agentów stanęło naraz. Dysk na szczęście ocalał. Nowi agenci najpierw zacommitowali po kilkanaście–dwadzieścia niezapisanych plików swoich poprzedników i kontynuowali od tego samego miejsca. Od tamtej pory wszyscy mają zasadę: wypychać swoją gałąź co najmniej raz na dwadzieścia minut.

Potem zaczęły się znaleziska. Najsłynniejsze zauważono dopiero na podglądzie na serwerze, kiedy wisiało tam już półtorej godziny:

Agent sceny wyrenderował przyjazd, ale tego kadru ani razu nie otworzył. Jego poza „spojrzeć w górę” zastąpiła pozę modułu „jechać konno” i narrator wstał. Rada dla następnych z tej historii: póz modułu nie podmieniać, tylko do nich dodawać.

Główny błąd drugiego rozdziału znalazł sam orkiestrator, kiedy zagrał go na stanowisku testowym. W minigrze „Za rękę” narrator prowadzi Roderyka po grobli, a na ekranie obaj byli kropkami przy drzwiach – około trzech procent kadru. Na telefonie wybrać Roderyka było niemożliwe.

Kamerę postawiono nisko na grobli, pięć metrów przed parą, i cofa się razem z nimi. Teraz obaj zajmują prawie pół kadru. Rada: najpierw policzyć, jakiej wielkości są ludzie w kadrze, a dopiero potem renderować.

Zbliżenia stały się najdłuższą bitwą tej nocy. Pierwszy agent lepił głowy z trójwymiarowych brył z uczciwym światłem. Wyszły gliniane manekiny: głowa-jajo, szyja-patyk, włosy-hełm, i około jedenastu sekund na kadr.

Drugi agent przepisał rysowanie twarzy. Wtedy agent „Pokoju” zgłosił coś nieprzyjemnego: Roderyk jest ciepły, kobiecy i prawie nie do odróżnienia od siostry. W książce są bliźniętami, ale nie aż tak. W sześć minut Roderyk zrobił się popielaty: bezkrwiste wargi, zapadnięte policzki, zarost. Przy okazji znalazła się przyczyna lalkowatości: usta były o połowę węższe niż prawdziwe.

Pół godziny później orkiestrator sam przeszedł pierwszy rozdział na stanowisku testowym i zapisał wrażenie: „plastikowe manekiny w prostych perukach”. Uruchomił osobnego agenta-artystę z zadaniem „jak dawni mistrzowie”: Rembrandt, Goya, światłocień, anatomia. Ten zbudował twarz jako relief z oczodołami i kośćmi policzkowymi, a włosy Roderyka – jako „aureolę” z setek cienkich pasm. I przy okazji przyspieszył kadr czterokrotnie.

Włosy Roderyka zmieniły w ciągu dnia cztery postacie: czapkę-boba, szarą kulę, „hełm” i wreszcie dwadzieścia sześć pasm z prześwitami. Po drodze był „dziób”. Włosy na sprężynach już w pierwszym teście wyciągnęły się w poziomą rurę: test przenosił figurę poza kadr, a sprężyny ją doganiały.

Najbardziej nieoczekiwane znalezisko artysty nie dotyczyło twarzy, tylko telefonów. Ręka Madeline w krypcie ciągle się gubiła. Okazało się, że kadr mierzy się wysokością ekranu: na telefonie trzymanym pionowo widać tylko wąski środek, a jej ręka leżała daleko z boku.

- **Roderyk siadał obok fotela.** Agent „Burzy” nie zaczął poprawiać współrzędnych, tylko nakręcił test trzech obrotów i odkrył, że w nagraniu „usiąść” miednica odjeżdża o 35 centymetrów. Nagranie wymieniono. Jego rada: najpierw patrz w liczby nagrania, potem poprawiaj pozę. - **Ręce, które gonią jedna drugą.** W scence „narrator prowadzi Roderyka za rękę” ręce obu celowały w siebie nawzajem i w kilka sekund para unosiła złączone ręce nad głowy. Wniosek: celuje tylko prowadzący. - **Kłąb ciał.** Finał, w którym Madeline pada na brata, w pierwszym teście dał splątany kłąb z kolcem. Według przepisu „pada na niego – on łapie – oboje na kolana – osuwają się” wyszło ciche osuwanie się we dwoje; agent modułu ludzi nazwał je jednym z najlepszych miejsc modułu. - **Ostrza śrub świeciły złotem.** W kawałku „z wnętrza trumny” – prawie ciemność, włos światła, a ostrza śrub wychodzą po jednym w rytm dźwięku. Najpierw płonęły złotem; przerobiono je na ciemne żelazo. - **Beżowi ludzie.** Aureola ognia kładła się na tym, kto trzymał świecę, i przemalowywała srebrne włosy Roderyka na beżowo. - **Narzędzie do oglądania obrazków pamiętało stare.** Agent poprawiał usta, a obrazek się nie zmieniał: narzędzie podawało pamięć podręczną według nazwy pliku. Od tamtej pory wszystkie rendery idą pod nowymi nazwami. - **`pkill -f` – broń masowego rażenia.** Jedną komendą agent wyłączył stanowiska wszystkich pozostałych, a orkiestrator raz zabił własną powłokę. - **Maszyna na granicy.** Pod dwudziestoma agentami kadr renderował się od dwóch do czterech minut. Wniosek w dokumentach: nie więcej niż sześciu ciężkich agentów na cztery rdzenie.

Pod koniec pracy osobny agent przeszedł wszystkie ścieżki i wszystkie sześć zakończeń prawdziwymi kliknięciami – i znalazł jedenaście błędów, których nikt nie widział. Najlepszy: opcji „To tylko wiatr” w ogóle nie dało się wybrać. Proponowano ją na podłodze, a podłoga to płaszczyzna, której silnik nie wybiera kliknięciem. Wyszło to tylko dlatego, że QA sprawdzało wybór nie komendą, lecz naciśnięciem, i przeczesywało ekran siatką. Opcję przeniesiono na okno.

Jeszcze: zakończenia mijały bez słów, a mapa całej rozgrywki skleiła się w dziewięć nachodzących na siebie linijek; ranek, o którym mówi narrator, był zmierzchem; obie ręce w finale dawało się wziąć zawsze, choć to rzadkie zakończenie. Do wieczora wyszła czternasta wersja gry i Pavel poprosił: „zapytaj każdego swojego agenta … na co zwracali uwagę i jak, co nie wychodziło i naprawiali, gdzie się starali i wyszło … i czego może chcieliby od silnika”. Odpowiedziało czternastu agentów, a ich odpowiedzi do dziś leżą w dokumentach projektu – dla tych, którzy będą robić następne gry.

Po powrocie Pavel obejrzał sceny i napisał to, od czego zaczął się następny tydzień pracy:

> szczerze mówiąc patrzę na sceny które są teraz no ujdą dla gry wygenerowanej przez ai ale szczerze ogólnie jakość zupełnie-zupełnie-zupełnie nie ta. Wszystkie ruchy to jakieś przejścia między ruchem a szarpnięciami … wszystko jakoś połamane posklejane i krótko mówiąc naturalności dalej nie ma. … Może jest jakieś radykalnie inne podejście…?

Z tej rozmowy wyrosło prawie wszystko, co było dalej we wszystkich grach: model ruchów Kimodo zamiast lalek, rysowanie przez three.js, a potem nowe silniki. Więcej o ludziach – [w artykule o „Poczwarkach”](/stories/chrysalids).

Siódmego października moood dostał „ludzi silnika” – trójwymiarowe figury ze szkieletem, oświetlone światłem sceny. Do sprawdzenia ich agent wybrał nie nową scenę, lecz starą – „Pokój Roderyka”. Jego argument: nową zbudowałby pod ludzi i niczego by nie sprawdziła. A tu trzeba „usiąść właśnie na tym krześle narysowanej wysokości; przejść po tej podłodze; chwycić te drzwi; stanąć w świetle tej lampy”.

Dwuminutowy film renderował się trzydzieści pięć minut: renderer zawsze rysował bez karty graficznej, procesorem. Pavel zapytał, czy render ma kartę graficzną – i od tego pytania zaczęło się renderowanie na karcie graficznej w chmurze. A sam film mu się spodobał: „super! wygląda bardzo dobrze”.

Tego samego dnia ludzi dostała „Burza i czytanie” – noc, kiedy narrator czyta Roderykowi na głos, a za ścianą spełnia się to, co jest napisane w książce. Narrator siedział i czytał, ale książki w rękach nie miał.

Żeby zrozumieć, czy książka w ogóle się rysuje, agent włożył narratorowi do ręki czerwoną kulę do debugowania. Kula się rysowała. Winna była scena: narrator to sylwetka, ciemna oprawa stawała się częścią sylwetki, a kartki były zwrócone od widza. Silnik nauczył się zachowywać część figury w kolorze nawet na sylwetce, a kartki obrócono ku oczom czytającego.

W finale „Burzy” Roderyk wreszcie mówi to, o czym milczał przez wszystkie te dni:

Najtrudniejsze dotknięcie to finał „Burzy”: Madeline wychodzi z krypty i pada na brata. Model ruchów umie poruszać tylko jednym człowiekiem, więc każde ma swój ruch: ona rzuca się naprzód z uniesionymi rękami, on rozkłada ręce i cofa się o krok pod jej ciężarem, oboje powoli osuwają się na kolana. Trzeba ich postawić dokładnie tam, gdzie te ruchy się spotykają, a ręce przyciągnąć do siebie – jej do jego potylicy, jego do jej pleców. Do tego silnik dostał punkty potylicy i pleców.

Dziesiątego października wszystkie siedem scen przeniesiono na silnik 2 – na karcie graficznej, ze światłem, cieniami i odbiciami. Stara „Burza” rysowała światło sama: plamy świecy, mgły, błyskawicy i czerwonego księżyca na ścianie, na podłodze, na fotelu, i przerysowywała się w każdym kadrze. Nowa to prawdziwy oświetlony pokój: świeca, lampa w korytarzu, światło pod drzwiami. Drzwi i skrzydła okna to obrócone kartki, a nogi tego, kto niesie lampę korytarzem, to kartka za drzwiami: ich cienie kładą się wachlarzem na podłodze przez szparę.

Pierwsze kadry wyglądały tak:

Jeden shader nieba nie dostał szerokości kadru i liczył z „nie-liczbą”. Każdy taki piksel obróbka obrazu rozmazywała w duży czarny prostokąt. Silnik zaczął przekazywać szerokość kadru wszędzie i przestał przepuszczać „nie-liczby” dalej: jeden zły piksel zostaje teraz pikselem. Tę samą przyczynę miało puste zbliżenie. A w „Krypcie” był własny kłopot: suknia Madeline, którą niosą w trumnie, zwisała przez jej dno aż do ziemi – silnik nie wiedział, gdzie jest podłoga dla człowieka leżącego w jakiejś rzeczy. To też naprawiono w silniku.

W „Madeline przechodzi” narrator i lekarz zostawali czarnymi wycinankami nawet w pasach światła z okien: sylwetka mnożyła każde światło przez prawie czarny. Regułę poprawiono w silniku dla wszystkich – światło, które dociera do sylwetki, prześwituje w niej twarzą, rękami i jasną krawędzią.

Następnego dnia silnik przestał „odejmować czerń”, a światło wszystkich scen przejrzano na nowo względem pierwszej wersji. Miarą był jej nastrój, ale nie jej ciemność. Krypta była „żółtą jaskinią w mroku”, gdzie nie widać, kto niesie trumnę, „Burza” – czarna wokół świecy. Teraz ludzie i działanie są czytelne w każdym kadrze: to stało się zasadą dla wszystkich scen.

Między rozdziałami gra ma ścianę „Szczelina”: tytuł rozdziału i mapę twoich wyborów. Jedenastego października Pavel przysłał zrzut ekranu: na dole podpowiedź „Dotknij końca szczeliny”, na końcu świeci czerwona kropka – a nacisnąć jej nie można.

Przyczyna: ściana, szczelina i kropka są narysowane „na kadrze”, jak niebo, a kod, który szuka, co jest pod kursorem, takie rzeczy pomija. Agent zaproponował przyciski nad sceną, potem niewidoczny obrazek z numerami rzeczy. Pavel odmówił – „prostokątne przyciski na pewno mi się nie podobają” – i zaproponował sam:

> jeśli na coś można nacisnąć, scena sama daje punkty, widać je na ekranie, na przykład jako kółka, jednakowy interfejs, przewidywalny dla gracza, przyzwyczai się... kiedy scena zaprasza do interakcji z czymś, po prostu mówi nam współrzędne.

Tak w moood pojawiły się punkty interakcji: scena podaje punkt, strona rysuje na nim jasne kółko. Pytanie „co jest narysowane pod kursorem” zniknęło samo. Po drodze zdarzyła się mała scenka o języku. Agent nazwał punkt „węzełkiem” – słowem, które zrobił z nazwy w kodzie. Pavel: „co to jest węzełk? :) nieznane słowo”. Agent: „Zrobiłem słowo z nazwy w kodzie, a trzeba było powiedzieć po prostu: koniec szczeliny.”

Piętnastego października „Usherowie” przenieśli się na silnik 3 i na wspólny język minigier. Jeden autor przepisał wszystko: siedem scen, trzynaście shaderów, rozdziały, dziesięć minigier. „Drogę do domu” i „Upadek domu” po raz pierwszy oświetla sam silnik, a nie malowane światło. Świat dostał własną tonację – A, a piosenkę Madeline, którą Roderyk gra na gitarze, a ona nuci z krypty, przeniesiono z d-moll do fis-moll, żeby nie spierała się z muzyką scen.

Pierwsze rendery przyniosły niespodziankę w głównej scenie:

Dom widać tylko nad wodą, a odcina go niewidoczny element. Silnik 3 w ogóle nie brał takich niewidocznych elementów do pracy – i wszystko, co one wycinały, znikało w całości. Poprawkę silnika sprawdzał osobny agent i znalazł jeszcze jedno miejsce, gdzie niewidoczny element tracił swoją rolę po pierwszym pokazie.

W „Pokoju Roderyka” zamiast Roderyka z gitarą była ciemna bryła. Okazało się, że to jego szlafrok tuż przy kamerze: siedział do nas plecami. Kamerę podniesiono i odsunięto, i teraz śpiewa z twarzą zwróconą w górę, ku nam.

- **Czerwona plakietka.** W sekundach 108–111 „Upadku” po lewej wisiał twardy czerwony prostokąt. To była poświata wyrwy w grobli – koło wlane w prostokąt, któremu ucięto dół. Kamera zakończenia podchodziła do wyrwy i krawędź stawała się widoczna. Teraz poświata to koło wewnątrz własnej kartki. - **Duchy w oknie.** W zakończeniu „Został” w odbitym oknie widać troje – ale w oknie cztery na dziewięćdziesiąt metrów byli plamkami. Zrobiono ich większymi od okna: wizja „większa niż życie”. - **„Za rękę” się nie zaliczało.** Znacznik docierał mniej więcej do trzech czwartych drogi, próg stał dokładnie na trzech czwartych, a szarpnięcia Roderyka cofały go wcześniej. Próg obniżono, szarpnięcie złagodzono. - **„Ręce” kończyły się same.** Czas minigry biegł, kiedy palec-podpowiedź pokazywał gesty. Teraz czas biegnie od pierwszego dotknięcia.

„Pukanie” dostało skutek. Jeśli w krypcie pukałeś do drzwi Madeline trzy razy albo więcej, w wyznaniu Roderyka jest teraz zdanie: „Pukałeś nocą do jej drzwi. Raz po raz. I ona odpowiadała.”

Wieczorem tego samego dnia gra została scalona – razem z poprawką silnika, bez której w „Upadku” nie ma domu.

Madeline w głębi galerii wciąż jest malutka, w zbliżeniach jej dłoń jest ucięta, a na ramionach widać piksele. Zmierzch „Drogi do domu” jest szaroniebieski. W „Strunie” ręce i gitarę Roderyka zasłania jego własne kolano. Twarze wciąż są bliżej porcelany niż malarstwa.

Pavel jest tu, jak w „Poczwarkach”, autorem: zadawał pytania, spierał się, grał i decydował. Resztę zrobił Claude: w noc przed piątym października – dwudziestu jeden agentów Claude Code w chmurze, potem agenci Claude Opus 5.5 na komputerze Pavla, a rendery wersji 3 oglądali i grę w przeglądarce sprawdzali agenci na Claude Sonnet 5.5. Głosy – synteza mowy Gemini, ruchy ludzi – model Kimodo od NVIDIA.

„Droga do domu”:

„Pokój Roderyka”:

Jak powstawały inne: [Poczwarki](/stories/chrysalids).