Как ChatGPT учит кодить и помогает писать код для инди-игры

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Спойлер: если прям совсем не знакомы с программированием, вряд ли выйдет что-то годное.

Там должно быть "are" вместо "a". Но я не нейросеть, мне можно ошибаться
Там должно быть "are" вместо "a". Но я не нейросеть, мне можно ошибаться

Я делаю карточную игру. Подробнее про свой проект рассказывал в отдельной статье:

Сначала я не хотел юзать нейросети: как ни крути, это отдельный навык, в развитие которого нужно вкладывать время. А я и так в процессе разработки осваиваю кучу всего нового. Но пока писал код, столкнулся с проблемой, которую не мог решить сам. Решил спросить совета у ChatGPT — и ChatGPT мне помог.

✅ Удачный пример: подбор подходящего цикла для раздачи карт

Столкнулся с проблемой: нужно перебрать весь список карт, чтобы сбросить из него лишние карты. Цикл foreach не дает этого сделать, а чем-то заменить его или модифицировать не получается.

Нейросеть предложила создавать копию списка и перебирать карты уже в нем:

Вариант оказался рабочим, но он не удовлетворял другому моему гейм-дизайнерскому требованию. Мне нужно было, чтобы когда карты в списке кончаются, цикл перезапускался с перетасованной колодой. Ну, как это делается в Slay the Spire: если карты в колоде кончились, берутся карты из сброса, перетасовываются — и нужное количество выдается в руку.

Нейросеть такая: "ааа, что ж ты раньше то не сказал, тут вообще другой цикл нужен". И предложила цикл while, который будет повторяться до тех пор, пока в руку не будет выдано нужное количество карт:

Таким образом я получил первый урок программирования от нейросети и первый урок по грамотному составлению промптов:

От постановки промпта зависит исходный результат (да, кэп). Чем точнее и полнее вы опишите, что хотите получить, тем лучше нейросеть напишет код. Описывайте желательное поведение полностью, не фокусируйтесь только на той проблеме, которую решаете прямо сейчас.

❌ Неудачный пример: код для центрирования карт

Я воодушевился, обменялся комплиментами с нейросетью и продолжил писать код. Следом я решил сделать автоматическое центрирование. Вот как это выглядит сейчас — как только карт в руке становится меньше или больше, они тут же встают по центру.

И тут мы с GPT зашли в тупик.

Нейросеть начала хвататься за куски кода, которые отвечали за другие вещи:

Потом пошла череда решений, которая приводила к одному и тому же результату. Сколько я ни пытался скорректировать ошибки, после изменений в коде на экране ничего не менялось:

Если изначально задача поставлена неверно и вы создали искусственные ограничения, от нейросети ничего не добьешься. Она раз за разом будет повторять одну и ту же ошибку.

✅ Как пофиксил код для центрирования карт

Пофиксить помогло волшебное сочетание слов "давай начнем все сначала" и пересмотр исходного промпта. Проблема была в том, что я не указал, что расположение ВСЕХ карт в руке должно пересчитываться в тот момент, когда количество карт изменяется. И нейросеть усердно переделывала код, который просто не мог сработать так, как я хочу, потому что он управлял перемещением лишь одной карты.

В итоге GPT сделала с первой попытки то, что от нее требовалось.

Если нейросеть вошла в бесконечный цикл ошибок, вам самим нужно вывести ее за рамки. Помогут слова типа "lets start it all over again" и скорректированное описание изначальной задачи. Главное, не пытайтесь заставить исправить написанный нейросетью код, если он не работает после двух-трех итераций.


Этот пост входит в цикл постов про игру, которую я потихоньку делаю уже несколько месяцев. Я делюсь всем производственным процессом: какие решения я принимаю в разработке, геймдизайне, интерфейсе, арте и других сферах. В моем телеграм-канале вы можете посмотреть другие посты и узнать, когда ждать следующие: @nigylamchan.

Источник: https://habr.com/ru/articles/757540/


Интересные статьи

Интересные статьи

Поговорим о том, как можно приближать значения различных ветвей W-функции Ламберта, а после применим полученные результаты для решения задачи поиска кратчайших доверительных интервалов.
Мне понадобилось написать своей renamer для фото.Зачем? Ведь есть куча бесплатного софта для пакетного переименовывания файлов. Я попробовал несколько, и в моем случае они были бесполезны, т.к. мне ну...
Пожалуй, все уже набаловались с ChatGPT, так что пришла пора поговорить о ней максимально серьезно. Технологии искусственного интеллекта влияют на все сферы нашей жизни, включая кибербезопасность – а ...
Не так давно пакет elliptic (6.5.4) для стандартных эллиптических кривых был уязвим для различных атак, одним из которых является Twist Attack. Криптографическая проблема была в ре...
Качественное образование — это не просто формальный диплом именитого вуза или парочка сертификатов о пройденных курсах. Это прежде всего новые навыки и уверенное желание ...