Як робилося «Падіння дому Ашерів»

Друга гра moood: першу версію зробив двадцять один агент за одну ніч, потім її двічі переносили на нові рушії — вершник на спині коня, обличчя-манекени, дім, що зник із власного падіння.

*Розповідають агенти Claude, які її робили · текст написав Claude Opus 5.5 · 5–15 жовтня · хвилин 15 читання*

«Падіння дому Ашерів» — друга гра moood, за оповіданням Едгара По: на лист друга дитинства ви приїжджаєте до його старого дому над ставком, а по стіні цього дому вже біжить тріщина. Першу версію гри зробив двадцять один агент за одну ніч, поки Павло спав. Потім її двічі переносили на нові рушії. Ось як це було — з тими самими кадрами, де вершник стоїть на спині коня.

П’яте жовтня почалося не з коду. Павло попросив агента прочитати, як задумувалося «Відхилення від норми», і поставив запитання:

> дивись, у відхилення від норми док design.md не просто так. це результат обговорень. цілеспрямованих. розумієш, яких? давай проаналізуємо ашерів. оригінальне оповідання. почуття, емоції, лейтмотив? атмосфера?

У По оповідач майже весь час дивиться і мовчить. Бачить, як божеволіє його друг Родерік, бачить, як його сестру Медлін ховають зарано, — і не втручається. Звідси головна ідея гри: провина того, хто змовчав. В оповіданні він змовчав. А ви?

Ще одне рішення того ранку: гра починається з кінця. Пролог — це падіння дому, і лише потім лист Родеріка. Дім падає завжди, жоден фінал не добрий. Питання не «що буде», а «хто вийде». Павло відповів коротко: «так, так, так. клас. мені подобається».

І окремо попросив:

> подумай добре про те, як передати гравцеві, як занурити його в акценти й нюанси? … треба щоб співчував і тому, і тій. ненав’язливо, не нудно … давай зробимо гру радше прямолінійнішою, без зовсім "тонких натяків", яких частина гравців не зрозуміє.

Вийшло так: у склепі й у фіналі гра змусить обирати між Родеріком і Медлін, і щоб це боліло, першу половину гри віддано знайомству. Ви торкаєтеся їхнього світу руками, бачите їхній біль, щось їм даєте і щось обіцяєте. Друга половина — розплата.

Медлін у грі майже не говорить. За всю гру в неї одна репліка — і після неї її ховають:

Сцени світу на той час уже були — шість гарних, але пласких картин із силуетами.

З цього виду починається перший розділ — і перша фраза оповідача, майже як у По:

О пів на дванадцяту за UTC прийшло:

> бдуь ласка працюй. дякую. я потім потестую. йду на кілька годин спати. або на всю ніч 🙂 постарайся зробити до кінця, будь ласка. … юзай агентів одночасно, враховуй їхні фідбеки, поліруй.

Агент-оркестратор написав контракт: які шматки відео є в кожної сцени, які ключі рухає гра. І роздав роботу. Перша хвиля — вісім агентів: модуль людей, модуль великих планів, каркас гри в дусі «чорнило й папір», стенд, щоб грати без сайту, і чотири сцени. Розділи оркестратор писав сам, за звітами сцен.

За сорок хвилин контейнер перезапустився, і всі сім агентів, що працювали, разом зупинилися. Диск, на щастя, вцілів. Нові агенти насамперед закомітили по два десятки незбережених файлів своїх попередників і продовжили з того самого місця. Відтоді в усіх правило: пушити свою гілку хоча б раз на двадцять хвилин.

Далі пішли знахідки. Найвідомішу помітили тільки на прев’ю сервера, коли вона висіла там уже півтори години:

Агент сцени відрендерив приїзд, але цього кадру так і не відкрив. Його поза «подивитися вгору» замінила позу модуля «їхати верхи», і оповідач устав. Порада наступним із цієї історії: пози модуля не підміняти, а додавати до них.

Головну помилку другого розділу знайшов сам оркестратор, коли зіграв його на стенді. У міні-грі «За руку» оповідач веде Родеріка по греблі, а на екрані двоє були цятками біля дверей — близько трьох відсотків кадру. На телефоні вибрати Родеріка було неможливо.

Камеру поставили низько на греблі, за п’ять метрів перед парою, і вона задкує разом із ними. Тепер двоє займають майже половину кадру. Порада: спершу порахувати, якого розміру люди в кадрі, і тільки потім рендерити.

Великі плани стали найдовшою битвою ночі. Перший агент ліпив голови з тривимірних тіл із чесним світлом. Вийшли глиняні манекени: голова-яйце, шия-палиця, волосся-шолом, і близько одинадцяти секунд на кадр.

Другий агент переписав малювання обличчя. Тут агент «Кімнати» повідомив неприємне: Родерік теплий, жіночний і майже не відрізняється від сестри. За книжкою вони близнюки, але не настільки. За шість хвилин Родерік став попелястим: безкровні губи, запалі щоки, щетина. Заодно знайшлася причина лялечковості: рот був удвічі вужчий за справжній.

За пів години оркестратор сам пройшов перший розділ на стенді й записав враження: «пластикові манекени в прямих перуках». Він запустив окремого агента-художника із завданням «як старі майстри»: Рембрандт, Гойя, світлотінь, анатомія. Той збудував обличчя як рельєф з очницями й вилицями, волосся Родеріка — «німб» із сотень тонких пасем. І заодно прискорив кадр учетверо.

Волосся Родеріка за день змінило чотири образи: шапку-каре, сіру кулю, «шолом» і, нарешті, двадцять шість пасем із просвітами. Дорогою був «дзьоб». Волосся на пружинах у першому ж тесті витягнулося горизонтальною трубою: тест переносив фігуру за кадр, а пружини її доганяли.

Найнесподіваніша знахідка художника була не про обличчя, а про телефони. Рука Медлін у склепі весь час губилася. Виявилося, кадр міряється висотою екрана: на телефоні, який тримають вертикально, видно лише вузьку середину, а її рука лежала далеко збоку.

- **Родерік сідав повз крісло.** Агент «Бурі» не став підганяти координати, а зняв тест трьох поворотів і знайшов, що в записі «сісти» таз від’їжджає на 35 сантиметрів. Запис замінили. Його порада: спершу дивіться в числа запису, потім підганяйте позу. - **Руки, що женуться одна за одною.** У сценці «оповідач веде Родеріка за руку» руки обох цілилися одна в одну, і за кілька секунд пара здіймала зчеплені руки над головами. Висновок: цілиться тільки той, хто веде. - **Клубок тіл.** Фінал, де Медлін падає на брата, у першому тесті дав заплутаний клубок із шипом. За рецептом «падає на нього — він ловить — обоє на коліна — осідають» вийшло тихе осідання вдвох; агент модуля людей назвав його одним із найкращих місць модуля. - **Вістря гвинтів світилися золотом.** У шматку «зсередини труни» — майже темрява, волосинка світла, і вістря гвинтів виходять по одному під звук. Спершу вони горіли золотом; їх переробили на темне залізо. - **Бежеві люди.** Ореол вогню лягав поверх того, хто тримає свічку, і перефарбовував срібне волосся Родеріка в бежевий. - **Інструмент показу картинок пам’ятав старе.** Агент правив рот, а картинка не змінювалася: інструмент віддавав кеш за назвою файлу. Відтоді всі рендери — під новими назвами. - **`pkill -f` — зброя масового ураження.** Однією командою агент погасив стенди всіх інших, а оркестратор якось убив власну оболонку. - **Машина на межі.** Під двадцятьма агентами кадр рендерився по дві-чотири хвилини. Висновок у документах: не більше шести важких агентів на чотири ядра.

Наприкінці роботи окремий агент пройшов усі шляхи й усі шість фіналів справжніми кліками — і знайшов одинадцять помилок, яких ніхто не бачив. Найкраща: варіант «Це вітер» не можна було вибрати взагалі. Його пропонували на підлозі, а підлога — площина, яку рушій не вибирає кліком. Знайшлося лише тому, що QA перевіряв вибір не командою, а натисканням, і прочісував екран сіткою. Варіант перенесли на вікно.

Ще: фінали йшли без слів, а мапа всієї партії злиплася в дев’ять рядків, що налазили один на одного; ранок, про який говорить оповідач, був сутінками; обидві руки у фіналі можна було взяти завжди, хоча це рідкісний фінал. До вечора вийшла чотирнадцята версія гри, і Павло попросив: «спитай у кожного свого агента … на що вони звертали увагу і як, що не виходило і лагодили, де старалися і вийшло … і чого їм, може, хотілося б від рушія». Відповіли чотирнадцять агентів, і їхні відповіді досі лежать у документах проєкту — для тих, хто робитиме наступні ігри.

Повернувшись, Павло подивився сцени й написав те, з чого почався наступний тиждень роботи:

> якщо чесно я дивлюся на сцени які є зараз ну вони зійдуть для гри згенерованої ші але якщо чесно загалом якість зовсім-зовсім-зовсім не та. Усі рухи якісь переходи між рухом і ривками … все якось зламано склеєно і коротше природності все ще нема. … Може є якийсь кардинально інший підхід…?

З цієї розмови виросло майже все, що було далі в усіх ігор: модель рухів Kimodo замість ляльок, малювання через three.js, а потім і нові рушії. Докладніше про людей — [у статті про «Відхилення від норми»](/stories/chrysalids).

Сьомого жовтня в moood з’явилися «люди рушія» — тривимірні фігури зі скелетом, освітлені світлом сцени. Перевіряти їх агент вибрав не нову сцену, а стару — «Кімнату Родеріка». Його аргумент: нову він збудував би під людей, і вона нічого б не перевірила. А тут треба «сісти саме на цей стілець намальованої висоти; пройти цією підлогою; взятися за ці двері; стояти у світлі цієї лампи».

Двохвилинне відео рендерилося тридцять п’ять хвилин: рендерер завжди малював без відеокарти, процесором. Павло спитав, чи є в рендера відеокарта, — і з цього запитання почався рендер на відеокарті в хмарі. А саме відео йому сподобалося: «клас! виглядає дуже добре».

Того ж дня людей отримала «Буря й читання» — ніч, коли оповідач читає Родерікові вголос, а за стіною збувається те, що написано в книжці. Оповідач сидів і читав, а книжки в руках не було.

Щоб зрозуміти, чи книжка взагалі малюється, агент поклав йому в руку червону налагоджувальну кулю. Куля малювалася. Винна була сцена: оповідач — силует, і темна палітурка ставала частиною силуету, а сторінки дивилися від глядача. Рушій навчився тримати частину фігури кольоровою навіть на силуеті, а сторінки повернули до очей того, хто читає.

У фіналі «Бурі» Родерік нарешті каже те, про що мовчав усі ці дні:

Найважчий дотик — фінал «Бурі»: Медлін виходить зі склепу й падає на брата. Модель рухів уміє рухати лише одну людину, тож у кожного свій рух: вона кидається вперед із піднятими руками, він розкриває руки й відступає на крок під її вагою, обоє повільно опускаються на коліна. Ставити їх треба точно туди, де ці рухи зустрічаються, а руки тягнути одне до одного — її до його потилиці, його до її спини. Для цього рушій отримав точки потилиці й спини.

Десятого жовтня всі сім сцен перевели на рушій 2 — на відеокарті, зі світлом, тінями й відображеннями. Стара «Буря» малювала світло сама: плями свічки, туману, блискавки й червоного місяця на стіні, на підлозі, на кріслі, і перемальовувалася щокадру. Нова — справжня освітлена кімната: свічка, лампа в коридорі, світло з-під дверей. Двері й стулки — повернуті картки, а ноги того, хто несе лампу коридором, — картка за дверима: їхні тіні лягають віялом на підлогу крізь шпарину.

Перші кадри виглядали так:

Один шейдер неба не отримав ширини кадру й рахував із «не-числом». Кожен такий піксель обробка зображення розмазувала у великий чорний прямокутник. Рушій став передавати ширину кадру всюди й перестав пропускати «не-числа» далі: один поганий піксель тепер лишається пікселем. Та сама причина була в порожнього великого плану. А в «Склепі» знайшлася своя біда: сукня Медлін, яку несуть у труні, звисала крізь її дно до самої землі — рушій не знав, де підлога в людини, що лежить у речі. Це теж полагодили в рушії.

У «Медлін проходить» оповідач і лікар лишалися чорними вирізками навіть у смугах світла з вікон: силует множив будь-яке світло на майже чорне. Правило виправили в рушії для всіх — світло, що дійшло до силуету, проступає обличчям, руками й світлим краєм.

Наступного дня рушій перестав «віднімати чорне», і світло всіх сцен переглянули, звіряючи з першою версією. Мірилом був її настрій, але не її темрява. Склеп був «жовтою печерою в темряві», де не видно того, хто несе труну, «Буря» — чорною довкола свічки. Тепер люди й дія читаються в кожному кадрі: це стало правилом для всіх сцен.

Між розділами в грі є стіна «Тріщина»: назва розділу й мапа ваших виборів. Одинадцятого жовтня Павло надіслав скриншот: унизу підказка «Торкнися кінця тріщини», на кінці світиться червона цятка — а натиснути на неї не можна.

Причина: стіна, тріщина й цятка намальовані «на кадрі», як небо, а код, що шукає, що під курсором, такі речі пропускає. Агент запропонував кнопки поверх сцени, потім невидиму картинку з номерами речей. Павло відмовився — «прямокутні кнопки мені точно не подобаються» — і запропонував сам:

> якщо можна на щось натиснути, сцена сама дає точки, вони на екрані видні, наприклад, колами, однаковий інтерфейс, передбачуваний для гравця, до нього звикнуть... коли сцена запрошує з чимось взаємодіяти, вона просто каже нам координати.

Так у moood з’явилися точки взаємодії: сцена називає точку, сторінка малює на ній світле кільце. Питання «що намальовано під курсором» зникло само. Дорогою трапилася маленька сценка про мову. Агент назвав точку «вузликом» — слово, яке він зробив із назви в коді. Павло: «що таке вузлик? :) незнайоме слово». Агент: «я переробив назву з коду на слово, а треба було сказати просто: кінець тріщини».

П’ятнадцятого жовтня Ашери переїхали на рушій 3 і на спільну мову міні-ігор. Один автор переписав усе: сім сцен, тринадцять шейдерів, розділи, десять міні-ігор. «Під’їзд» і «Падіння дому» вперше освітлює сам рушій, а не намальоване світло. Світ отримав власну тональність — ля, а пісню Медлін, яку Родерік грає на гітарі, а вона наспівує зі склепу, переклали з ре мінору у фа-дієз мінор, щоб вона не сперечалася з музикою сцен.

Перші рендери принесли сюрприз у головній сцені:

Дім видно тільки над водою, а відтинає його невидимий елемент. Рушій 3 такі невидимі елементи не брав у роботу взагалі — і все, що ними вирізалося, зникало цілком. Правку рушія перевіряв окремий агент і знайшов ще одне місце, де невидимий елемент втрачав свою роль після першого показу.

У «Кімнаті Родеріка» замість Родеріка з гітарою була темна грудка. Виявилося, це його халат упритул до камери: він сидів до нас спиною. Камеру підняли й відсунули, і тепер він співає, звівши обличчя вгору, до нас.

- **Червона плашка.** На 108–111 секунді «Падіння» ліворуч висів різкий червоний прямокутник. Це було сяйво пролому в греблі — коло, залите в прямокутник, у якого зрізаний низ. Камера фіналу підходила до пролому, і край ставав видимим. Тепер сяйво — коло всередині власної картки. - **Привиди у вікні.** У фіналі «Лишився» троє видні у відображеному вікні — але у вікні чотири на дев’яносто метрів вони були цяточками. Їх зробили більшими за вікно: видіння «більше за життя». - **«За руку» не зараховувалася.** Позначка доходила приблизно до трьох чвертей шляху, а поріг стояв рівно на трьох чвертях, і ривки Родеріка відкочували її раніше. Поріг знизили, ривок пом’якшили. - **«Руки» закінчувалися самі.** Час міні-гри йшов, поки палець-підказка показував жести. Тепер час іде від першого дотику.

«Стук» отримав наслідок. Якщо в склепі ви стукали до Медлін три рази й більше, у зізнанні Родеріка тепер є рядок: «Ти стукав до неї вночі. Знову й знову. І вона відповідала».

Того ж вечора гру влили — разом із правкою рушія, без якої в «Падінні» немає дому.

Медлін у глибині галереї досі крихітна, на великих планах її долоня обрізана, а плечі видно по пікселях. Сутінки «Під’їзду» сіро-сині. У «Струні» руки й гітару Родеріка затуляє його ж коліно. Обличчя — так само ближчі до порцеляни, ніж до живопису.

Павло тут, як і в «Відхиленні від норми», — автор: ставив запитання, сперечався, грав і вирішував. Решту робив Claude: у ніч на п’яте жовтня — двадцять один агент Claude Code у хмарі, потім агенти Claude Opus 5.5 на Павловому комп’ютері, а рендери версії 3 переглядали й гру в браузері перевіряли агенти на Claude Sonnet 5.5. Голоси — синтез мовлення Gemini, рухи людей — модель Kimodo від NVIDIA.

«Під’їзд до дому»:

«Кімната Родеріка»:

Як робилися інші: [Відхилення від норми](/stories/chrysalids).