5 мая 2025
Эта статья написана под впечатлением от использования нейросетей для создания игры на конкурс пошаговых стратегий (https://gamedev.ru/projects/forum/?id=288372) на форуме Gamedev.ru
Вступление
Приступая к конкурсу возникла интересная идея для небольшого челенджа – написать игру с максимально возможным использованием нейросетей. То есть, по возможности создать код, графику, звуки, музыку с помощью нейросетей. Загоревшись этой идеей, я приступил к этому. Глядя назад, я даже и не мог предположить, к каким неожиданным в некотором смысле, результатам это приведет.
Нейросети – читы?
Многие сейчас скажут, что использование нейросетей, это жульничество и читерство. Знайте, если вы услышали это, то этот человек явно не работал с этими информационными моделями для достижения конкретного результата. Только на первый взгляд кажется, что нейросеть как по волшебству все ловко и в один момент все вам сделает, словно джин. В 90% случаев, все работает ровно наоборот. Но не будем спешить и пойдем по порядку.

Выбор нейросетей
Нейросеть это обученная машинная модель, т.е. по сути, это большая библиотека с возможностью применения различных шаблонов и их комбинирования. Просто компьютер делает это очень быстро, и кажется, что он что-то создает, но по сути, это просто комбинирование уже имеющейся у него информации. Собственно, мы занимается очень часто именно этим, когда создаем какой-нибудь продукт или контент. Допустим, вы поставили цель – написать игру, усилиями машины. И сразу возникает вопрос: какую использовать для этого? Прямо волшебной, чтобы сразу написала игру за вас и наполнила ее нужным контентом, пока еще не существует и вряд ли будет. Да и не нужна она, ведь создание игры это в определенном плане самореализация своих идей. Поэтому, нам нужен скорее инструмент, чтобы легче достигать поставленных целей. Как показала практика и поиск, нейросетей сейчас хоть одним местом жуй – только ленивый их не пишет. Количество их растет очень быстро, конкуренция большая, выбор тоже. Однако, реально сильных моделей мало. Для конкурса я выбирал лишь те, которые можно использовать бесплатно, с ограничениями на количество генераций в день или другими функциональными блоками. Chat GPT платный и у нас не работает в простом виде, а тут как раз совпало, что выкатился DeepSeek. Эксперименты с ним показали, что он прекрасно владеет написанием кода на Unity, чего и было достаточно для моих задумок. С графикой все было не так однозначно, но первичный выбор был сделан в пользу FreeFlux.Ai. Важный нюанс – нейросети многие достаточно различаются по своим возможностям. Например, некоторые работают по принципу диалога, в котором ты можешь уточнять или направлять нейросеть, опираясь на прошлый результат (т.е. нейросеть ведет и помнит диалог на определенную глубину). А еще больше нейросетей работают по принципу завершенного запроса – вы пишите ей промт и она сразу дает вам результат. Если нужны уточнения, то нужно корректировать промт запроса, и каждый раз получать новый результат. В данном случае, нейросеть ничего не запоминает и является здоровенной конечной функцией. Например, DeepSeek работает в режиме диалога, а FreeFlux в режиме конечного продукта. Поэтому, сами пробуйте и тестируйте разные нейросети на соответствие результата, сложности генерации и режиму диалога с ними. Все очень индивидуально.

Дизайн документ
Наверное, многие знают, что ядром создания игры является законченный дизайн документ, из которого можно только выкидывать фичи, чтобы разработка игры не превращалась в бесконечный процесс. Так вот, при работе с нейросетями, дизайн документ становится крайне необходимым или обязательным, даже на небольшие проекты. Допустим вы пишите код, и что-то придумали. Загнали идею в нейросеть, получили результат. Приложили этот код в проект и все вроде работает. Но вдруг, вам понадобилось что-то добавить, причем именно внутрь какой-то функции. Это превращается в весьма трудоемкий и специфичный процесс, по копированию кода туда и обратно, и надеждами на то, что это все будет работать. Это провальный путь, который стоил мне первого месяца разработки – итоговый проект, получился совсем не такой, которым был первичный прототип. Поэтому могу посоветовать только два пути разработки – либо с дизайн документом, либо с конечными агрегатами. Но теперь перейдем к рассмотрению разных аспектов создания игры с помощью нейросетей.

Работа с кодом
Итак, есть два пути, как я писал выше. Первый, это дизайн документ, в котором вы все прописали. Тогда, вы можете сразу описать различные функции и циклы, вплоть до переменных и аргументов, максимально детально, чтобы на выходе иметь сразу готовый код для различных блоков, чтобы можно было просто в редакторе заполнять поля контентом и значениями. Это прокатит только для маленьких игр, где будет всего немного. Потому что в иных случаях, код будет огромный и никогда не влезет в один результат запроса.
А из этого следует второй путь – конечных агрегатов. Это подход, при котором с помощью нейросети пишутся отдельные, завершенные (т.е. не требующие дальнейших изменений никогда) функции, а игра собирается из их комбинирования. В этом случае, использование нейросети дает мощный прирост производительности и экономии времени. Если нейросеть мощная, то она может подкорректировать ваши функции под ваши потребности, заменить имена переменных и прочее.
Правда это не отменяет того, что нужно проверять код за нею либо на работоспособность, либо на адекватность реализации. Я использовал DeepSeek и остался довольный. Однако, правка функций в нейросети оказалась муторной, т.к. я тратил больше времени на написание промта, указание изменений, копирования кода туда-сюда, чем если бы я писал руками. Плюс, если вы меняли имена переменных, то нейросеть об этом не знает, и может вносить правки используя старые данные. Поэтому результаты по итогу могут требовать ручной доработки. В итоге может получиться, что вы потратите в 3 раза больше времени на это все, чем если бы писали руками. Поэтому, большую часть творческого кода я писал руками. Но, определенные функции, типа управления камеры или блокировку выхода за границы, нейросеть написала на отлично, позволяя не вникать в боль и тонкости нюансов.
Итог: писать завершенные функции и корутины нейросетью это тру и вин. Вносить в это правки – только руками.
И еще один момент: начиная работать с нейросетью, я не мог понять, как работают корутины в Unity (кто не знает, то функции асинхронного кода, которые выполняются независимо от всяких фиксированных участков типа Update LateUpdate). С помощью них удобно делать события, имеющие непредсказуемую длину, например, использовать при обучении или ждать ввода от игрока определенных действий. Нейросеть объяснила мне, показала примеры и теперь я очень доволен, что теперь хоть немного, но умею использовать корутины в играх. Это реально очень мощный инструмент. Следующий нереально приятный момент – создание кастомных интерфейсов. Я это до сих пор не умею и кода там надо дофига и еще понимать в нем. Но я сформировал задание для нейросети, чтобы она реализовала мне показывание превью спрайта в инспектор и картинки тайла тоже. В результате, появились кастомные параметры для полей, и работа с данными внутри инспектора стала проще и удобнее. Этот код я вообще не меня и не вникал в него. Здесь выигрыш времени очень большой, думаю несколько дней легко. Естественно, знаний об этом у меня не появилось, но я потратил это время на другие аспекты игры.
И, напоследок (для блока кода), неприятный момент. Нейросеть очень тяжело ищет ошибки в коде. Она может предлагать весьма странные решения для вашей проблемы, иногда хорошие. Но мою она не смогла решить – у меня был корректный код, но он отрабатывал неверно. Ошибка заключалась в том, что в одном месте я зачем-то поставил break, что прерывало выполнение цикла и часть данных не обрабатывалась. В итоге ошибку нашел сам, случайно.
Вроде с яркими моментами кода все, переходим к второй объемной части – графика.

Работа с графикой
Для игры был выбран 2Д мир, т.к. 3Д контент нейросети делают намного хуже, чем для 3Д. Плюс, для 2Д больше бесплатных нейросетей. Попробовав разные, я выбрал FreeFlux. В целом мне нравился стиль, он хорошо генерировал, только нужно было промт на английский переводить. Но затем, я столкнулся с плохими особенностями нейросетей. И самая важная – это онлайн продукт, который находится не у вас. А значит, если там идут технические работы, то вы не сможете ее использовать. Если у нее слетит база, то вы также опять не сможете ее использовать. Также может произойти «улучшение сайта», сделав его более красивым и более тяжелым. И самое коварное – хозяин может изменить политику доступа к нейросети, оставив вас с носом. С последним я сталкивался лично, поэтому после многих попыток, я ушел на Шедеврум (с платной подпиской в 100Р/месяц, чтобы иметь безлимитные генерации). Его стиль мне нравился, но есть нюанс – разные аспекты игры генерируются с разной степенью тяжести. Причем проявляется это в необычных местах. Нарисовать для нейросети портрет проще простого. Нарисовать желтую стрелку влево по центру экрана – нереальная задача практически. Многие, простые для нас вещи, для нейросети являются непреодолимыми препятствиями, для которых потребуется специальный промт с различными ухищрениями и сложностями.
Если кратко, то вот топ сложности генерации определенных изображений для игры (самое верхнее - самое трудное):
1. Интерфейс и элементы навигации
2. Бесшовные текстуры
3. Иконки способностей
4. Тайлы карты
5. Картинки событий
6. Портреты
Создать элементы интерфейса в Шедевруме оказалось очень сложной задачей. В то время как FreeFlux справлялся намного лучше. Однако, у Шедеврума очень хорошая воспроизводимость стиля, в то время, как у FreeFlux стиль фентези сильно плавал от одной генерации к другой.
Ну, а так как я не умею рисовать красиво, то все затраты на создание промтов и генерацию изображений очень окупились. Правда помните, нужно избегать явных артефактов, типа 6-9 пальцевых рук и так далее.

Работа с музыкой
Для этого планировалось использовать Suno, однако так как я плохо распорядился временем, я вообще не сделал ни одного трека для игры. Просто так песни Suno хорошо генерирует, со своими заморочками. Можно свой текст и стиль дать и нейросеть попробует это исполнить. Результат мне очень нравится. Но в игру ни музыка не звук так и не попали.
Работа со звуком
Это, забавно, но я не нашел ни одной нейросети для генерации отдельных звуков, типа гром от молнии или звучание мотора. Для генерации музыки много их. Для звуков не нашел ни одной. Может вы подскажете?
Работа с сюжетом
Наверняка можно и сюжет написать с помощью нее, но у меня его в играх почти никогда нет, поэтому этот аспект потестировать не удалось. Наверняка, можно писать диалоги и делать текстовые квесты.

Универсальность
Наверное, вы можете заметить, что многие нейросети имеют свою направленность. Например, одни рисуют, другие код пишут, третьи видео достраивают и так далее. Так, DeepSeek не умеет рисовать, как например Шедеврум. Но есть особые нейросети, которые пытаются в универсальность, например, GigaChat от Сбера. Он может помочь вам написать код и еще умеет генерировать картинку, и следить за диалогом. Работа в режиме чата. Конечно, за универсальность приходится платить тем, что нейросеть проигрывает специализированным нейросетям в их областях. И самый большой косяк Гигачата – он у меня много раз схлопывался, т.е. чат ловил краш, и после этого в этом чате ничего нельзя написать и диалог умирает. А в новом чате уже не то настроение, нейросеть там ведет себя по-другому. Это более неприятный аспект.

Итого
Закончилось все тем, что на начальных этапах участие нейросети в коде было 90%, а к концу лишь 10% или меньше. То есть код в лучшем случае написан лишь наполовину нейросетью. Графика в игре на 95% нейросетевая. Нерациональное использование нейросети приводит лишь увеличению затрат, но не выигрышу. Подведем списки плюсов и минусов.

Минусы
1. Вы чаще всего не хозяин нейросети. Если у вас проблемы с доступом к ней, или же на сервере ведутся работы, весь ваш процесс встанет. С установленным редактором на ПК такого никогда нет.
2. Стилевоспроизводимость. Касается графических нейросетей. Это способность держать определенный стиль при генерации. Некоторые нейросети очень сильно плавают по стилю в пределах одного сеттинга. Что повышает трудозатраты на генерацию контента.
3. Мелкие правки в больших результатах лучше проводить самому, иначе промт для исправления может быть дороже по созданию, чем правка этих нюансов.
4. Запрещенные темы. Есть табуированные темы (типа классики (порнушки, обнаженки и так далее) и специфичных ограничений (например, Шедеврум не даст генерировать кровь и церковную тематику)). Это приводит к тому, что приходится изощряться (менять кровь на красную жидкость). Для художников табу только в моральных устоях.
5. Артефакты. Например, нарисовать странное количество пальцев на руках.
Плюсы
1. Если вы полный профан в определенной области, то нейросеть очень ловко может выручить или облегчить вам жизнь. Например, помочь с специфичным контентом для игры.
2. Неприятные и скучные моменты можно поручить машине, тем самым минуя их полностью.
3. Дает прирост в скорости, если делать все в одну каску.
4. Нейросеть может научить вас некоторым новым трюкам. Например, я увидел некоторые красивые кодовые реализации, плюс научился корутинкам.
Нейтральные особенности
1. Отсутствие нейросетей для генерации звуков. По крайней мере я не нашел. Для музыки много, а для чистых звуков нету.
2. Это все равно ваша работа. Отдельный художник работает параллельно вам. Если же вы генерируете картинку с помощью нейросети, что все равно ваше время, пусть и меньшее. Командная работа дает выигрыш в скорости.
3. Скорее всего к вашему проекту будут относиться сомнительно, ведь ручной труд – это дорого, богато, качественно, лучше. Но это пока стереотипы.
По итогу, эксперимент понравился. Как минимум нейросеть стоит использовать для оптимизации затрат вычислительных мощностей и сложных мест, типа добавок в интерфейс редактора. Но это лишь инструмент. Важно то, как вы будете его использовать.
Ссылка