Как ChatGPT учит кодить и помогает писать код для инди-игры
Сначала я не хотел юзать нейросети: как ни крути, это отдельный навык, в развитие которого нужно вкладывать время. А я и так в процессе разработки осваиваю кучу всего нового. Но пока писал код, столкнулся с проблемой, которую не мог решить сам. Решил спросить совета у ChatGPT — и ChatGPT мне помог.
✅ Удачный пример: подбор подходящего цикла для раздачи карт
Столкнулся с проблемой: нужно перебрать весь список карт, чтобы сбросить из него лишние карты. Цикл foreach не дает этого сделать, а чем-то заменить его или модифицировать не получается.
Нейросеть предложила создавать копию списка и перебирать карты уже в нем:
Вариант оказался рабочим, но он не удовлетворял другому моему гейм-дизайнерскому требованию. Мне нужно было, чтобы когда карты в списке кончаются, цикл перезапускался с перетасованной колодой. Ну, как это делается в Slay the Spire: если карты в колоде кончились, берутся карты из сброса, перетасовываются — и нужное количество выдается в руку.
Нейросеть такая: "ааа, что ж ты раньше то не сказал, тут вообще другой цикл нужен". И предложила цикл while, который будет повторяться до тех пор, пока в руку не будет выдано нужное количество карт:
Таким образом я получил первый урок программирования от нейросети и первый урок по грамотному составлению промптов:
От постановки промпта зависит исходный результат (да, кэп). Чем точнее и полнее вы опишите, что хотите получить, тем лучше нейросеть напишет код. Описывайте желательное поведение полностью, не фокусируйтесь только на той проблеме, которую решаете прямо сейчас.
❌ Неудачный пример: код для центрирования карт
Я воодушевился, обменялся комплиментами с нейросетью и продолжил писать код. Следом я решил сделать автоматическое центрирование. Вот как это выглядит сейчас — как только карт в руке становится меньше или больше, они тут же встают по центру.
И тут мы с GPT зашли в тупик.
Нейросеть начала хвататься за куски кода, которые отвечали за другие вещи:
Потом пошла череда решений, которая приводила к одному и тому же результату. Сколько я ни пытался скорректировать ошибки, после изменений в коде на экране ничего не менялось:
Если изначально задача поставлена неверно и вы создали искусственные ограничения, от нейросети ничего не добьешься. Она раз за разом будет повторять одну и ту же ошибку.
✅ Как пофиксил код для центрирования карт
Пофиксить помогло волшебное сочетание слов "давай начнем все сначала" и пересмотр исходного промпта. Проблема была в том, что я не указал, что расположение ВСЕХ карт в руке должно пересчитываться в тот момент, когда количество карт изменяется. И нейросеть усердно переделывала код, который просто не мог сработать так, как я хочу, потому что он управлял перемещением лишь одной карты.
В итоге GPT сделала с первой попытки то, что от нее требовалось.
Если нейросеть вошла в бесконечный цикл ошибок, вам самим нужно вывести ее за рамки. Помогут слова типа "lets start it all over again" и скорректированное описание изначальной задачи. Главное, не пытайтесь заставить исправить написанный нейросетью код, если он не работает после двух-трех итераций.
Этот пост входит в цикл постов про игру, которую я потихоньку делаю уже несколько месяцев. Я делюсь всем производственным процессом: какие решения я принимаю в разработке, геймдизайне, интерфейсе, арте и других сферах. В моем телеграм-канале вы можете посмотреть другие посты и узнать, когда ждать следующие: @nigylamchan.
Комментарий недоступен
Чтобы получить нужный ответ, нужно уметь задать вопрос
По моему опыту, нейронка может неплохо так подсобить
Обожаю! Я вместо гугления в чате задаю вопросы о разных тегах и всем прочем. Для учебы огонь, а не мишура на разных сайтах
А потом придётся переучиваться после всего бреда, что он выдумал...
Да, это вообще кайф. Хотя слышал, что вместо ChatGPT есть более приспособленные для этого дела нейронки. Вроде Bing от Микрософта
если че то совсем простое в плане кода, то да порой помогает, если юзать как замену гуглу, но увы по большей части он бесполезен а иногда и туп.
Я досихпор помню как поправил его, что это не TStrongObjectPtr а TSoftObjectPtr. Он извинился, сказал шо я прав и что вобще TStrongObjectPtr в UE не существует и потом всю сессию меня в этом убеждал и твердил что нету такого