? Всем привет, меня зовут Савелий и я Middle Unity разработчик в компании, занимающейся разработкой мидкорной мобильной игры.
Сегодня хочу рассказать о своем опыте вайбкодинга в большом проекте.
? Немного контекста
Перед тем, как я начну рассказывать о болях и успехах, которых я достиг используя вайб-кодинг, расскажу немного о контексте задачи и нашего проекта.
И так, проект разрабатывается уже около 3х лет, он начинался с двух разработчиков и сейчас на проекте работает семь программистов. В проекте достаточно хорошее разделение на отдельные asemdef, хорошая архитектура проекта, но при этом все равно достаточно большая связанность кода, и существуют большие классы, на тысячи строк.
? О задаче, с которой я столкнулся:
есть система скиллов для персонажей, которая парсится из гугл таблиц. В гугл таблицах система занимает 5 листов и выглядит она достаточно запутанной, у нас есть парсеры которые перетягивают каждый лист целиком, из-за этого возникает следующая проблема. Когда идет работа над изменением навыков разных героев в рамках разных задач, например хотфикс героя А, и добавления героя Б, стянутся все конфиги, из-за чего периодически возникают очень болезненные баги.
Нужна система, которая будет парсить скиллы только конкретного героя
⚡ Вайб-кодинг, первая попытка.
К нам как раз пришел начинающий разработчик, и я подумал, что будет отличной идей дать ему эту задачу. Описал я ему таску, выделил на задачу две недели. Периодически я подходил, смотрел за его успехами, как выяснилось, разрабатывать он не очень умеет сам, а вайб кодить умеет хорошо.
И успехи, то я как раз и видел, но спустя две недели, код все еще не работал.
В чем были проблемы: работать надо было с 20+- классами одновременно + несколько больших классов - парсеры и CSV сериализатор.
Код вроде запускался, окошко отображалось, но работа не работалась. Пошел я смотреть на этот сгенерированный код, и увидел несколько ошибок, которые связаны с тем, что сам разработчик не до конца понимает, как должен работать его код, из-за этого и запросы в нейронку были формата "Сделай, чтоб заработало" "Переделай, а то не работает" и т.д.
Выделили мы ему еще неделю на работу, но прогресса особо не было. Задачу мы это временно прикрыли, и перевели этого разраба на другие тасочки.
⚔️ Вайб-кодинг, вторая битва.
Спустя месяц, я опять обжегся с тем, что стянул в проект то, что стягивать было нельзя и решил быстренько решить эту задачку.
С задачей я справился, хоть и не до конца, но код уже работает и надо его немного отдебажить, но в целом, резульатом, которого я достиг за 4 часа, я доволен.
И тут я как раз и расскажу, как обуздать нейронку, чтобы она давала нужные мне результаты.
Работать я решил с ChatGPT, как самой понятной мне нейронкой, да и опыт у меня есть только с ней.
?️ Первое, создание проекта в ChatGPT.
Это необходимо, чтобы нейросеть могла видеть контекст чатов внутри и не видеть контекст из других чатов.
? Второе, декомпозиция.
Дальше я для себя разделил задачу на два блока.
Первый - в каждом парсере необходимо было дописать метод, который по ключу строки перетянет и изменит только одно значение в ScriptableObject в проекте. Для этого я создал отдельный чат, описал задачу, добавил код всего парсера, и попросил добавить публичный метод. Я посмотрел, что добавила нейросеть, выглядело правдоподобно, поэтому я скопировал это в райдер, проверил что нет ошибок, еще раз посмотрел, что код будет работать и после этого, в том же чате попросил нейросеть еще 5 раз сгенерировать такой метод для разных парсеров. Я скармливал весь свой класс и просил добавить метод, с этим нейронка отлично справилась.
####? Второй блок - окно в редакторе, с кнопками, которые будут выполнять необходимый мне функционал.
Так как этот блок достаточно большой, и подразумевает в себе множество кода и логики, для своей же простоты, я решил подойти к нему с помощью нескольких итераций.
Попросил создать это окно, и сделать выпадающий список со всеми персонажами, для этого я показал ему код, который уже умеет находить SO в проекте, и показал примеры написанных окон в проекте. 1.1. Появились правки, чтобы окно работало фоном, а не блокировало юнити. В целом нейронка справилась очень хорошо, я внес немного правок с неймспейсами и код стайлом, и отправил свои правки нейронке, чтобы она понимала в каком стиле дальше писать код
Дальше я попросил нейросеть обработать логику для первого парсера, показал код работы с парсером и какой айди откуда надо взять
Попросил вытащить из SO те данные, которые он только что добавил, чтобы вытащить из следующие ключи для следующего парсера, для этого я показал нейронке все вложенные классы и структуру их, которые были на пути до нужных мне ключей
Повторял пункты 2 и 3 пять раз, чтобы обработать всю систему.
После этого немного решил расширить функционал, чтобы в окне показывались случайные дубликаты записей и возможные проблемы
В целом, код получился рабочим, но есть пару ситуаций, которые я не учел, но об этом в другой раз.
? Выводы:
Работа с нейронкой очень похожа на работу с учеником, ты разбиваешь ему задачу на очень маленькие, проверяешь, что они сделаны правильно, и даешь новые задачи
Чем больше контекста, тем сложнее работать, большую часть времени занимает копипаст твоего кода и объяснение его работы, чтобы нейросеть ориентировалась в проекте.
? Заключение:
Для меня такой подход оказался неплохим способом провести вечер и не думать, не надо было писать код самому, не надо было вспоминать апи окон в редакторе, а просто просил нейросеть что-то сделать и объяснял как уже работает текущий код. По времени, из моего личного предположения, это заняло столько же времени, сколько бы я сам писал код.
Если у вас есть классные инструменты, которые умеют хорошо работать с большими проектами, расскажите о них.
Я не претендую на истину, а лишь делюсь своим опытом. Если вы со мной не согласны, давайте по дискутируем в комментариях.
P.S. моя группа в ТГ, которую я с переменным успехом пытаюсь вести
Комментарии (2)
svkozlov
31.08.2025 13:06Может я совсем испортился, но статья о нейросетке, выглядит как запрос к нейросетке: Напиши от лица Мидл Разработчика статью про использование нейросети...
Jijiki
а почему под скилы родители - тоесть те которые в игре вообще есть, не закинуть в базу данных, и в решении GUI(решение для разраба которое) рисовать таблицу
соотв в таблицу скилов можно добавить примитивные кнопочки - добавить/редактировать/удалить (ну и там формула обычно есть то что плавает, есть что постоянно, получается как строки в таблице )
а игрок например компануется из таблиц клиента IDшками