Первый бой Vortex

от автора

Как самодельный фреймворк пережил первый коммерческий релиз — соло, в цейтноте и с вайб-кодингом в финале.

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/