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

Я поиграл и прислал девять пунктов. Например: «Сел на стул и просто сидел, и такой бац: тебя отвели к завучу… а после сцены я оказался на том же месте». Решили так: где сел, там и твоё место. И ещё: «скучно, что персонаж просто вышел и стои́т. Пусть хотя бы разные позы принимает угарные… Одиночно стоящие ребята пугают». Теперь на перемене стоят парами и в позах.
Один ученик 1А до конца дня простоял в запертой насосной. Попасть туда было нельзя: ни дыр в стенах, ни пути. Запись поймала миг: его вдавило в стену толпой в дверях. Давку чинить не стали, поставили сеть: кто за 45 секунд урока не дошёл до парты, сам возвращается за неё.
Бортинженер хотел пересаживать опоздавших за парту, пока никто не видит, как делают в больших играх. Я сказал: «такое бывает в жизни, будь проще». Опоздал так опоздал.
Вечером я написал главное за неделю: «самый угар — это когда кидаешь салфеткой в человека, и он отлетает далеко-далеко. Вот абсурд такого уровня мне нравится». Бортинженер проверил и выяснил, что полёта человека в коде не было вовсе. Улетал сам комок салфетки, а человек улетал случайно, если наступал на него. Теперь всё нарочно: чем легче вещь, тем дальше летит человек. Летящий сшибает встречных, как кегли.
До этого любой брошенной вещи доставался один и тот же толчок, и тридцать граммов салфетки разгонялись почти до 70 метров в секунду. Теперь комок толкает человека сильнее, чем батончик, а мяч и стул уже только толкают. Летящий отдаёт сбитому три четверти хода, и цепь гаснет сама.
Надписи QUIET ZONE и PLAY ZONE на стенах повесили в 20:43 и сняли в 22:17. Пользы от них не было никакой.
Запись: день 35
День свободы вне миссий. С утра бортинженер сделал по моему списку: мокрый пол стал катком, у велосипеда появилась горка-трамплин, автомат с едой сдаётся тому, кто дольше трясёт. Появился дудочник: под барабан ученики пляшут и идут гуськом. Стул на колёсиках. Мяч, про который я написал: «пнул мяч на перемене — все бегут за ним, как голуби за хлебом, получается куча-мала».
И скелет за партой. Моя идея: «скелет за партой: посадил на своё место — учительница вызывает скелет к доске. Ахаха, давай».
Учительница вызывает скелет, если он не на своём месте и стоит у парты. Без первого условия она вызвала его на первом же уроке: скелет 1А и так стоит у задней парты. Это поймала первая же проверка.
Ещё двадцать секретиков по школе, наш вариант спрятанных посылок из ГТА. Стёклышко, под ним фантик, как в детстве.
Места для секретиков игра ищет сама и проверяет лучом. Пока проверки не было, секретик ложился на валун, на мостик и однажды уехал сквозь стену в санузел.
Свобода вне миссий






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


Запись: день 36
Сорок живых тел на перемене съели кадр. Бортинженер замерил: ёрзанье, походка и скелеты вместе тратили больше, чем весь кадр при 60 кадрах в секунду. Причём считались даже ученики за спиной у игрока. Теперь кто вне кадра, тот не считается.
Вечером учеников стало 73 вместо сорока. Тех, кто далеко, вне кадра и без дела, стали усыплять, как толпу в GTA и Hitman. Семьдесят три со сном обходились кадру дешевле, чем сорок без сна.
Нашлась и проверка, которая каждый кадр обходила всю школу. Треть кадра уходила на то, чтобы найти один классный журнал.
А школа, поднятая из файла, не совпадала с собранной. В ней было лишних 4300 узлов: двоились доски, точилки, раковины, одежда. Терялись все пятнадцать навесных замков. А удалённая кабинка возвращалась рядом со свежей, и выходило 84 кабинки вместо 42.
Запись: день 37
Загрузка за утро сократилась с 33 секунд до пяти. Двадцать четыре секунды из них уходили на 1325 ламп, которые всё равно были выключены.
Я написал: «в туалете освещение капец странное». Бортинженер нашёл свою же ошибку: скрытый свет лишили теней, и он стал светить сквозь стены.
Вечером в помещениях появился мультяшный свет: тёплая сторона, синяя тень, светлая кромка. Первый заход меня не убедил, я «принципиальной разницы не нашёл» и прислал образец чужого шейдера. После второго написал: «мне нравится как сейчас в игре».
Запись: день 38
Двор переделали: небо с облаками по моему наброску, газон мазками, пруд, дорожки из камня по моему образцу. А ещё в игре впервые появились записанные звуки: ветер, птицы, листья на порывах. До этого все звуки считались формулами.


Двор по образцам






Днём я сформулировал, чего хочу от игры: «когда я играл в ГТА, я не задумывался о глобальной цели игры, я просто выполнял миссии и бродил по городу, кайфовал от свободы». Так появилось направление демо: свобода, миссии, розыск. В одну строку: школа-песочница, где любой хаос становится чудом, если тебя не видели. Шесть этапов.
Первый этап: шкала «Зрители». Я попросил одно: «главное, чтоб она была "ноль" — это будет сигнал, что можно шалить».

Вечером я спросил: «А велосипед то обладает физикой? Ну там сила притяжения и прочее, как стул». Оказалось, нет. Место велосипеда считал код, и днём к этому расчёту уже приделали две заплатки: чтобы брошенный в прыжке велосипед вставал на землю и чтобы стоял на склоне. В тот же вечер велосипед стал настоящим телом весом 12 килограммов, а потом у него и у скейта появился общий класс.
Запись: день 39
Нужен был завуч, который гонится. Я написал: «Завуч. Пусть это будет утка! Ведь у нас уже есть персонаж „кот“. В таком же стиле надо сделать утку». И попросил музыку, «весёлая, как Бенни Хилл». Бортинженер сочинил свою мелодию, чужую брать не стали.
В 4:19 утра появилась утка в костюме с красным галстуком.

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

Днём случился разговор, который поменял то, как мы делаем всю игру. Я нашёл промпт, где советуют строить всю геометрию в Blender скриптами, из примитивов и кривых. И спросил бортинженера, правда ли он лучше делает 3D в Blender, чем в Godot. Оказалось, он уже так и делает с 18 сентября: у каждой вещи свой скрипт для Blender.
Тогда я спросил про анимацию. Мне казалось, что у Blender возможностей больше, есть даже плагины вроде Auto-Rig Pro. А пластичность и плавность движений для меня крайне важны, и с этим у нас было не всегда хорошо. Я предложил: «давай возьмём уборщика и на нём потренируемся… нам нужна пластичность походки, прыжка, бега, поворотов головы и уборки мокрого пола». А в покое чтобы он «стоял и слегка приседал, как старые анимационные персонажи Disney».
Руками бортинженер ничего не двигал. Он записал принципы анимации числами: внизу шага тело сжимается, на подъёме вытягивается, руки и голова чуть запаздывают, торс идёт навстречу тазу. Blender по этим числам сам считает движение. Через полтора часа я посмотрел первый клип и написал: «обалдеть! Анимация в сто раз лучше чем у нас была сделана в годот! Круто! Давай дальше!»
В тот же день появилось правило: любую новую вещь сначала показываем вариантами на кадрах Blender, а в игру берём только выбранное. Первой так прошла урна во дворе.
Сначала варианты






Станцию я принял, но «цвет оранжевый бьёт по глазам». Для пластика сравнили три жёлтых. Под нашим солнцем матовое золото и рожь уходят в оранжевый, жёлтым читается только бледная солома.
Переводя ходьбу в Blender, я сам попросил замедлить её до естественного шага. Через сорок минут написал: «как-то игрок стал медленно ходить после нашей реконструкции». Своему школьнику сделали трусцу, вдвое быстрее естественного шага.
Плейтест начала дал девять замечаний. Одно: «завуч появляется внезапно при погоне. Буквально из воздуха. У него же должен быть свой кабинет с табличкой утки». Теперь кабинет есть. Шкалу веры с процентами у задачи я велел убрать: «Давай-ка выпилим». Ещё появился тайный лаз через решётку вентиляции и конец демо с вопросом «Что было веселее всего?».
Бортинженер любит называть файлы проверок по-русски. Я написал: «меня пугает, что ты создаёшь файлы на кириллице». За неделю таких проверок набралось тринадцать, одна появилась уже после моей реплики.
Запись: день 40
«От бегущего завуча невозможно убежать. Он бежит с такой же скоростью». Утку и уборщика замедлили на десять процентов.
Стул снова держит дверь. Эту починку писали 19 и 20 сентября, и оба раза она не дошла до основной ветки. Фичи пропадают, если их не сторожить.
Днём в школе появились три лестницы из Blender и второй этаж учебного блока, 44 помещения. Я предложил сделать всё здание в Blender: «если бы наша школа как здание (для меня это словно карта игры) была бы сделана в блендере, то качество всей геометрии было бы лучше». Пока договорились иначе: Blender рисует, план решает. Крона дуба при этом залезла во второй этаж, её поджали.
Нашлась смешная дыра: шагнувший за край земли падал бесконечно, игра сохраняла это падение, и следующий запуск начинался с него же. Теперь игру нельзя сломать.
Вечером записали философию: дух GTA III и San Andreas. И главное правило, которое я сформулировал так: «Одноклассники аплодируют над тем, что ты в кого-то кинул салфеткой и тот улетел, — этого допускать нельзя. Я не хочу воспитывать такое в детях даже в игре. Но и давать выход эмоциям тоже надо». Люди не мишень.
А последней фразой недели был вопрос: «Может, призрак — это не тот сюжет, который нам нужен?»
Откуда ноги растут
GTA: свобода вне миссий, секретики вместо спрятанных посылок, розыск превратился в погоню. Найденный промпт про геометрию в Blender, после которого туда переехала и анимация. Bully: звонок, на который каждый ученик откликается сам. «Гусь». Бенни Хилл для музыки погони. Уборщик в покое пружинит, как старые персонажи Disney. Звуки двора из готового набора Ovani.
Неделя в цифрах
- 147коммитов
- 40 → 73живых учеников за один день
- 33 → 5 сзагрузка школы
- 1325выключенных ламп тормозили загрузку
- 32 часана шесть этапов демо
- 13проверок с русскими именами файлов
