Блог
Искуственный интеллект

Я создал видеоигру с помощью нейросетей, но не смог опубликовать ее в Steam

Более десяти лет я создаю видеоигры в одиночку.

Я начал свою карьеру копирайтера с разработки простого 3D-файтинга, а заканчиваю ее работой над игрой, где несколько нейросетей творят в реальном времени.

Расскажу, откуда у меня появилась такая идея и почему я не смог опубликовать игру в Steam.

Путь в разработке и выпущенные игры

Сдетства яувлекался видеоиграми иихразработкой. Вмоих тетрадях вырисовывались вымышленные уровни, аянеукоснительно записывал каждую интересную идею. Однако, все это стало доступным насовершенно новом уровне, когда в2010году мне удалось приобрести компьютер иполучить доступ винтернет. Уже тогда, мною успешно отредактированы файлы иразработаны модификации дляразнообразных игр. Вкупе сэтим, янеустанно изучал различные игровые конструкторы, вроде Raycasting Game Maker, чтобы расширить свои знания инавыки вэтом увлекательном мире.

В 2013 году я, всего 16-летний школьник, начал свое самостоятельное погружение в мир программирования и игрового движка Unity. Мои дни были полностью посвящены обучению за компьютером. Не прошло и нескольких месяцев, как моя первая игра под названием "Drunken Wrestlers" была опубликована в Steam. Это был простой, но захватывающий 3D-файтинг с применением ragdoll-физики - инновационной анимации, которая позволяла моделям реалистически сгибаться и реагировать на окружающую среду.

Игра Drunken Wrestlers пользуется огромной популярностью, ведь она была скачана уже более 10 миллионов раз! Да так, что даже знаменитый ютуб-блогер PewDiePie не смог устоять перед соблазном и сыграл в нее, и его ролик собрал целых 3,5 миллиона просмотров! Впечатляюще, не так ли? Теперь, спустя несколько лет, я решил порадовать всех поклонников игры и выпустил ремейк, специально для мобильных устройств в магазине Google Play. Big Game Studios не просто идет в ногу со временем, мы создаем истинные шедевры, которые привлекают внимание миллионов игроков!
Отрывок из видеоролика. Источник: YouTube-канал PewDiePie. В 2016 году я приступил к созданию второй части игры. Drunken Wrestlers 2 стала моим первым серьезным проектом. Я самостоятельно разрабатывал онлайн-мультиплеер, редактор карт, несколько игровых режимов и кастомизацию персонажей. Необходимых знаний для реализации игры такого уровня мне не хватало, поэтому разработка затянулась на протяжении времени.

После трех лет активной работы над игрой, ее выпустили в ранний доступ на платформе Steam. Однако, несмотря на это, я продолжал трудиться над проектом еще столько же времени. И только летом 2022 года, спустя целых шесть лет разработки, мы наконец завершили работу над Drunken Wrestlers 2.

Я хочу представить вам свою третью игру — потрясающий платформер под названием Locomotorica. Как и предыдущие игры, она основана на уникальной ragdoll-физике. Но на этот раз вам необходимо научиться ходить и преодолевать препятствия, а не сражаться. Этот захватывающий платформер открывает перед вами совершенно новый опыт игры.
Цитата из трейлера игры, доступного на YouTube-канале Oleg Skutte. Выполнить это задание является значительно сложным: для управления движением персонажа на игровом контроллере необходимо одновременно нажимать несколько кнопок. Даже незначительные выступы или маленькие преграды становятся настоящими испытаниями. Если не удастся успешно их преодолеть, 3D-модель персонажа падает восхитительно смешно.

Staggering Ragdoll, an addictive game developed with the aid of neural networks, made its debut on Steam in late May 2023. Simultaneously, I embarked on the development of my fourth and most extraordinary game.

Увлечение нейросетями

Моё первое знакомство с нейросетями произошло давно, в 2015 году. Тогда они поразили меня своей способностью создавать смешные и фантастические картинки с изображением собак. Тогда я подумал, что эта технология будет идеальным инструментом для разработки видеоигр, особенно для независимых разработчиков, как я. Однако, я полностью погрузился в мир нейросетей только в 2019 году, после выхода GPT-2. С тех пор я активно экспериментировал с созданием чат-ботов.

Из-за прогресса нейронных сетей меня охватила идея создать игру, которая будет генерироваться процедурно в реальном времени. Такой подход способен существенно повысить вариативность проекта и даже сделать его бесконечным. Однако, у меня не было необходимых технических средств для реализации этой амбициозной игры.
В году 2015-м, нейросети еще не обладали способностью создания фотореалистичных изображений. Эта информация была получена из источника fastcompany.com. Однако, все изменилось в конце 2022 года. Вынужденно покинув Россию и оказавшись за границей, мне впервые удалось получить доступ к ChatGPT и OpenAI API. Великолепные возможности, предоставляемые этими инструментами, позволили мне осознать, что теперь процедурная генерация текстовых ресурсов для игр, включая коды, диалоги и сценарии, стала реальностью.

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

Идея и разработка новой игры

Начало творчества. В январе 2023 года я приступил к разработке захватывающей игры под названием Dreamio: AI-Powered Adventures. В этой игре, игрок окунется в захватывающий мир второго лица, где вместо прямого взаимодействия с окружающей средой, ему будет предоставлена возможность воспринимать сюжет от артифициального интеллекта-рассказчика. Рассказчик будет придумывать захватывающие ситуации и задавать игроку вопросы о его дальнейших действиях. В такой игре игроку придется настраивать окружение и задавать рассказчику уточняющие вопросы о персонажах и мире игры.

У меня возникла замечательная идея, которая дает игрокам возможность в полной мере воплотить свои фантазии и создать уникальный мир игры. Что я сделал? Я предоставил им свободу описать стартовый сеттинг, который будет идеально соответствовать их предпочтениям и взглядам. Однако, чтобы помочь тем, кто предпочитает более готовые варианты, я предварительно разработал несколько захватывающих сеттингов, таких как киберпанк или мир после зомби-апокалипсиса. В итоге, наша игра может погрузить игроков в самые разнообразные и захватывающие миры, где ожидают их невероятные приключения.
Окно с выбором сеттинга
Первое сообщение от рассказчика, в случае выбора «киберпанк» в качестве сеттинга, остается постоянным, неизменным. Это сообщение источник GPT-3, одной из версий нейросети, которая генерирует продолжение текста пользователя. Во время разработки ChatGPT API, сторонние разработчики не имели возможности взаимодействовать напрямую со службой, поэтому я использовал GPT-3 и пользовался полной свободой в составлении запросов. Однако, с появлением публичного API ChatGPT от OpenAI, стало возможным использовать и ChatGPT для генерации продолжений текста. Переход с GPT-3 на ChatGPT был простым и удобным.

Основной запрос длягенерации сюжета спомощью GPT⁠-⁠3 выглядит примерно так:

* Рассказчик: *описывает стартовый сеттинг* Игрок: *совершает действие* Рассказчик:

По завершении каждого ответа игрока, диалог подвергается обработке в нейросети. В силу того, что переписка заканчивается на пустой реплике рассказчика, GPT-3 проводит анализ контекста и генерирует следующую часть. Этот процесс повторяется после каждого действия игрока.

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

Запрос длягенерации краткого содержания истории выглядит следующим образом:

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

Нейросеть анализирует сессию изаменяет историю кратким содержанием. Последующие запросы выглядят так:

* Предыдущие события: *краткое содержание* Рассказчик: *продолжение* Игрок: *действие* Рассказчик: *продолжение*

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

При нажатии игроком на кнопку "Что мне делать?", GPT-3 автоматически создает список пронумерованных вариантов действий.
Выбор ответа в игре - так это выглядит. Источник: store.steampowered.com. Озвучка реплик рассказчика осуществляется с помощью синтеза речи. Я ранее пробовал использовать ElevenLabs для озвучивания реплик, и рассказчик звучал так, словно живой. Однако стоимость такой озвучки оказалась чрезвычайно высокой. В итоге я решил остановить свой выбор на Neural2 от Google. Кроме того, игрок также может отвечать рассказчику голосом, и речь распознается при помощи нейросети Whisper от OpenAI.

Я разработал уникальный запрос для GPT-3, цель которого - генерировать иллюстрации, а в ответ получать запросы для Stable Diffusion. Процесс его формирования несложен и выглядит следующим образом:

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

В ответ на запрос GPT-3, необходимо визуально передать описание текущей сцены. Полученный ответ автоматически отправляется в формате запроса в Stable Diffusion. Сгенерированное изображение загружается в игру и отображается рядом с диалоговым окном в качестве иллюстрации.
Для достижения единого стиля иллюстраций потребовалось вложить значительные усилия в формулировку запроса и настройку Stable Diffusion. Кроме того, полученные изображения проходят дополнительную обработку с помощью нейросети MiDaS. Диалоговое окно и иллюстрация сцены представлены на store.steampowered.com.

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

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

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

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

Когда игрок оказывается в несчастной смерти, за экраном появляется фраза, которая вызывает разочарование и небольшую тоску: "Game over". Если игрок, отчаявшись, решает рискнуть и попытаться совершить нечто сверхъестественное, наш рассказчик быстро напоминает, что это действие не входит в его возможности. Продолжаем нашу историю: сцена открывается стартовым сеттингом, в котором находится наш главный герой - игрок. Он совершает действие, что приводит к дальнейшему развитию сюжета. Рассказчик с новыми эмоциями готов продолжить наше путешествие в мире игры.
Завершение примера игры. Герой предпринимает отчаянную попытку сбежать от армии зомби, усаживаясь за руль своего автомобиля, но неудачно врезается в канаву. Что же произошло дальше? Как только происходит неизбежная гибель героя, на экране появляется надпись "Game over". Игра ясно и без сомнений передает понимание, что путь воскрешения закрыт, и что сгибель нашего персонажа означает окончание приключения. Несмотря на это, игра предоставляет возможность загрузить последнее сохранение, давая игроку шанс исправить свои ошибки и попытаться снова преодолеть опасности зомби-мира.

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

Попытка опубликовать игру в Steam

Мне понадобилось немного более трех месяцев для разработки. Еще до конца мая я подготовил сборку Dreamio и отправил ее на рассмотрение в Steam. Впечатляюще, уже менее чем через неделю команда поддержки Steam задала мне вопрос о правах на использование датасетов, на которых нейросети получили обучение.

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

Разбираясь в стратегии компании Valve, необходимо пролить свет на наличие игр в платформе Steam, в которых используются революционные нейросетевые ассеты. Возникает вопрос: будет ли компания принимать меры по удалению уже выпущенных игр? Однако, на данный момент, это кажется маловероятным.

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

Итоги и планы

На текущий момент Dreamio: AI-Powered Adventures имеет свою страницу в Steam. Однако, в настоящее время игра доступна лишь на моем веб-сайте. Возможность сыграть в нее бесплатно предоставляется пользователям, имеющим аккаунт на Patreon.

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

Я уверен, что использование Function calling API в ChatGPT в будущем позволит создавать более усовершенствованных неигровых персонажей (NPC) для игр. Они смогут активно взаимодействовать с окружением, представляться не просто как обычные чат-боты, но также иметь свое собственное лицо. К тому же, разработка процедурной генерации трехмерных миров с использованием нейросетей уже почти достигла своего завершения.

Уменя всегда множество идей, однако я ещё не определился сконкретной. Однако, я понимаю, что стоит быть осторожнее снейросетями. Вероятно, я вернусь кним, когда уменя будет доступ кAPI безопасным длякоммерческого использования нейросетей, например, Adobe Firefly или Llama2.