Опыт создания игры с помощью ChatGPT 4
В ролике показан наш первый опыт использования ChatGPT 4 для написания игры под мобильные платформы.
Целью эксперимента было желание посмотреть, можно ли с помощью ChatGPT 4 полностью написать не очень сложную программу.
Весь код написан нейросетью и только в конце вручную внесли небольшие правки.
Вывод:
ChatGPT 4 является прекрасным помощником, который способен ускорить разработку, но именно как помощник. Полностью заменить программиста ChatGPT на данном этапе не способен.
Расшифровка видео
0:01
Всем привет. Сегодня в ролике я покажу процесс создания
0:06
игры для андроид и айфон с помощью ChatGPT. Разберём, насколько это сейчас имеет смысл,
0:12
какие проблемы при этомвозникают. Но вначале я покажу саму идею игры.
0:21
Когда то у меня был проект с размножающимися змейками.
0:24
Суть его проста. Если змейка не находит еду,
0:28
то её размер сокращается, если находит, то увеличивается.
0:33
Достигнув заданного минимума длины, змейка исчезает.
0:37
Достигнув заданного максимума длины, змейка делится на две.
0:44
Эта идея и легла в основу игры, прототип которой я написал в среде Processing.
0:51
Поле для игры небольшого размера, одновременно на поле смогут существовать не больше 20 змеек.
0:57
Никакой эволюции здесь не происходит.
1:01
И здесь на поле выходит змейка игрока. Она невидима для остальных змеек и цель игры,
1:09
уничтожить всех других змеек за наименьшее количество ходов.
1:14
Сделать это можно заставив их врезаться, ну или заморив их голодом.
1:24
Игра пошаговая. Ход происходть только
1:27
после нажатия кнопки с выбором направления. Сначала ходит змейка игрока, а затем все
1:33
остальные змейки. Есть время подумать.
1:36
Например, здесь я решил устроить ловушку и она сработала.
1:41
Стараемся перекрыть все возможные пути движения змеек противника.
1:46
Ещё одна ловушка. Главное не забывать есть самому.
1:51
Смерть от истощения – это один из вариантов проигрыша.
1:55
Длиной змейкой проще ловить противника, но длина змейки игорока ограниченна 16 сегментами.
2:03
Не всегда ловушки срабатывают. Я так и не смог найти какую то
2:08
стратегию игры, позволяющую гарантировано заканчивать игру за малое количество шагов.
2:16
Ещё один способ проиграть, это загнать себя в ситуацию, когда нет свободных клеток для хода.
2:25
Еда появляется через заданные промежутки и не зависит от съеденной еды,
2:30
поэтому лучше съедать всё, что не может использоваться в качестве ловушки.
2:37
Если оставлять на поле много еды, то пока отлавливаете змеек в одном углу,
2:42
в другом расплодится ещё больше. В этот раз я смог очистить
2:48
территорию за 511 шагов Эту игру решили переписать под
2:54
мобильные платформы, но сделать это не стандартным способом.
2:57
Весь код с нуля должен быть написан с помощью ChatGPT.
3:01
Этим занимался мой коллега Илья, который является разработчиком под Андроид.
3:06
Для него это был новый опыт. Я же только смотрел промежуточные
3:13
результаты и указывал на недостатки. Ну что, поехали.
3:20
Мы представляемся нейросети и просим совета по созданию игры под Андроид,
3:25
похожую на классическую змейку. Нейросеть даёт нам советы.
3:30
Затем спрашиваем, как начать проект и получаем подробный список необходимых шагов.
3:35
Воспользуемся её советами и просим написать код, что нейросеть с удовольствием и делает.
3:41
Нам осталось только скопировать код, вставить в среду разработки и запустить.
3:48
Сразу же начинаются проблемы, код выглядит красиво, но в нём постоянно идут ссылки
3:53
на несуществующие переменные и методы. Приходится постоянно поправлять ChatGPT.
4:01
И ещё один момент, мы будем переодически подавать на вход нейросети её же код, так как контекст,
4:07
который она помнит, ограничен. Также будем подавать на вход и текст ошибок,
4:12
который выдаёт компилятор. Что я делаю не так?
4:18
Мы уже час пытаемся написать код. Ты всё время ссылаешься на несуществующие методы.
4:24
Когда я указываю на это, ты переписываешь класс, что вызывает необходимость переписывать
4:30
другие классы. И так по кругу.
4:32
Почему ты забываешь свой код? Пошли ошибки при попытке запустить приложение.
4:42
Вроде запустилось, но мы видим только чёрный экран.
4:52
Вскоре ошибки вернулись. Давай начнём с самого начала.
4:57
Я хочу создать игру змейка для Андроид. Напиши мне код для класса змейки.
5:05
Со второй попытки получилось уже лучше. Теперь у нас есть базовые классы,
5:10
пришло время создать интерфейс. Попросим у ChatGPT совета.
5:15
Выслушав советы, предоставим чату весь имеющийся код и попросим написать код для класса GameView.
5:24
В своем классе GameView, ChatGPT использовал новый объект.
5:28
Попросим чат описать его.
5:30
Теперь попросим чат применить все эти классы для отображения игры.
5:37
Приложение иногда запускается, но мы видим только чёрный экран.
5:42
Иногда возникают ошибки при запуске, но мы не сдаёмся.
5:46
И наконец то голова змейки появилась на экране, тела пока нет.
5:52
Консультируясь с ChatGPT, решаем этот вопрос. Дальше стали учить змейку двигаться
5:58
в нужном направлении. Так как игра у нас пошаговая,
6:02
при клике по экрану, змейка должна перемещаться только на одну клетку.
6:08
Пришла пора создать кнопки.
6:14
ChatGPT пишет код. ChatGPT устал, повторим запрос.
6:16
Видать, действительно устал. ChatGPT получил код для исправления,
6:21
но вернул его же без изменений. Затем ещё раз.
6:26
Пришла пора создать змеек противника. Назовём её автозмейкой.
6:32
Мы объяснили нейросети, что от неё требуется и попросили написать код для автозмейки.
6:38
Напоминаем, что автозмейка должна погибать при столкновении.
6:43
ChatGPT пишет код обновлённого класса. Объясняем ChatGPT, что длина змейки
6:49
уменьшается без еды и если длина достигла минимума, то змейка погибает.
6:54
Нейросеть пишет обновлённый код для класов змейки и автозмейки
7:02
Объясняем, что теперь нам надо много автозмеек на поле, получаем новое обновление.
7:07
Устраняем разные баги, проход сквозь тело других змеек,
7:13
выход за границы поля, появление еды на теле змейки и тому подобное.
7:19
Иногда приходится кричать на ChatGPT с помощью заглавных букв.
7:23
Как думаете, понимает ли ChatGPT, что мы пытаемся обратить её внимвние?
7:30
Пришло время создать диалог, который будет вызываться при победе или поражении.
7:36
Также попросим ChatGPT добавить код для вызова диалога в другие классы.
7:43
Теперь попросим написать код для рестарта игры.
7:47
После рестата у нас чёрный экран. Пытаемся с помощью нейросети решить эту проблему.
7:54
ChatGPT проблему нашёл и добавил изменения в код.
7:58
Пришло время усовершенствовать мозги для автозмейки.
8:02
Описываем идею, она немного отличается от того, что я использовал в изначальной игре.
8:09
ChatGPT оценивает её, высказывает свои замечания. Веса для разных объектов ChatGPT придумывает сам.
8:15
Вполне разумно для пустого пространства предлагает 0, для еды – плюс 10, а для
8:22
сегментов змейки – минус 100. ChatGPT предлагает изменения,
8:27
которые следует внести в код. Добавляем функцию think “думать”.
8:36
Практически всё готово. Убираем мелкие баги.
8:40
Добавляем гибель змейки, когда ей некуда ходить.
8:45
Также убираем вновь появившийся баг, когда еда появляется на теле змейки.
8:50
Всё. Теперь вручную правим внешний вид интерфейса,
8:54
изменяем цвета, отделяем логику интерфейса от логики данных
8:59
и удаляем ненужный код. Приложение под андроид готово.
9:05
А на экране сейчас процесс создания приложения под айфон.
9:09
Здесь немного проще, так как можно было в качестве примера подавать код от андроида.
9:16
Всё! Игра выложена для
9:19
скачивания, так что можете скачать и поиграть в игру, чей код написан с помощью ChatGPT.
9:26
Ну что ж, пора подводить итоги. Я не ожидал, что у нас получится, но
9:31
пинками и уговорами мы всё-таки заставили ChatGPT создать приложение с нуля под Android и iPhone.
9:40
Время на создание приложения было затрачено больше, чем если бы разработчик
9:44
писал весь код сам. Так что, на данном
9:48
этапе программистом ничего не угрожает. Чтобы написать приложение с помощью ChatGPT,
9:55
человек сам должен быть программистом, чтобы видеть что выдаёт нейросеть, удалять лишнее,
10:02
указывать ей на ошибки, запускать всё это в среде разработки и создавать правильные промты,
10:08
направляющие нейросеть в правильном направлении. Но уже сейчас ChatGPT вполне готов выдавать
10:16
шаблоны кода для последующей правки, делать подсказки и находить новые решения.
10:22
А у вас есть опыт в использовании нейросетей для програмирования?
10:26
Делитесь своим опытом в комментариях. Ну а на этом всё.
10:31
Скачивайте игру, чей код написан с помощью нейросети и пробуйте.
10:36
Если найдёте какие баги, пишите Всем пока!