August 12

Как я нейро-джунов игру делать учил.

Пару дней назад мне надо было собрать простой прототип мобильной игры на Unity. Это были последние дни моего отпуска, а с Юнити я не работал уже года 3, поэтому огромного желания бросаться и писать нужные мне системы особо не было. Я решил совместить две интересные вещи: написать нужный мне код, и протестить кодогенерацию LLM в чем-то сложнее геометрических алгоритмов. Вышло неплохо, и я решил поделиться парой интересных находок.

То с чего начиналась работа над прототипом ( Почему я использую женский род в обращениях к Deepseek, тайна даже для меня)

Если вы джун или мидл.

Если вы только начали путь в программировании, или еще не до конца уверены в своих навыках, я настоятельно не рекомендую генерировать код с помощью LLM. Когда их обучают, перед компаниями не особо стоит цель отфильтровать материалы, объем данных должен статистически выправить ошибки. А открытые репозитории github - это на 90 процентов неизвестные студенческие или джуновские проекты, качество кода в которых оставляет желать лучшего. Я тут не исключение, мой гитхаб - это кошмар, ибо я заботился о нем только во времена поиска своей первой работы и с тех пор не трогал. Даже страшно представить, что за “чудо-код” я у себя там найду.

Поэтому LLM будет очень часто генерировать сомнительный код.Так что новичкам я рекомендую использовать LLM как личного репетитора или ментора: задавайте вопросы, просите провести ревью вашего кода, но старайтесь избегать именно генерации кода. В целом LLM - это отличный инструмент для обучения, жаль его не было у меня, когда я учил PHP и KOHANA

Что-то в этом цикле не то, но вот что, да, DeepSeek?

Если вы сеньор или лид.

Ситуация кардинально меняется, если у вас уже есть интуиция на плохой код, и вы уже умеете делать код ревью. Тут можно оттянуться по-полной. Я  собрал прототип за 5 дней с UI, главным меню и всем игровым циклом, при этом потратив раз в 5 меньше времени на код. В основном я рефакторил слишком простые решения (например атрибуты для моего аналога GAS GPT сгенерировала прямо в лоб, поэтому я их переписал и усложнил, как того требовал дизайн), интегрировал их вместе и настраивал ассеты в Юнити.

Я открыл пару вкладок Deepseek и параллельно отдавал на реализацию разные части прототипа, давая фидбэк и внося корректировки. Эдакий мясной лид нейро-джунов. Кстати, это забавно, но мне кажется, что для сеньора работа с LLM может стать хорошей практикой для общения с джунами.

Успешные декомпозиция прототипа для нейро комнады

Я для себя понял пару правил, которые позволили мне получать полезный код от GPT

  1. Расписывайте подробно по пунктам, что нужно, короткими предложениями. Представьте, что вы делаете чеклист для Jira или QA. Тогда шансы на то, что LLM что-то не поймет или нафантазирует, сокращаются.
  2. Декомпозируйте задачу. Несмотря на то, что сейчас в LLM можно закинуть много контекста, LLM очень часто игнорируют или понижают в приоритете середину запроса. Поэтому лучше работать в несколько этапов: просить что-то, а потом просить дорабатывать что вышло. Например. я сначала попросил собрать мне инвентарь со слотами, а потом попросил сделать систему сохранений, и вышло неплохо и без багов. Я старался держать размер запроса в 3-4 простых пункта для реализации.
  3. Задавайте примеры. Если вы знаете, что именно вам нужно и что оно где-то было реализовано (в другом движке или фреймворке), прямо укажите это как пример. На удивление, это срабатывает очень хорошо.
  4. Не мучайте LLM багофиксом. Она не сможет, она будет галлюцинировать и оверинженирить. Пофиксите это сами, когда будете интегрировать уже в проект.
  5. Помогайте им с архитектурными решениями. Например, скажите, что использовать, как, что будет взаимодействовать.
  6. Не доверяйте им интеграцию систем друг с другом. У меня не получилось заставить DeepSeek нормально поженить две системы без глупостей.

В принципе для прототипа мои нейро-джуны справились на ура, игра бегает, багов было мало, и у меня была куча свободного времени. Да, местами код кривоват, и не самый оптимальный, но я знаю кучу проектов, которые релизнулись с кодом хуже. Я был приятно удивлен результатом и рекомендую всем иногда отдавать генерацию кода LLM.

От работы в час ночи даже нейро-джун может выгореть

P.S. А еще я скормил Deepseek правила синтаксиса для PCG Gramar, и она с первого раза сгенерила мне код для грамматической генерации в юнити.