December 9, 2023

Как некодеру использовать ChatGPT для создания игр в Unity и Cocos Creator

Это гайд для тех, кто хочет начать пользоваться ChatGPT для создания игр в движках со скриптами, например, в Unity или Cocos Creator.

Собачка разрабатывает игру с помощью ChatGPT
☝️ Перед прочтением подпишись, пожалуйста, на мой телеграм-канал "Мастермайнд с Тимуром", где я регулярно рассказываю про разработку игр с помощью AI. А еще вступай в наш уютный чатик GameDev AI, где мы обсуждаем разработку игр с применением AI-технологий и инструментов.

Дисклеймер

  • Этот гайд для некодеров. Кодерам это вряд ли будет интересно.
  • Я не нашел гайдов и курсов по этой теме (кажется, таких еще нет), но получаю такие запросы в сообществе разработчиков игр.
  • Информация и технологии в сфере искусственного интеллекта обновляется часто и быстро, поэтому будет обновляться и этот гайд. Последняя дата обновления – 9 декабря 2023 года.
  • Данный гайд подходит как для Unity, так и для Cocos Creator. Я на личной практике использовал в обоих движках. В целом, подход достаточно универсален, так как речь идет про скрипты.

Содержание

Я не программист и никогда не кодил игры сам. У меня обычно были иные роли. Хотя простые штуки все равно приходилось делать. Например, интегрировать какой-то плагин или что-то пофиксить.

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

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

Кодеры VS некодеры

У кодеров и некодеров немного разное восприятие AI-инструментов для разработки. В некотором смысле, разные пути, которые особо не пересекаются.

Кодеры уже умеют создавать программную архитектуру продукта и писать код. AI они используют, по сути, для ускорения написания фрагментов кода. Эдакий Т9 для программистов. Им не нужно спрашивать у ChatGPT о том, какие именно скрипты для игры им понадобятся и как все это организовать. Особенно мидлам и сеньорам в этих моментах AI скорее будет мешать, чем помогать.

Для некодеров же все иначе. AI –– это не столько автозаполнение фрагментов кода, сколько полноценный ментор, который никогда не устанет что-то объяснять и рассказывать обо всем, обо всех мелочах. Или иначе можно сказать, что это тысяча джунов в помощниках, которые достались некодеру почти бесплатно, нужно только организовать их работу.

Цели использования ChatGPT

На самых ранних стадиях желательно понять цель использования ChatGPT. Глобально можно выделить две цели или два пути:

  1. Научиться кодить с ChatGPT
  2. Использовать ChatGPT как постоянного ассистента без глубокого погружения в программирование

От выбранного пути будет зависеть подход к ежедневному использованию ChatGPT.

Для первого пути будет характерно регулярное ревью того, что генерит ChatGPT. То есть нужно будет с определенной периодичностью просить AI объяснить скрипт целиком, либо какие-то отдельные функции или куски кода. Чат очень хорошо поясняет каждый элемент и логику, что делает обучение достаточно увлекательным и эффективным, потому что можно быстро сгенерить что-то работающее и понять, как это работает, на своем личном проекте.

Определенно ChatGPT позволяет оптимизировать кривую обучения. По сути, это обучение написанию скриптов на стероидах.

Если совсем с нуля изучать скриптинг для Unity или Cocos Creator без AI, то нужно слишком большой объем информации обработать и изучить на старте. Так как с нуля совсем ничего непонятно. С чего начать, за что браться. Как преобразовать идею игры в какую-то архитектуру и тем более в конкретные скрипты?

А ChatGPT сразу предложит неплохой вариант архитектуры и подходящие методы под игровую логику. И не нужно гуглить сложные кастомные запросы под свой кейс. Можно моментально получить очень релевантный ответ или решение через чат.

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

И тем не менее немного подучить синтаксис и основы языка не помешает. Это позволит получше разгребать куски кода, которые генерит чат. Просто, чтобы скрипт совсем не казался набором иероглифов или размытым изображением, в котором невозможно выделить составляющие.

Какую версию использовать?

Есть бесплатная версия чата и подписка за $20 в месяц.

Тарифные планы ChatGPT

Я сначала использовал версию 3.5 ChatGPT, и там вообще все грустно. Выдает плохой код и очень плохо что-либо объясняет.

Перешел на подписку и 4 версию ChatGPT. Вау! Она оказалась очень бодрой. Как реальный ментор все расскажет и покажет, все сделает, что нужно. Пишет код лучше намного, чем версия 3.5.

4 и 3.5 версии просто небо и земля. 3.5 версия пыталась все в одном скрипте делать и не получилось нормально дебажить ошибки. А 4 версия сразу разбивает задачу на несколько скриптов и дебажит хорошо. Выдает кучу гипотез, как проблему в принципе можно решить, и помогает пройти по всем этапам. Ощущение помощи реального человека.

4 версия имеет более актуальные данные. Иными словами, она больше знает, чем 3.5. Это особенно критично при использовании движка Cocos Creator, так как в последнее время у него было много важных обновлений.

Как вообще это работает?

Возможно ли собрать прототип из одного запроса? Насколько далеко можно зайти в создании проекта без глубокого погружения в программирование?

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

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

У чата можно спрашивать абсолютно все, не только генерацию непосредственно кода. Он расскажет, как выстроить архитектуру игры и прочие моменты вплоть до игрового баланса.

Здесь ChatGPT подробно рассказывает про геймплей игры, которую я взял за референс для создания клона

Забывчивый ChatGPT

Несмотря на то, что ChatGPT умненький и крутой, особенно 4 версия, он забывчивый, как древний старик.

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

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

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

Кстати, я попробовал все равно ссылаться на скрипты, которые были в прошлых сессиях взаимодействия. Попросил у чата воспроизвести их. И он просто местами выкинул куски кода. По сути, "забыл" о них.

Таким образом, невозможность сохранения контекста проекта при долгосрочной разработке –– это ключевой недостаток для разработки игр через ChatGPT. Как следствие, необходимо придумывать костыли по напоминанию архитектуры и параметров проекта в каждую сессию. Для этого я формирую и использую мастер-документ по проекту.

Есть и позитивный момент –– с недавних пор чат принимает на вход большие массивы данных, что позволяет делать мастер-документ достаточно объемным.

Мастер-документ

То, что ChatGPT плохо держит контекст проекта будет решено, либо уже решается каким-то плагином и я этого не знаю. Либо в перспективе появятся мостики между движками и ChatGPT, откуда чат будет забирать полную актуальную информацию о проекте. Это вообще будет идеально.

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

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

Я веду мастер-документы по проектам в Notion целиком на одной страничке, чтобы разом можно было закинуть всю информацию в ChatGPT для актуализации контекста в любой момент. Он содержит тексты и скрипты.

Мастер-документ можно сформировать какой угодно, опираясь на свои потребности. В качестве опорной точки можно использовать мои наработки.

Структура мастер-документа:

  • обращение к ChatGPT
  • общая информация про проект
  • описание геймплея
  • прогресс разработки в движке
  • скрипты и код

Обращение к ChatGPT

Здесь важно передать краткое послание чату, о чем этот документ. Обычно, после сообщения чату, он пытается сразу предложить решение. Поэтому в данном абзаце я делаю оговорку о том, что не нужно сразу предлагать решение, а нужно подождать моего следующего сообщения, где я уже поставлю задачу.

В моем документе это выглядит примерно так:

I’m developing a game in Cocos Creator using TypeScript. This is a document with the project scope and details. Review it and wait for the next step in the next message from me.

Общая информация про проект

Это общая информация про игровой проект. Здесь не слишком подробно, можно иметь верхнеуровневое описание, например, так:

Game Concept: "Last Pocket" is a puzzle game inspired by the concept of an 8-ball pool. It's designed to challenge your strategic prowess and quick thinking without requiring prior knowledge of billiards or pool. Gameplay Mechanics: In the game, you arrange wooden planks with a tap, creating mazes of reflections and angles to guide the ball towards victory. This involves managing ten distinct elements that add unique twists to each level, enhancing the puzzle-solving aspect of the game.

Описание геймплея

Более подробное описание механики и игровых элементов, чтобы у чата было больше понимания, из чего состоит проект. В идеале иметь хорошо прописанный геймдизайн-документ (ГДД).

Этот блок может содержать примерно следующие пункты:

  • Objective
  • Game Elements
  • Gameplay Mechanics
  • Challenges and Strategy
  • User Interface
  • Programming Considerations

Прогресс разработки в движке

Так как документ содержит полную информацию о проекте, а непосредственно в движке может быть реализована еще только часть, будет не лишним показать прогресс того, что уже добавлено и внедрено. У меня это выглядит примерно так в одной из версий документа по проекту в Cocos Creator.

Scene building progress:

  • Assets added
    • Background
    • Ball
    • Cue
  • Scripts added
    • Ball
    • PlayerInput
  • Nodes added
    • Background
    • Camera
    • Ball
    • Cue
    • PlayerInput

Скрипты и код

Это, пожалуй, самая важная часть мастер-документа, которая содержит актуальный набор скриптов и их содержание.

Можно сделать либо просто набор скриптов, либо сначала список и их предназначение, а уже потом сами скрипты.

Если делать сначала список скриптов, то выглядеть это может примерно так (привожу только часть списка):

Game Manager Script

  • Purpose: Manages the overall game state, including level progression, score tracking, and game settings.
  • Key Functions:
    • Initialize and terminate game levels.
    • Keep track of player progress and scores.
    • Manage game settings (sound, difficulty, etc.).

Level Manager Script

  • Purpose: Handles the loading and setup of individual levels.
  • Key Functions:
    • Load level data (layout, obstacles, ball start position, etc.).
    • Set up the game environment for each level.
    • Manage level-specific rules and conditions.

Player Input Script

  • Purpose: Processes player inputs, such as taps or swipes.
  • Key Functions:
    • Detect and interpret player taps or drag gestures.
    • Trigger actions like placing or rotating obstacles.
    • Handle user interface interactions.

После списка идут уже непосредственно скрипты.

В Notion можно делать специальные блоки для хранения кода, в которых можно выбрать язык программирования.

Добавление блока для TypeScript в Notion

Итоговый результат выглядит примерно так (фрагмент).

Скрипт PlayerInput в мастер-документе в Notion.

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

Версионность мастер-документа

Модульный подход к скриптам

Одно из самых важных в разработке игры с ChatGPT –– не перегружать один скрипт большим количеством функций. Желательно дробить как можно мельче, но в разумных пределах. Это не что-то особенное именно для взаимодействия с AI, это достаточно общее правило и в целом для программирования. Просто при взаимодействии с AI оно принимает особую значимость, потому что есть риск того, что ChatGPT будет менять то, что итак уже хорошо работает и не требует модификации на самом деле.

Примеры из практики

Это пару примеров из моей практики в самом начале использования ChatGPT для разработки игр в Unity и Cocos Creator. Хочу этими примерами продемонстрировать то, что может сделать некодер за очень короткий промежуток времени.

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

Unity

Пример прототипа, который был собран за два часа в Unity. Содержит базовую сцену и несколько скриптов. Это набросок кор-механики игры про парковку, где нужно передвигать автомобили свайпами.

Cocos Creator

Для погружения в движок Cocos Creator решил реализовать простейшую флаппи-механику. Доделывать я ее, разумеется, не буду. За первые четыре часа взаимодействия с движком и ChatGPT я успел:

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

Разочарование года –– Unity Muse

Помимо ChatGPT существует и AI-решение непосредственно от Unity, которое буквально недавно стало доступно по подписке. Это набор AI-инструментов для разработки игр под названием Muse. Там можно работать с кодом и графикой. Узнав о том, что можно уже взять подписку и пользоваться, я выстроил гигантские надежды, что это настоящая революция. Предвкушению не было предела.

Дальше –– разочарование. Потому что половина того, что там есть, сырая. А сам чат "просто чтобы был". При этом Muse никак не решает проблему с контекстом ведения проекта в ChatGPT, хоть и является нативным инструментом от создателей движка.

  • Нет никакой интеграции AI с проектом в Unity, то есть чат не в курсе, что за проект, и в удобном виде ему об этом никак не рассказать.
  • Не сохраняется контекст разработки проекта во времени. То есть чат "забывчивый".

По сути, это тот же ChatGPT, но только урезанный. Просто какая-то бутафория. Просто, чтобы было.

Возможно, интеграция чата непосредственно с файлами игровых проектов в будущем будет. Но пока похоже на бесполезную штуку, которая еще и стоит дороже, чем подписка на ChatGPT. Благо Unity Muse дает бесплатные 15 дней и можно потом ничего не платить.

Пока на Muse можно не тратить время и деньги. ChatGPT-4 на голову выше.

Будущее с AI

Чем больше я использую AI-инструменты в работе, тем больше склоняюсь к тому, что в будущем почти каждый будет оператором AI.

Как произошло со смартфоном. Этот девайс теперь является продолжением человека.

Не нужно будет знать и понимать детали, можно будет оперировать на более высоком уровне понятий и интеллектуальных объектов.

Многое для человека будет в формате black box и это будет совершенно ОК.

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

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

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

А далее чипирование и все дела! :) Я, кстати, готов буду в первых рядах стать пользователем. В какой-то момент человек без чип-тюнинга будет неконкурентен на рынке.


🙏 Спасибо за внимание к гайду. Если гайд показался полезным, поделись с друзьями и коллегами.

Полезные ссылки

  • Мой телеграм-канал "Мастермайнд с Тимуром", где я регулярно рассказываю про разработку игр с помощью AI.
  • Наш уютный чатик GameDev AI, где мы обсуждаем разработку игр с применением AI-технологий и инструментов.