Как я нейро-джунов игру делать учил.
Пару дней назад мне надо было собрать простой прототип мобильной игры на Unity. Это были последние дни моего отпуска, а с Юнити я не работал уже года 3, поэтому огромного желания бросаться и писать нужные мне системы особо не было. Я решил совместить две интересные вещи: написать нужный мне код, и протестить кодогенерацию LLM в чем-то сложнее геометрических алгоритмов. Вышло неплохо, и я решил поделиться парой интересных находок.
Если вы джун или мидл.
Если вы только начали путь в программировании, или еще не до конца уверены в своих навыках, я настоятельно не рекомендую генерировать код с помощью LLM. Когда их обучают, перед компаниями не особо стоит цель отфильтровать материалы, объем данных должен статистически выправить ошибки. А открытые репозитории github - это на 90 процентов неизвестные студенческие или джуновские проекты, качество кода в которых оставляет желать лучшего. Я тут не исключение, мой гитхаб - это кошмар, ибо я заботился о нем только во времена поиска своей первой работы и с тех пор не трогал. Даже страшно представить, что за “чудо-код” я у себя там найду.
Поэтому LLM будет очень часто генерировать сомнительный код.Так что новичкам я рекомендую использовать LLM как личного репетитора или ментора: задавайте вопросы, просите провести ревью вашего кода, но старайтесь избегать именно генерации кода. В целом LLM - это отличный инструмент для обучения, жаль его не было у меня, когда я учил PHP и KOHANA
Если вы сеньор или лид.
Ситуация кардинально меняется, если у вас уже есть интуиция на плохой код, и вы уже умеете делать код ревью. Тут можно оттянуться по-полной. Я собрал прототип за 5 дней с UI, главным меню и всем игровым циклом, при этом потратив раз в 5 меньше времени на код. В основном я рефакторил слишком простые решения (например атрибуты для моего аналога GAS GPT сгенерировала прямо в лоб, поэтому я их переписал и усложнил, как того требовал дизайн), интегрировал их вместе и настраивал ассеты в Юнити.
Я открыл пару вкладок Deepseek и параллельно отдавал на реализацию разные части прототипа, давая фидбэк и внося корректировки. Эдакий мясной лид нейро-джунов. Кстати, это забавно, но мне кажется, что для сеньора работа с LLM может стать хорошей практикой для общения с джунами.
Я для себя понял пару правил, которые позволили мне получать полезный код от GPT
- Расписывайте подробно по пунктам, что нужно, короткими предложениями. Представьте, что вы делаете чеклист для Jira или QA. Тогда шансы на то, что LLM что-то не поймет или нафантазирует, сокращаются.
- Декомпозируйте задачу. Несмотря на то, что сейчас в LLM можно закинуть много контекста, LLM очень часто игнорируют или понижают в приоритете середину запроса. Поэтому лучше работать в несколько этапов: просить что-то, а потом просить дорабатывать что вышло. Например. я сначала попросил собрать мне инвентарь со слотами, а потом попросил сделать систему сохранений, и вышло неплохо и без багов. Я старался держать размер запроса в 3-4 простых пункта для реализации.
- Задавайте примеры. Если вы знаете, что именно вам нужно и что оно где-то было реализовано (в другом движке или фреймворке), прямо укажите это как пример. На удивление, это срабатывает очень хорошо.
- Не мучайте LLM багофиксом. Она не сможет, она будет галлюцинировать и оверинженирить. Пофиксите это сами, когда будете интегрировать уже в проект.
- Помогайте им с архитектурными решениями. Например, скажите, что использовать, как, что будет взаимодействовать.
- Не доверяйте им интеграцию систем друг с другом. У меня не получилось заставить DeepSeek нормально поженить две системы без глупостей.
В принципе для прототипа мои нейро-джуны справились на ура, игра бегает, багов было мало, и у меня была куча свободного времени. Да, местами код кривоват, и не самый оптимальный, но я знаю кучу проектов, которые релизнулись с кодом хуже. Я был приятно удивлен результатом и рекомендую всем иногда отдавать генерацию кода LLM.
P.S. А еще я скормил Deepseek правила синтаксиса для PCG Gramar, и она с первого раза сгенерила мне код для грамматической генерации в юнити.