Как самодельный фреймворк пережил первый коммерческий релиз — соло, в цейтноте и с вайб-кодингом в финале.
4 сентября вышел мой первый коммерческий продукт, целиком написанный на Vortex, — симулятор свиданий с минииграми и интеграцией нарративного движка Naninovel. Причём вышел не «в срок», а раньше срока: релиз стоял на 11-е, уехал на 4-е. Досрочный релиз софта — зверёк редкий, а на самодельном фреймворке — вообще краснокнижный… Гордость! XD
Про сам Vortex и его принципы была отдельная статья — про «зачем вообще» и «почему не DI». Сейчас— про то, что случилось на переходе от теории к практике. Когда фреймворк первый раз проверили не рассуждением и не бенчмарком, а живым проектом с дедлайном.
Короткий вывод: оправдал. Дал ровно то, ради чего задумывался, — простоту и предсказуемость масштабирования по всем осям, которые понадобились. А понадобилось немало.
Что пришлось вывезти
Одних миниигр в игре семь штук, и практически все — разного жанра:
-
ритм-игра «ловля нот»;
-
ритм-игра «боссфайт»;
-
паззлы;
-
«нажми кнопку вовремя»;
-
казуальная боёвка на перекликивании и «ловле момента»;
-
стелс «похищение предметов»;
-
раскраска по трафаретам в стиле настенного граффити.
Рядом — нарративная часть на Naninovel с галереей карточек, система катсцен, квесты, внутриигровой магазин, ачивки Steam, глобальная карта активностей со сменой времени суток, анимированные персонажи (с фолбэком на дефолтную анимацию, если в нарративном скрипте опечатка) и ещё ворох мелких, но нужных механик.
Семь разножанровых миниигр, дэйтсим с ветвлением (заслуга наниновелл, но все же…), магазин, инвентарь, галерея, ачивки, туториалы, две платформы (ПК и Android) — и всё это живёт под одним капотом, не ссорясь и не заставляя переписывать половину проекта на каждое новое внедрение или сборку под другую платформу.
Всё под одним капотом
И написано это одним разработчиком за пять месяцев — не слипшись в спагетти-монолит.
Отдельно показательно, как фреймворк вёл себя под нагрузкой роста. Я не собирал его заранее «на все случаи» — системы добавлялись по мере того, как игра их требовала, и добавлялись до самого конца. Это не говоря о том, что итоговая игра оказалась существенно больше изначального плана, ведь как известно аппетит приходит во время еды… А еще были изменения уже готовых механик, изменения системы оценки результатов игр, добавление внезапных скинов и анимаций…
По истории репозитория за пять месяцев набежало много коммитов, но из них лишь пятая часть — фиксы; остальное — рост. Целые подсистемы въезжали во фреймворк прямо на ходу: магазин, предметы и инвентарь — в июле; продвинутый курсор и пара служебных примитивов — в августе, за считанные недели до релиза. Добавлять транзакционный магазин и инвентарь в финальный месяц перед выходом можно только на стабильной базе — на шаткой любая новая система вскрывала бы старые. Vortex даже не почесался.
Периферия ≠ ядро (и давайте честно про кранч)
Само собой, периферия написана менее аккуратно, чем ядро. Там встречаются и легаси, и моноблоки, и нарушения паттернов — кранч это ведь не только экономия денег за счёт времени, но и оцифрованные гремлины, спрятанные в коде.
Но вот в чём соль: благодаря правильной сепарации слоёв и жёсткой структуре ядра всё это «легаси» не просачивается за пределы своего пакета. Оно локализовано, а значит — ограничено и сравнительно безопасно. Кранч-код остаётся кранч-кодом в своём углу, а не растекается по проекту лавиной зависимостей. Это ровно то свойство, ради которого затевались слои и запрет обратных ссылок: сложность растёт линейно, а не лавинообразно.
Vortex и вайб-кодинг (пожалуйста, дочитайте, прежде чем кидать тапками)
Ещё одной (неожиданно) удачной чертой оказалась совместимость принципов Vortex с вайб-кодингом.
Нейросеть уровня Claude-Opus чувствует себя в такой жёстко прописанной системе на удивление комфортно. Опираясь на скиллы, вложенные в пакет AITools, она довольно быстро и аккуратно формирует периферийные пакеты, которые разработчик затем подключает в проект и собирает из них нужную вёрстку. Нюансы и проблемы, конечно, случаются — куда без них. Но итоговый результат оказался ощутимо лучше, чем я ожидал, переходя на вайб-кодинг из-за цейтнота.
Нет, я не утверждаю, что «будущее наступило и человеки не нужны». От человека всё ещё требуется корректно задавать границы и критерии — иначе никакие ограничения не спасут проект от слипания в монолит за пределами ядра. Все еще нужно проверять что именно написано, хотя бы по узловым точкам… Но как инструмент связка Vortex + Claude меня порадовала.
Можно сказать, что вайб-кодинг работает везде и у всех. Но вот в чем нюанс — особенность Vortex — нажим на композицию логики через вёрстку — идеально ложится на природу нейросети. ИИ пишет маленький атомарный компонент под примитивную логику, которую легко проверять; человек-верстальщик из таких кубиков собирает нужную ему цепь взаимосвязей. Каждому — своя половина работы, и обе на своём месте. А главное:
1) выпадает сама возможность сказать «сделай красиво» наивным промптом получив неконтролируемый, гарантированно хреновый результат
2) возможно переиспользовать атомарные кубики в новых структурах не дописывая новый код, что как минимум, дает экономию токенов (привет новому мейнстриму).
Итого
По результатам боевого прогона я внёс в Vortex ряд фиксов и дополнений — и сегодня залил на сайт обновлённую версию. Часть правок пришла прямо из окопов: реальная игра быстро подсвечивает и швы на стыке с чужим движком, и собственные шероховатости, которые на синтетике не видны.
Если кто захочет приобщиться — буду рад.
ссылка на оригинал статьи https://habr.com/ru/articles/1080928/