Ваш Личный Квест с ChatGPT: Как Уговорить Гоблина (фэнтезийного) Вести Кулинарное Шоу

Ваш Личный Квест с ChatGPT: Как Уговорить Гоблина (фэнтезийного) Вести Кулинарное Шоу

Привет! Хочу рассказать о том, как я решил сделать текстовый квест, который в перспективе может быть и не совсем текстовым, при помощи современных технологий. Я имею в виду большие языковые модели — я использую GPT-4. Немного расскажу об идее, о планах по развитию, о том что сделано, и о проблемах.

Идеи и Планы

Я думаю, что попробую несколько видов таких игр. Одна из них — детектив, а та, о которой речь идёт сейчас, — это аналог Dungeon Master по правилам D&D. Пока это всё довольно просто сделано: мир существует только в контексте диалога с пользователем. Я использовал для этого встроенные методы, которые предоставляются API, но дальше будет больше.

Фиксация Действий Игрока

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

Асинхронный Мультиплеер

Ещё я думаю сделать асинхронный мультиплеер. Понятия не имею, как игроки могут находиться в одном месте одновременно. Например, представим, что два игрока оказались в игре внутри таверны: один решил прибить владельца таверны, а второй в это время заказывает у него еду. Уже есть какой-то конфликт в этой истории. Как это обходить, я пока не знаю, но, наверное, буду разбираться по ходу дела.

Реализация

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

Проблемы

Проблема номер один — невозможность проиграть

Ваш Личный Квест с ChatGPT: Как Уговорить Гоблина (фэнтезийного) Вести Кулинарное Шоу

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

Шаги по Улучшению Игры

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

Второй шаг — ограничить мир. Сейчас при запуске игры можно выбрать мир, настроение и так далее. Это прикольная опция, но создаёт ряд серьёзных ограничений и усложняет разработку. Если я создам один мир, тогда можно будет думать о том, чтобы создать асинхронный мультиплеер. Мир будет генерироваться и фиксироваться в единой базе, когда персонажи будут по нему путешествовать. Тут, конечно, есть вероятность того, что мир будет бесконечно генерироваться, поэтому придётся создать какие-то ограничения, но возможно это на более поздних этапах. На начальных этапах каждый раз, когда ты встречаешь какого-то персонажа или NPC, информация о нём будет где-то храниться. В перспективе я хочу для каждого NPC генерировать расписание, привычки, историю. Это будет как бы песочница, и это реализуемо. Главное, что это сильно влияет на погружение.

События и Их Последствия

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

Генерация Мира

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

Заключение

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

22
10 комментариев

И зачем вот вы мне это прислали? Как-то обидно звучит.

1

Так он давно и готовит

Ахахаха ну я имел ввиду такого Гоблина