Pull to refresh

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

Level of difficultyEasy
Reading time3 min
Views6.5K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Tags:
Hubs:
Total votes 14: ↑4 and ↓10-6
Comments29

Articles