19 подписчиков
Можно ли заменить программиста на нейросеть при разработке игры?
В интернете легко можно найти ролики и статьи вида «я сделал игру полностью с нуля с помощью нейросетей». Проблем с этим нет никаких: нейросети могут сделать полностью игру с нуля, и не нужно ни геймдизайнеров, ни программистов, ни художников.
Дьявол кроется в деталях. Чтобы их понять, надо разобраться, как вообще нейросети генерируют результаты.
Если очень упрощать, нейросеть — это огромный миксер, в который попало то, что в неё загрузили создатели или то, что находится в открытом доступе в Интернете. Всё это нейросеть мешает и полученную немного отфильтрованную кашу выдаёт в качестве результата. Этот результат оказывается скорее статистически верным, чем просто верным. То есть, если обучать нейросеть на картинках кошек, среди которых 60 серых, 10 белых, 8 рыжих и пара чёрных, то нейросеть с высоким шансом скажет, что все кошки серые.
Наиболее успешно нейросеть напишет ту игру, информации по которой больше всего в сети. То есть легко можно написать тонны астероидов, тетрисов, змеек и прочих штук, на которых программисты обучались и выкладывали свой код в открытый доступ.
Чем меньше в сети данных касательно конкретной проблемы, тем сильнее нейросеть будет «галлюцинировать». Если же хочется создать совсем что-то малоизученное, то нейросеть выдаст рандомный абсурд.
Другую часть проблемы составляют баги — ожидать, что нейросети будут писать код без ошибок, наивно. Писать без багов, скажем так, математически довольно сложно. Всё дело в том, что код — сложно связанная сущность, которая состоит как из модулей игры, так и сторонних вещей вроде драйверов, операционной системы и других элементов. Количество связей между элементами, которые участвуют в том, чтобы игра показывалась на экране и реагировала на контроллеры, порождает астрономическое количество ситуаций. Возможно большее, чем атомов во вселенной. Проконтролировать их все не хватает мощностей даже у нейросетей. При этом нейросеть не всегда может даже отследить и осознать баги, особенно если они касаются визуальной части. Гораздо проще оказывается разобраться самому, что и где не работает, чем 3 дня добиваться от нейросети правильно работающего кода.
Третья часть проблемы — это ограниченное восприятие контекста. Нейросеть очень быстро начинает терять воспоминания о том, что она писала раньше и начинает выдавать плохо связанные куски. То есть чем больше проект и чем больше объём кода, который хочется получить, тем более корявым он будет. Это ещё не учитывая, что у большинства нейросетей есть ограничения на количество воспроизводимых и потребляемых символов.
Идеальные сценарии использования нейросети в области программирования — это точечные решения какой-то конкретной типовой задачи или даже скорее вопросы о векторах её решения. Например, можно не просить код, а спрашивать, каким обычно способом реализовывают прыжок или дэш в играх. Или почему может не работать столкновение объектов на движке Unity3D. Но самое главное — это обязательно анализировать ответ, а не использовать сразу ctrl+c и ctrl+v.
В результате даже с использованием нейросети на проекте обычно нужен человек, который будет вникать в её ответы и будет способен понимать, почему ответ может не работать. Совсем без знания программирования тут сложно обойтись, но можно экономить время на рутине и быстром изучении уже готовых решений. В итоге, чем лучше ты знаешь какую-то область, тем больше нейросеть может тебе помочь, а не наоборот.
2 минуты
11 марта