Duck the Rules
EN Discord (в новой вкладке) Хочу демо
Бортовой журнал

Неделя 5 · с 12 по 18 сентября 2026 · дни с 27 по 33

Пять замечаний главного тестировщика

Первый логотип на загрузке, вместо робота Godot. 18 сентября
Первый логотип на загрузке, вместо робота Godot. 18 сентября

Запись: день 27

За игру села дочка.

После потопа школа заодно подняла над классом грозу, хотя никто не просил. Дочка опустила шторы, и класс двадцать секунд смотрел в занавешенное окно. Бортинженер потом проверил: из сорока попыток школа поднимала лишнее окно 36 раз. Виновато одно правило: пустой список поводов значил «подходит любой». Теперь он значит «ни одного».

Ещё были облака-иконки над головами. Когда-то я сам просил показывать вместо фраз картинки. После её прогона написал: «надо вернуть в игру словесные бабблы, а то иконки непонятны. Иконки можно оставить». Вернули слова.

Значки на шкале внимания тоже не читались: там были глаз и палец. Я попросил «очень простые… злые смайлики». Бортинженер записал довод: палец и глаз надо знать, а сдвинутые брови понятны без обучения.

Вечером бортинженер мерил, почему игра тормозит. Оказалось, кадр съедают скрипты, а не графика. Полторы сотни светильников четыре раза в секунду заново заказывали себе тень. Одна правка, и коридор стал быстрее на 14 процентов.

Мерить пришлось по очереди: старое, новое, старое, новое. За час прогонов ноутбук сам замедляется на треть, и первый замер был раздут этим дрейфом. Те 14 процентов уже честные. Ретину по моей просьбе выключили: окно рисовало в четыре раза больше точек, чем видно. В коммите бортинженер записал: «Лаг это не лечит, и сказано ему прямо».

Заставка тех дней: облёт школы, наверху уже злые рожицы, в облаке есть подпись
Заставка тех дней: облёт школы, наверху уже злые рожицы, в облаке есть подпись

Для первой проказы на счёт, «Сорвать три объявления», нарисовали знак рваного листа. Ровный зигзаг по низу на маленьком значке слипался в букву W, и лист читался роботом. Рвань узнаётся не по зубцам, а по тому, что один угол целый, а другой выдран.

Запись: день 28

Сегодня демо прошёл я сам. Замечаний набралось много.

«во всех классах нет учительского стола». В игре стол был, а в редакторе стоял невидимкой, и мел с глобусом висели в воздухе. В кабинет 703 я не смог войти: «стол учителя стоит сразу у двери, и мне не зайти даже». Ручка двери была штырём, а я хотел «поворот на 90 градусов вдоль двери». И ещё: «совершенно нелогично, что листочек бумаги мешает открыть дверь!» Дверь упиралась в лист бумаги. А кружку то проходила насквозь, то выстреливала на шесть метров.

Кружку выстреливало из-за скорости двери. Створка проходит четверть круга за четверть секунды. За один шаг физики её край уходит дальше, чем толщина самой двери, и физика просто не успевала заметить кружку. Теперь дверь на каждом шаге щупает полосу, которую прошла. Упереться в неё могут только стул, урна, пуф и огнетушитель, а лист бумаги проходит под полотном, как в жизни.

Ручку сделали, как я просил: короткая шейка и рычаг вдоль полотна к петлям. А стол в 703 проверка дверей не замечала, потому что мерила створку и проём, а не подход к двери. Новая проверка прошла 135 дверей и сразу нашла вторую такую же, в кабинете 710.

Потом я затопил туалет и ждал уборщика. «а почему никто не убрал мой потоп — разве уборщик не должен был прийти со шваброй? Разберись.» Выяснилось, что уборщица доходила до лужи, но мыть её никто не звал. За две минуты вода растеклась на шестьсот клеток.

Тем же вечером нашлось, что конец демо мог достаться учителю. Тело у всех людей в школе одно, и снаряжение игрока ехало вместе с ним к восьми учителям, уборщику и однокласснику. Сигнал о конце игры приходит один раз, и первым его ловил учитель. Бортинженер записал: «Долг о занавесе повисал на нём, а занавеса у него нет». А полминуты, которые камера стояла после потопа, были предохранителем: кадр ждал уборщицу у лужи.

Вернуться на урок выходило дороже, чем гулять: «бесит, что меня отвели к завучу, когда я получил „баллы“ за то, что зашёл в класс (а до этого я прогуливался по коридору)». Пока я шёл к парте, внимание набегало быстрее, чем на прогулке. Поправили.

А когда я выполнил задание, демо просто резко кончилось. Я попросил «какую-то экшен-сцену небольшую, хотя бы секунд на пять». Теперь перед концом шесть секунд камеры: общий план класса, проезд мимо школьника, подъём из-за спины.

У сидящих учеников мерцало плечо. Кожа плеча и рубашка спорили, кто ближе к камере. Плечо сделали чуть уже рукава, и бортинженер заодно нашёл ещё 24 таких места у шести обликов.

Сбой: на плече сидящей тихони крутится «вертушка»
Сбой: на плече сидящей тихони крутится «вертушка»

Вечером я написал: «давай наложим мелкий растр-эффект поверх всей игры… скрасить огрехи графики и придать ламповости». Бортинженер сделал печатную точку, зерно, тёплый тон и затемнение по краям. Всё одним проходом, без скриптов. Это первый шаг к тому, что игра станет комиксом.

Класс без растра
Было. Класс без растра
Тот же кадр с растром: точка, зерно, тёплый тон
Стало. Тот же кадр с растром: точка, зерно, тёплый тон

Ещё я написал: «вижу тени в виде треугольников на фасаде». Оказалось, в 10:15 солнце стоит ровно в плоскости фасада, и тени ложились треугольниками.

13 сентября: двор с одной точки, с восьми утра до пяти вечера

Запись: день 29

С утра часы. «надо часы исправить, модель странная, не совпадают плоскости циферблата». Оказалось, все шесть часов в школе висели циферблатом в стену. Из-под глухой крышки торчала одна секундная стрелка.

Часы до правки: обод поперёк лица и одна стрелка
Было. Часы до правки: обод поперёк лица и одна стрелка
После: белое поле, двенадцать делений, стрелки
Стало. После: белое поле, двенадцать делений, стрелки

После часов завели проверку на все 47 колец в сценах: сплющивать кольцо можно только вдоль оси. Исключения записаны поимённо, среди них кольцо стульчака: «чаша унитаза овальная».

Я боялся, что игроки не догадаются заткнуть перелив раковины, и попросил мысли-подсказки. Теперь школьник думает вслух, когда стоит у раковины или у доски.

Цепочка мыслей у раковины: «Хм… почему же раковина не переполняется?», «О! Там защита от перелива!», «Может, его надо чем-то заткнуть…»

Уборщик теперь ловит прогульщиков. Это моя идея: «может, уборщик при виде тебя останавливается и спрашивает: ты чё не на уроке? И стоит какое-то время, а ты прячешься за угол или уходишь из его зоны видения, и он такой: „Показалось“ — и идёт дальше».

Бортинженер сверил старый план из three.js с тем, что есть в игре. Из 153 задуманных действий готовы 39. Я напомнил: «нам надо не забывать об уровне нестандартной игры — какашка летающая или единорог за окном, норм такой референс неадеквата. Нужно вносить абсурдность и угар».

В очереди с того дня лежат десять идей угара. «Хор унитазов»: смыть все подряд за десять секунд, звучит мелодия, а радио объявляет призрака-музыканта. Голубь садится учительнице на голову. Учительница после каждой проказы выставляет на стол защиту: «чеснок, свечка, подкова, табличка „призракам вход воспрещён“».

Ещё я сам подключил к редактору Godot инструмент, через который бортинженер работает прямо в открытой сцене. Консоль редактора с открытой школой выдавала 256 ошибок. К обеду их стало ноль.

Запись: дни с 30 по 32

В основной ветке ни одного коммита. Работа шла в соседних сессиях: дуб, велосипед, скамья, логотип. Я в редакторе мышью придвинул стулья третьего ряда в трёх классах и сдвинул раковину в санузле.

Запись: день 33

Вечером я сказал: «Давай коммит делай. А то много работы делали и в параллельных сессиях». Семь коммитов легли за три минуты, с 20:57 до 20:59.

Что в них. Заставка больше не облетает всю школу. Я попросил так: «Не нужно всю школу облетать. Просто будем показывать, чтоб уютный кадр был со двора… дерево там, фонарики». Камера 24 секунды плывёт к дубу. Совсем неподвижный кадр выглядел бы зависшей игрой.

Логотип. Я принёс картинку, бортинженер обвёл её в вектор: три слоя, 440 узлов. Теперь при загрузке логотип, а не робот Godot.

У крыльца появился первый велосипед. Сесть на E. Едет быстрее бега, а поворачивает вдвое неохотнее.

С велосипедом я помог: нарисовал его в Figma и отправил бортинженеру со словами «помогу тебе тут. Вот смотри». Он ответил, что по моей иконке пересчитал развал вилки.

Мой велосипед из Figma: по нему поправили наклон вилки и раму
Мой велосипед из Figma: по нему поправили наклон вилки и раму

Только дойти до него было нельзя: уличная дверь по правилам демо была заперта. Я написал: «Двери-то, чтобы выйти из школы, нам бы надо открыть. А то к велику через окно лезть не хочется». Крыльцо сделали отдельным помещением, как двор.

Скамью во дворе бортинженер собрал в Blender одним куском, вместо двадцати коробок в Godot. Я посмотрел и написал: «это лучше чем мы получили в годот. Всегда давай так делать». С тех пор всё, что стоит на месте, делаем в Blender.

И дуб. Сначала я попросил ветки пониже, чтобы под ним можно было стоять и прятаться от дождя. Потом попросил веток побольше, «как сказочный дуб такой ветвистый». После двух заходов написал: «странное, вовсе несказочное, неравномерно снизу идут ветки, одна отдельно». И показал, к чему стремиться. Новый собран по этому образцу: развилка на четырёх метрах, семь сучьев, купол из 54 плах, скворечник. Ростом 17 метров. Полдня ушло на то, что новый сук на снимке не двигался с места. А сборщик дуба в Blender заодно перекрасил мою велопарковку, цвет потом вернули.

13 сентября: дуб-колонна с шапкой
Было. 13 сентября: дуб-колонна с шапкой
18 сентября: сказочный дуб из Blender
Стало. 18 сентября: сказочный дуб из Blender

Под конец я написал: «оживим по-хорошему нашу школу. Пусть ученики смогут вставать из-за парт, со стульев, выходить в коридор на переменках и приходить, когда идёт звонок». Это уже следующая неделя.

Откуда ноги растут

Дочкин прогон, пять правок за день. Мой собственный прогон, ещё больше. «Гусь» как мерка абсурда: смешное рождается, когда проказа сталкивается с физикой и упрямым поведением людей, а не из заготовленных сцен. Логотип я сделал из картинки ChatGPT.

Неделя в цифрах