4

Делаем онлайн-книгу-игру вдвоём

Серия Thread Of The World

В детстве у меня была книга-игра. Вы наверняка знаете этот формат: читаешь, делаешь выбор, переходишь к нужной главе. И еще бои - кубики и пишешь в тетрадке кто кого как стукнул. «Лабиринт Колдуна» Юрия Пульвера, 1991 год. Я проходил её много раз.

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

Шаг 1: «Лабиринт Колдуна» как тест

Сперва хотел проверить стек: Go на бэкенде, Vue на фронте, Symfony для админки. Нужна была простая книга-игра для обкатки.

Выбор пал на «Лабиринт» — детская ностальгия плюс компактный материал (хотя, по правде говоря, там оказалось куча логики, которую сложно описать обычной структурой базы данных и обычными алгоритмами).

Что я сделал:

  • Движок для секций (читаешь текст → выбираешь → переходишь)

  • Боевая система с кубиками

  • Админка для заполнения контента

  • Простая регистрация с логином/паролем и авторизация

Запустил. Работает. Стек себя оправдал. Но сама реализация «Лабиринта» не очень интересна — это же чужая книга, там не разгуляешься.

Шаг 2: «Нить мира»

Как оно выглядит

Как оно выглядит

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

Мир называется Терралия. Если коротко: есть энергетическая ткань мира — Мага. Некоторые люди (ткачи) видят её нити и могут ими управлять. Есть культ, который использует других людей как «катушки» для починки разрывов в этой ткани. Один герой — медик с сердцем морского духа. Вторая — беглая ткачиха из культа. Третий — воин с мистической рукой.

Каждый герой проживает свою историю, а потом их пути пересекаются.

Дополнение от меня: можно было постараться просто издать книгу-фентези. Но авторов со своими мирами очень много. А попытаться сделать из нее, как раз книгу-игру в таком формате это уже другое.

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

Тут подробнее:

  • Кубики. По правде говоря, они мне не нравятся :) Да, это стандарт для подобных игр, но это случайность, как таковой тактики тут нет. Плюс, я посмотрел реализайции сущестующих игр-книг и бой выглядит так: выбрали чем бить - бросили кубик - резльтат. Ходит враг - бросил кубик - результат. Как по мне, не сильно захватывающая механика.

  • Статы для персонажей: Сила, Ловкость, Интеллект и Воля.

  • У нас уже есть три героя и у каждого своя фишка. Но требовалось сделать бои более тактическими, а не просто - бью, лечу и кастую защиту.

  • Каждый герой играет по-разному:


Анвар — танк.

* сагривает врагов на себя (значит в свой ход враг будет нападать именно на него),

* отталкивает (боевого поля нет, но есть текст, поэтому "отталкивать" — откинуть противника и он потратит ход на встать и подойти. И да, толкнуть можно только более слабых противников + рандом),

* бьёт мечом.

Кид — ткач.

* бьёт энергией,

* вешает щиты на союзников,

* связывает врагов - пропуск хода, но зависит от ловкости.

Хишоре — медик.

* лечит,

* кидает дротики,

* может крафтить предметы прямо в бою (аптечки и дротики или еще какой-нибудь самодельный "бабах")

  • У каждого персонажа своя «Воля» — это не HP, а эмоциональный ресурс. У Хишоре от стресса начинаются панические атаки (пропуск хода). У Кид — ярость, и она может ударить союзника. У Анвара — рука исчезает (слабее бьёт и меньше защита). Это делает бои не просто «бей-лечи», а заставляет учитывать состояние персонажа. Дополнительно у вех есть наывык "Концентрация" - если воля упала - восстановить часть. Если же воли много - получить бонус с критически ударам.

  • Враги не бьют кого попало. Есть система «агро»: хищники бьют слабейшего, культисты — лекаря, мстители — того, кто их ударил последним. Игроку нужно понимать, кого защищать.

  • NPC тоже могут участвовать в бою. У них аналогичная система агро. Плюс у персонажей игрока есть способность "попросить помощи". Если у NPC есть силы - он "сагрит" врага. И он, в свою очередь, также может попросить помощи у игрока.

Случайный бой для тестирования в который я добавил всех персонажей, NPC и двух врагов

Случайный бой для тестирования в который я добавил всех персонажей, NPC и двух врагов

Что уже работает

  1. Сам бекенд. Выводит текст глав, предлагает варианты для перехода по главам. И еще куча логики. И такм же **Боевая система.** - пошаговая, через WebSocket. С теми механиками что описаны выше.

  2. Фронтенд. Простенький "сайт", который через REST-API общается с бекендом в синхронных запросах и через WebSocket в бою.

  3. Админка. Вся история забивается через админку — секции, враги, NPC, переходы, лут.

Картинки

Еще нужно уточнить про картинки. У нас нет художника. Но я программист и люблю играть в игры. Поэтому у меня есть RTX4070TI Super и 16GB VRAM ))

На игровом ПК запущены локальная LLM модель и StableDiffusion с выбранной моделькой.

Есть отдельный проект, где описывается весь лор с помощью Markdown.

В админке сделаны интеграции с запущенной в локальной сети LLM и StableDiffusion для генерации картинок.

В отдельной секции админки пишем обычным человекопонятным языком что нам надо. Этот текст уходит в LLM, та берет необходимый контекст из папки с лором (только необходимый, так как весь не влезет в контекст бедной локальной LLM) и на основе лора (и предзаданного текста для нужной модели в StableDiffusion) формирует prompt для генерации картинки. Затем отдаёт его обратно в админку.

Админка получает промпт. И с выбранным пресетом (генерация картинки для вставки в текст главы или малнекьая картинка для инветаря) шлет его в StableDiffusion. Та уже создаёт картинку и отдаёт результат в админку.

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

Аналогично локальная LLM в режиме чата может давать подсказки по лору: предложить статы персонажу и подобное. Адекватный текст она создать не может. Вот её попытки:


"Начав свой путь, Анвар начал идти по дороге. Вскоре он услышал громыхание копыт — это был медведь, который вышел из леса и направился на запад. "

"Прежде чем покинуть пансионат, он позвонил соседу-старичку, чтобы узнать дорогу.

«Давай», — сказал старик, расправив пальто."

Генерация картинки

Генерация картинки

Общение с ИИ

Общение с ИИ


Что не так (честно)

Контента мало. Пока пишем три пролога (для каждого игрока).

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

Два человека. Бэк, фронт, админ, девопс — это я. Лор, текст и наполнение админки - жена.

Что дальше

Планы такие:

1. Заполнить контент для прологов полностью + бои в прологе → дать поиграть знакомым → собрать фидбек

2. Сбалансировать бои

3. Сделать социальный элемент — «Нити». Игроки оставляют записки после прохождения секций, видят следы друг друга. Не чат, а асинхронные послания (Dark Souls, Death Stranding)

4. Запустить для всех

Вопрос к вам

Собственно, мне интересно:

- Кто вообще играет в текстовые РПГ / книги-игры?

- Что важнее для вас в такой игре: история или механика (бои, выборы, прокачка)?

- Привычные книги-игры или интерактивный формат в браузере?

PS. Я бы завел телеграм канал и писал там о процессе, но я не умею. Жена завела сообщество в VK, там почти никого нет.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества