Девлог #1: я собираю веб-проекты за выходные. Сколько займёт игра?
Я люблю рассказывать, как собираю веб-проекты за выходные. Пятница вечер — открываю терминал, вайбкожу с Claude Code, воскресенье — уже деплою. Друзья привыкли не удивляться, а я привык, что удивляться особо нечему: код давно перестал быть узким местом.
И вот однажды я поймал себя на мысли: а если то же самое — с игрой? Ну сколько там, недели три? Максимум месяц, я же не первый день пишу код.
Спойлер: нет. И это первая запись девлога, в котором я буду выяснять, насколько я был неправ, в прямом эфире.
Почему именно эта игра
Я всю жизнь играю в стратегии. Не в шутеры, не в файтинги — в игры, где нужно строить систему и смотреть, как она работает без прямого вмешательства. Factorio — потому что нет ничего приятнее, чем цепочка производства, которая наконец перестала быть спагетти. They Are Billions — потому что оборона базы против нарастающих волн врагов бьёт по тем же рецепторам, что и деплой в пятницу вечером: тревога, подготовка, облегчение. Loop Hero — потому что косвенное управление, когда ты не двигаешь юнита напрямую, а расставляешь тайлы вокруг его маршрута, оказалось гениальным способом сделать стратегию из одной кнопки. Ну и League of Legends — тысячи часов, чтобы я особенно оценил, как одна система (страницы рун перед матчем) превращает подготовку в отдельную маленькую игру внутри игры.
В какой-то момент это всё склеилось в одну идею. Пиксельный roguelite с косвенным управлением, как в Loop Hero: герой идёт по кругу сам, а я влияю на мир вокруг него. Но вместо готовых карт — крафт: собираешь стихийные ресурсы, как в Factorio, и варишь из них руны. Перед забегом — страницы рун, привет League of Legends: собрал билд заранее, а не подбираешь по ходу. А сама оборона строится как в They Are Billions — волны врагов, тайлы-защита, решения о размещении, которые либо спасут забег, либо нет.
Это не гениальное озарение под душем. Это просто список того, во что я залипал последние пятнадцать лет, сведённый в одну механику. Что вполне логично: если уж делать первую игру, разумно делать её из того, в чём ты уже эксперт — как игрок.
Почему это не веб-проект за выходные
Вот тут самоирония заканчивается и начинается неприятная правда. Код — не проблема. Godot 4 с GDScript пишется примерно с той же скоростью, с которой я пишу React-компоненты, особенно когда рядом Claude Code разгребает бойлерплейт. Спрайты в Aseprite, git, CI — всё привычно, всё под контролем.
Проблема в том, что в вебе успех измеряется тем, работает ли фича так, как задумано. В игре фича может работать идеально и быть при этом абсолютно нескучной. Крафт рун может технически крафтить, страницы рун — технически применяться, волны врагов — технически волноваться. И игра всё равно будет ощущаться как демо-версия табличного процессора.
Тут появляются категории проблем, с которыми я на основной работе почти не сталкиваюсь: геймдизайн (действительно ли выбор руны — это решение, а не иллюзия решения), баланс (одна руна имба, другая мусор — и это выяснится только после сотого забега), контент (сколько типов врагов нужно, чтобы не приелось, и как их всех нарисовать одному человеку по вечерам) и «сочность» — тот самый game feel, когда удар по врагу должен трястись, искрить и звучать, иначе даже правильная механика ощущается мёртвой. Ни одна из этих проблем не решается более быстрым код-ревью.
Мой козырь: AI agents engineering в геймдеве
Здесь я, наконец, вспоминаю, чем зарабатываю на жизнь. На основной работе я строю AI-агентов — системы, которые сами принимают решения в рамках заданных целей и ограничений. И выясняется, что почти всё, что усложняет геймдев, — это на самом деле задачи для агентов, просто в непривычной обёртке.
Баланс — это симуляция. Вместо того чтобы вручную двигать циферки в таблице и играть сто забегов самому, можно написать агента-балансировщика, который прогоняет тысячи автобоёв headless-версией боевой системы и присылает отчёт: какая комбинация рун доминирует, какая волна убивает всех на третьей минуте. Это не отменяет мою работу — вкус всё равно мой, — но черновую статистику за меня посчитает не я в три часа ночи с калькулятором.
Плейтестинг — это тоже агент, только с другой целью: не выиграть эффективнее всех, а «поиграть как человек» и заметить, где скучно, где непонятно, где я как дизайнер наврал себе про то, что «и так очевидно».
Враги — это, возможно, самое интересное применение. Вместо жёстко скриптованных волн можно дать врагам простую utility AI: у каждого есть цель (добраться до ядра, разрушить конкретный defensive-тайл, защитить более ценного союзника) и он сам решает, как её достигать в рамках карты. Тогда оборона игрока противостоит не скрипту, а поведению — что как раз и было магией They Are Billions.
И, наконец, генерация контента: процедурные комбинации рун, вариации волн, может быть — часть арта как основа для ручной доработки в Aseprite, а не замена художника.
Короче: на работе я пасу агентов, дома буду пасти агентов. Разница в том, что домашние не устраивают инцидент в проде, если ошиблись с расчётом урона.
Правила эксперимента
Чтобы не превратить это в очередной pet-проект, который тихо умирает в приватном репозитории, устанавливаю себе правила.
Девлог — публичный, с самого первого дня, даже когда показывать особо нечего. Метрики — честные: реальное время по вечерам, а не «два месяца», которые на деле были шестью неделями простоя и двумя спринтами. Провалы показываю так же охотно, как победы: если баланс сломается, если арт будет выглядеть как нарисованный в 2 часа ночи (потому что он таким и будет), — это тоже часть истории, а не то, что нужно вырезать перед публикацией.
Цель по-прежнему амбициозная: релиз в Steam. Срок — реалистичные 6–12 месяцев вечерней разработки, а не «за выходные», как я привык хвастаться. Собственно, именно поэтому этот девлог существует: чтобы у меня была публичная причина не бросить, когда окажется, что баланс рун — это не три вечера, а три месяца.
Что дальше
Следующий пост — играбельный прототип, собранный за один выходной уикенд: герой идёт по кругу, тайлы расставляются, руны как-то крафтятся. Скорее всего, это будет не игра, а грустная демка с квадратиками вместо спрайтов. Но именно с этого честного минимума и стоит начинать публичный отчёт.
Подписывайтесь — дальше будет либо Steam-релиз, либо очень поучительная история про то, почему его не случилось. В любом случае, дам знать по пути.