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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Комментарии (21)


  1. Polarisru
    29.08.2023 06:52
    +8

    Наконец-то! Дожили! После поколения программистов не понимающих из-за уровня абстракции, что там под капотом у их кода, вырастает поколение не понимающих даже то, что делает их собственный код.


    1. Nigylam Автор
      29.08.2023 06:52
      +1

      Ну, вообще, мне как раз было понятно, что делает код, который написала GPT. Просто сам бы я до него додумывался дольше


      1. wsf
        29.08.2023 06:52
        +1

        Код написали за вас, а чтение кода и написание это разные навыки, разрыв будет увеличиваться. Не додумались в этот раз до базового алгоритма, в следующий не додумаетесь тоже.


        1. Nigylam Автор
          29.08.2023 06:52

          Резонно. Но я бы такую работу с нейросетью сравнил с выводом ошибок в самом Unity. Можно тоже сказать, что нужно самому додумываться, где именно произошла ошибка и что с ней делать


    1. IvanPetrof
      29.08.2023 06:52
      +4

      Скоро это станет новой абстракцией. Появятся программисты "на gpt-шном".

      И "код" будет выглядеть примерно так

      Hidden text

      сделай игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого…). Ну а если за злого… то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого… (в горах, там есть старый форт…)

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


      1. Nikeware
        29.08.2023 06:52

        Главное про "грабить караваны" не забыть :-)


        1. IvanPetrof
          29.08.2023 06:52

          Это будет патч


      1. Nigylam Автор
        29.08.2023 06:52

        Походу, не любят здесь, когда кто-то пишет код с помощью нейросетей...


  1. arty_F
    29.08.2023 06:52
    +1

    Вау! Нейросетка с нескольких попыток смогла в hello world!


    1. Nigylam Автор
      29.08.2023 06:52
      +1

      Для меня это было больше, чем Hello world. Понимаю, что для кого-то с большим опытом подобные задачи могут быть слишком простые, чтобы обращаться за помощью к нейросети


  1. Shura_m
    29.08.2023 06:52
    +3

    А фактически имеем:

    На написание запросов к GPT потрачено больше времени, чем ушло бы на написание программы самостоятельно. Заодно бы и опыт в программировании увеличился.


    1. Nigylam Автор
      29.08.2023 06:52

      На субъективном уровне опыт в программировании увеличился. Да и по времени показалось, что не так долго я эти запросы писал. Вот на написание статьи - да...


  1. Oleg-repetitor
    29.08.2023 06:52
    +2

    ЦИТАТА: "На написание запросов к GPT потрачено больше времени, чем ушло бы на написание программы самостоятельно. Заодно бы и опыт в программировании увеличился."

    Для человека, который

    не профессиональный программист на полную ставку, а например гейм-дизайнер;

    хочет сделать минимально работающий демонстрационный образец продукта (здесь игры),

    эта возможность просто великолепна.


    1. Nigylam Автор
      29.08.2023 06:52
      +3

      Я вижу здесь пользу и для того, кто только осваивает навыки программирования и не хочет по каждому вопросу открывать ветку на StackOverFlow


      1. IvanPetrof
        29.08.2023 06:52
        +1

        Вообще, gpt даже в текущем виде весьма полезен для "быстрого старта". Его можно задолбать вопросами и он будет терпеливо объяснять, не посылая "курить маны".


  1. Ravebinovich
    29.08.2023 06:52

    А расскажите, чем руководствовались при выборе движка? Почему именно юнити, а не GameMaker, например?


    1. Nigylam Автор
      29.08.2023 06:52

      Когда работал гейм-дизайнером, игру делали на этом движке: тупо привык к нему. В Гамак пробовал тыкаться, но Юнити из всех понравилась больше. Плюс, хочется такой инструмент найти, чтобы если задумаю потом делать другую игру, не нужно было искать что-то новое. Ну тут могу ошибаться, что такой подход уместен


  1. Vivicpony
    29.08.2023 06:52

    Скажу больше - чатГПТ отлично понимает русский язык) можно написать буквально следующее:

    "Хочу, чтобы при нажатии на карту она увеличивалась, переворачиваясь лицевой стороной вверх, а остальные карты уменьшались, раздвигаясь на ширину увеличения карты"

    И он выдаст код))


    1. Nigylam Автор
      29.08.2023 06:52

      Блин, я что-то пробовал похожее делать, но получалось не совсем) Да и сейчас больше хочется самому программирование освоить


  1. Araki_Satoshi
    29.08.2023 06:52

    А это gpt-3.5 или gpt-4? gpt-3.5 заметно отстаёт в сфере программирования от gpt-4 согласно тестированию от WizardLM.


    1. Nigylam Автор
      29.08.2023 06:52

      GPT-3.5. На 4 вроде как подписка платная нужна