Project C: The Clouds - факапы

Project C: The Clouds — MMO-песочница в мире, где человечество живёт на вершинах гор над ядовитым облачным морем. Игрок — вольный пилот грузовой баржи: берёт груз на одном острове, везёт через шторма и ветровые коридоры, отбивается от пиратов и вкладывает деньги в корабль. Игру делаю я (и мои агенты) — на Unity

Первый коммит в проект — 10 марта 2025 года. До версии 0.1.0 дошёл в конце августа 2026-го; к тому моменту в репозитории было около 2 400 коммитов, из них 126 с пометкой fix и 141 с пометкой docs.

Документации написано больше, чем багфиксов, — и не от аккуратности. Просто почти каждый второй баг сначала не понимал, а потом полдня описывал, что именно произошло.

Ниже — четыре истории из гита, которые лучше всего описывают дорогу к 0.1.0: они не про «сложную разработку», а про то, как мешаешь себе сам.

Факап первый: паром, который «починен» девять раз

В игре есть паром — платформа, которая ездит по подвесным тросам между островами. Игрок на ней стоит, и его слегка потряхивает. Симптом мелкий, такое обычно чинится за вечер.

Ушло девять тикетов и примерно сутки.

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

Сглаживание кабины не помогло, переезд на MovePosition в FixedUpdate сделал хуже, а порядок обновления не дал вообще ничего. Отключение поворота по тангажу убрало хопы, но доказать причинность не вышло. Девять попыток откатил одной командой — Revert T-PAROM-04..12 — и вместо очередной заметки сел писать постмортем.

Там же сформулировано, что делалось не так, и эта формулировка до сих пор висит в голове:

«Чинили вслепую, без инструментов: ни одного замера до/после. Каждая итерация — гипотеза, код и „проверь на глаз". Так нашли одно реальное, остальное — качели».

Одно реальное всё-таки нашлось — движковый SmoothStep, который остаётся включённым после отката. Но главный урок оказался не про него: одна из «починок» сломала игру сильнее, чем баг. Убрал прижим платформы — вместе с ним исчез сигнал isGrounded для CharacterController, персонаж навсегда завис в анимации падения и стал проваливаться сквозь палубу. Убирая пенетрацию, нельзя убирать сигнал контакта.

#факап #gamedev #геймдев