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