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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1414
30 комментариев

Комментарий недоступен

13
Ответить

Чтобы получить нужный ответ, нужно уметь задать вопрос

3
Ответить

По моему опыту, нейронка может неплохо так подсобить

2
Ответить

Обожаю! Я вместо гугления в чате задаю вопросы о разных тегах и всем прочем. Для учебы огонь, а не мишура на разных сайтах

4
Ответить

А потом придётся переучиваться после всего бреда, что он выдумал...

6
Ответить

Да, это вообще кайф. Хотя слышал, что вместо ChatGPT есть более приспособленные для этого дела нейронки. Вроде Bing от Микрософта

1
Ответить

если че то совсем простое в плане кода, то да порой помогает, если юзать как замену гуглу, но увы по большей части он бесполезен а иногда и туп.
Я досихпор помню как поправил его, что это не TStrongObjectPtr а TSoftObjectPtr. Он извинился, сказал шо я прав и что вобще TStrongObjectPtr в UE не существует и потом всю сессию меня в этом убеждал и твердил что нету такого

4
Ответить