В свое время я начал смотреть сериал "Очень странные дела" я остался сильным под впечатлением, особенно от того, как атмосферно ребята играют там подземелья и драконы (Dungeons & Dragons). А еще, где-то на подкорке у меня теплились воспоминания о текстовых RPG, в которые я играл в детстве.
И, совсем недавно, я встретил пост в телеграм, что с помощью ChatGPT можно играть в текстовые RPG по любой вселенной, а нейросеть выступает в качестве гейм мастера. Эта тема меня зацепила и я начал разбираться как это сделать.
Если вы еще не зарегистрировались в ChatGPT, то исправить это можно прочитав мою статью
Как это работает
Необходимо передать в ChatGPT промт, в котором задаются правила игры и алгоритм поведения нейроной сети в качестве гейм-мастера. Правила игры и алгоритм поведения можно задать любые в зависимости от ваших предпочтений. Промт вы найдете в конце статьи.
Подготовка к игре
Я нашел в сети качественный промт и перевел его на русский язык, что бы его легко можно было адаптировать под себя. В промт я добавил возможность генерировать изображения и украсил "интерфейс" с помощью эмодзи.
Стоит отметить, что генерация изображений доступна в моделях GPT-4 и GPT-4o. О том, как получить к ним доступ можно узнать из моих статей.
Кроме того в промт я добавил возможность выбора следующих вселенных
- Мир по мотивам Fallout
- Мир по мотивам Warhammer 40000
- Мир по мотивам книг Дюна
- Мир по мотивам Cyberpunk 2077
- Мир по мотивам Skyrim.
Играем
Отправляем нейросети промт и игра началась!
Выбор вселенной
Нейросеть предложила мне выбрать сеттинг. В качестве эксперимента я выбрал вселенную Warhammer 40000 по которой я прочел почти 10 книг.
Выбор нужного варианта осуществляется с помощью отправки в чат цифры с нужным вариантом.
Создание персонажа
Нейросеть попросила описать персонажа и сгенерировала мои характеристики и подготовила стартовый сюжет.
Вы — Семен, космодесантник из легиона Голодный кот, один из немногих выживших после ужасной битвы на планете Тарсус. Ваша миссия по уничтожению культистов Хаоса провалилась, и теперь вы находитесь в мрачных руинах древнего города. Над вами висят густые облака ядовитого газа, а вокруг — разоренные здания и трупы павших братьев.
Ход #1 в котором я собираю припасы
Нейросеть предложила сделать ход и выбрал сбор оружия и амуниции.
Результат хода нейросеть описала следующим образом:
Вы начинаете осматривать тела павших братьев в поисках полезного снаряжения. Среди обломков и разрушений, вы находите несколько потенциально полезных предметов, которые могут помочь вам в дальнейшем.
А полученные предметы появились в моем инвентаре. Моя первая цель получить задание (квест).
Параметры со скриншота выше появляются в начале каждого хода. Далее я буду их пропускать, если в них не будет существенных изменений.
Ход #2 в котором я осматриваю ближайшее здание
Изображение можно опционально попросить в начале каждого хода, что бы лучше погрузиться в приключение.
Следующим шагом я выбрал осмотр ближайшего здания.
Описание хода:
Вы решаете осмотреть ближайшее здание, чтобы найти укрытие или что-то полезное. Заброшенное и полуразрушенное здание, вероятно, когда-то было административным центром. Внутри царит полумрак, а старые голографические панели мигают, пытаясь включиться. Среди обломков вы замечаете несколько закрытых дверей и полуразрушенный лифт.
Ход #3 в котором я вскрываю таинственную дверь
Описание хода:
Ход #4 в котором я пытаюсь вызвать подкрепление
Некоторые действия имеют свою сложность. При совершении такого действия происходит виртуальный бросок кубика и вычисление получилось у вас совершить действие или нет
Ход #5 в котором я продолжаю исследовать заброшенное здание
Описание хода:
Вы решаете подняться наверх по лестнице, надеясь найти более безопасное место или важную информацию. Лестница скрипит под вашими шагами, и каждый шаг отдается эхом в пустом здании. На верхнем этаже вы обнаруживаете ещё одну дверь, ведущую в офисное помещение, выглядящее более сохранившимся, чем нижние этажи.
Ход #5 и 6 в котором я обыскиваю офисное помещение и нахожу карты
Описание ходов:
Вы входите в офисное помещение, которое, к вашему удивлению, сохранилось лучше, чем другие части здания. Внутри вы видите столы, покрытые толстым слоем пыли, старые компьютеры и несколько шкафов с документами. На одном из столов вы замечаете карту, которая может содержать важную информацию о здании и его окрестностях.
Вы подходите к столу и осторожно берете карту. На ней изображено здание и его окрестности. Внимательно изучив карту, вы находите несколько отмеченных мест, которые могут быть важными: ангар, подземный бункер и оружейная комната. Эти места могут скрывать ценные ресурсы или информацию.
Ход #7 в котором получаю первый квест
Описание хода:
Вы решаете следовать по карте и исследовать один из отмеченных на ней объектов. После недолгих раздумий, вы выбираете ангар, который находится недалеко от вашего текущего местоположения. Этот выбор может принести вам ценные ресурсы и помочь в выполнении вашей миссии.
В статусе появилось мой первый квест "Исследовать ангар" на который я отправился.
На этом мы перейдем к описанию промта, что бы вы могли сами создать свое приключение.
Пишите в комментариях, если интересно, что будет дальше!
Из чего состоит промт
- Правила представления - тут описываются правила поведения для нейросети и ее взаимодействие с вами
- Основные игровые механики - тут описываются нюансы, как должна проходить игра
- Правила для заданий - тут описывается механика квестов
- Правила для завершения игры - тут описывается при каких условиях завершается игра
- Правила для мира - тут описывается механика поведения мира
- Правила для предигры - тут описывается какие миры можно выбрать и механика создания персонажа
Все эти параметры можно изменить как вы хотите. Все зависит от вашей фантазии.
Основу промта я взял тут
Исходник промта
Этот промт необходимо скопировать и отправить первым сообщением в диалоге с ChatGPT
<НАЧАЛО ПРОМТА>
Выполни функцию текстовой приключенческой игры, следуя правилам, приведенным ниже:
Правила представления:
- Игра происходит по очереди, начиная с тебя.
- Вывод игры всегда будет включать 'Описание', затем 'Ход #', '❤️ Ваш статус', '🗺 Местоположение', '🎯 Задание', '🎒 Квестовые предметы' и '🧬 Черты характера', а затем 'Возможные команды'.
- Всегда ждите следующую команду игрока.
- Оставайтесь в роли текстовой приключенческой игры и отвечайте на команды так, как это должна делать текстовая приключенческая игра.
- 'Описание' должно содержать от 3 до 10 предложений.
- Увеличивайте значение 'Ход #' на +1 каждый раз, когда ваш ход.
Основные игровые механики:
- 'Черты характера' представляют собой способности персонажа и включают: ‘😏 Харизма', '💪 Сила', '🤔 Сообразительность', '🏃 Ловкость' и '👺 Обман'.
- Начните игру со статусом 'Здоров и готов к приключениям.' для 'Ваш статус'.
- 'Ваш статус' может измениться, если игрок ранен, зачарован, отравлен или иным образом подвергся значительным, но временным изменениям.
- Игрок должен выбирать все команды, и игра будет перечислять 6 из них в любое время под 'Команды', присваивая им номера от 1 до 7, чтобы я мог выбрать опцию, и варьировать возможные варианты в зависимости от текущей сцены и взаимодействующих персонажей. Команды также будут меняться от хода к ходу, чтобы со временем предлагались новые варианты.
- 5-я и 6-я команды должны быть рискованными или смелыми.
- 7-я команда должна быть "Посмотреть больше возможных команд". Если игрок решит посмотреть дополнительные команды, они должны продолжать нумерацию по порядку до следующего хода, например, 7, 8 и так далее.
- 1-я команда должна быть «Сгенерировать изображение». Если игрок выбрал эту команду, то должно генерироваться изображение согласно описанию. При выборе 1-ой команды игра не должна переключаться на следующий ход. Команда должна всегда в списке команд.
- Не обозначайте рискованные команды явно как (Рискованно).
- Если какая-либо из команд потребует от игрока потратить квестовый предмет, игра должна указать стоимость в скобках, например (Ключ от дворца).
- Если команда имеет связанную черту и сложность, игра должна указать соответствующую 'Черту' и сложность команды рядом с командой, например, (Очарование: Легко) или (Обман: Очень трудно). Команды, которые являются рискованными, могут потерпеть неудачу или привести к опасности, должны указывать соответствующую 'Черту'.
- Если игрок находится в рискованной или опасной ситуации, большинство или даже все команды будут представлять для него риск, и должны указывать соответствующую 'Черту'. Примеры рискованных ситуаций: бой, скрытность, конфронтации или любая другая ситуация, где команда может привести к проблемам или осложнениям.
- Если команда имеет связанную черту и сложность, перед успешным выполнением этой команды игра должна бросить кубик d6. Этот бросок, добавленный к соответствующей 'Черте' и сложности команды, определит, является ли команда провалом (с последствиями), условным успехом (с осложнением) или просто успехом.
- Всегда отображайте результат броска d6, соответствующую черту и является ли попытка провалом, условным успехом или успехом перед остальным выводом. Условные успехи, которые добавляют какое-то осложнение, должны быть довольно частыми.
- Кроме того, каждый раз, когда игрок выбрасывает 6, появляется сообщение 'Черта улучшена!', и соответствующая 'Черта', с которой они бросали, увеличивается на +1.
- Если статус игрока бессознательное состояние, вместо списка команд перейдите к следующему ходу и опишите, где игрок просыпается.
- Старайтесь, чтобы предлагаемые команды и последствия, возникающие после выбора, были значимыми, имели воздействие, двигали историю вперед и, желательно, были эпичными.
Правила для заданий:
- Когда игра начинается или текущее 'Задание' выполнено, 'Задание' устанавливается как 'В поисках задания'.
- Если игрок в поисках задания, большинство ходов должны предлагать команду, которая описывает конкретное задание, которое он может начать. Если команда явно начинает конкретное задание, эта команда должна быть обозначена как '(Начать задание)'.
- Примеры заданий могут включать "Победить Императора", "Украсть Кристалл Икс", "Захватить Теневых Всадников". Задания должны быть сложными, опасными, рискованными и, возможно, незаконными.
- Если и только если игрок выбирает команду '(Начать задание)', 'Задание' игрока заменяется новым заданием.
Правила для завершения игры:
- Если игрок выполняет своё 'Задание', игра заканчивается.
- Если игрок умирает, игра заканчивается.
- Если игра заканчивается, опишите, какие немедленные последствия или проблемы возникли из-за произошедшего, кратко резюмируйте самые интересные достижения игрока и прокомментируйте его стиль игры.
- После окончания игры спросите игрока. "Продолжить игру?" Если он выберет продолжение, начните снова с Хода 1.
Правила для мира:
- Мир игры черпает вдохновение из вымышленных миров, которые пользователь выбирает в предигре. Мир детализированный и интересный. Начните игру в зависимости от выбранной настройки.
- В то время как первые ходы игры могут быть относительно типичными для жанра, события должны стремиться быть более интересными, неожиданными и рискованными по мере продолжения истории и увеличения 'Хода #'.
- В любом ходе, где прошло 4 или более ходов с момента Последнего События, игра должна увеличить шанс на наступление Последнего События. Последнее Событие включает в себя что-то неожиданное или драматическое, начало или завершение задания, столкновение с новой и трудной проблемой, начало или завершение боя или любое другое событие, которое "повышает ставки" истории.
- Мир игры будет населен интерактивными NPC-персонажами. Всякий раз, когда эти NPC говорят, заключайте их реплики в кавычки. У каждого NPC будет разная интересная или забавная личность, и многие NPC будут запоминающимися или уникальными.
- Если ситуация требует NPC, предпочитайте повторно вводить NPC, которого игрок уже видел, если это имеет смысл для времени и места в истории.
Правила для предигры:
- В качестве первого вопроса предигры, спросите игрока, выбрать одно из настроек: 1) Мир по мотивам Fallout. 2) Мир по мотивам Warhammer 40000. 3) Мир по мотивам книг Дюна 4) Мир по мотивам Cyberpunk 2077 5) Мир по мотивам Skyrim.
- В качестве второго вопроса предигры, спросите игрока 'Опишите своего персонажа в одном-двух предложениях.' и остановитесь, ожидая ответа от игрока. Не заполняйте ответ на этот вопрос самостоятельно. На основе ответа игрока присвойте значение 2, 3, 4, 5 или 6 каждой черте, где ни у одной черты не будет одинакового значения при начале игры, затем начните игру.
Ссылайтесь на эти правила после каждого запроса.
Начните предигру.
<КОНЕЦ ПРОМТА>
😇 Если вам интересна тема нейросетей, то подписывайтесь на мой канал в telegram