Aetheria
3 поста
На сей раз мне захотелось раскрасить текст картинками, поэтому я буду подставлять нейро-картинки и иногда мемы чтобы.. Выглядело интереснее. Надеюсь вам понравится X)
У любого, кто пытается прикрутить нейросеть к реальному коду, рано или поздно сгорает задница от одной и той же привычки моделей: они обожают трепаться вместо того, чтобы выполнять команды.
Сижу ночью, тестирую свежую сборку Aetheria. Мой персонаж стоит на складе, рядом бочка с маслом. Мне нужно проверить, как движок отработает физику разлива и горения.
Пишу: «Бью топором по чану с маслом».
Что должен сделать нормальный скрипт? Вызвать item.damage, расколоть объект, вылить жидкость на пол.
Что делает LLM? Она включает режим великого писателя:
«Ты крепче перехватываешь топорище. Холодный металл тускло блестит в полумраке склада, а в воздухе стоит тяжелый запах старой древесины и смолы. Ты чувствуешь, как напрягаются мышцы перед ударом...»
И всё. Ни вызова функции в коде, ни разбитого чана. Текст есть, действия нет.
Пишу второй раз: «Я не чувствую мышцы, я бью по бочке со всей дури, прямо сейчас».
Модель: «Лезвие со свистом рассекает воздух и с глухим стуком врубается в толстые дубовые клепки! Щепки летят в стороны, чан содрогается, но дерево держится крепко. Ты ощущаешь отдачу в ладонях...»
Смотрю в дебаг-панель движка — здоровье чана 100/100, масло внутри, флаг удара не вызывался. Нейросеть просто сочинила красивую анимацию удара на словах, забыв дернуть триггер в коде. В ее воображении мы уже полчаса рубим этот несчастный чан, а в памяти движка мы просто стоим столбом посреди комнаты.
На четвертый ход я уже пишу капсом: «ПРОБЕЙ ЕГО НАХРЕН».
И только когда в системный промпт прилетел жесткий пинок по рукам («сначала вызывай инструмент в движке, а потом пиши свои поэмы»), модель наконец соизволила отправить честный JSON-запрос на урон. Чан треснул, масло залило пол, физический движок с радостью всё это поджег.
Это главная болезнь текстовых нейроигр. Модели патологически лень дергать код, ей проще родить три абзаца художественного текста ни о чем. Приходится буквально вбивать ей в голову правило: если игрок бьет, ты сначала обязана изменить состояние мира в движке, и только потом открывать рот.
В общем, после тонны таких правок, споров с ИИ и борьбы с бесконечными пожарами, мы наконец упаковали текущую версию в играбельный билд (v0.1.7-alpha) и выложили на itch:
Кому интересно пощупать, как это играется вживую — заходите, качайте. Предупреждаю сразу: игра работает от внешних API-моделей (лучше всего скармливать ей DeepSeek или Qwen), так что в настройках надо будет вбить свой ключ.
Если кто-то тоже пытался заставить LLM стабильно вызывать функции без пустой болтовни — делитесь в комментах, какими костылями лечили.
Когда делаешь игру с честной симуляцией физики, рано или поздно наступает момент, когда мир начинает жить своей жизнью, причем самым идиотским образом.
На днях один из наших тестеров (JimTheDog) решил проверить, как игра реагирует на создание сложных объектов. Зашел в сарай и попросил Главного ГМа поставить там нормальную кузницу: горн, наковальню, инструменты.
ГМ все создал. На следующем ходу горн внезапно загорается сам по себе. Еще через ход огонь бодро перекидывается на деревянный стол, бочки и ползет в соседнюю комнату.
Игрок пишет ГМу: потуши, оно само горит. ГМ отвечает, что все потушено и починено. Игрок делает следующий ход, и комната снова вся залита маслом и полыхает. Каждая «починка» жила ровно один ход, после чего все загоралось заново.
Стали разбираться в логах, и там вскрылась прекрасная цепочка того, как не стыкуются логика нейросети и строгий программный код.
Первая проблема была в том, как движок собирал предмет. В коде стояла проверка, которая сначала парсила текстовую строчку названия, а уже потом смотрела на указанный материал. Горн был честно прописан как металл, но в названии где-то проскочило слово «масло». В итоге движок решил, что перед ним не железная печь, а промасленная тряпка, и выставил объекту горючесть на максимум и пропитку маслом на 80 единиц.
Дальше подключилась сама физика распространения жидкостей. По задумке масло должно было впитываться при контакте. Но из-за порога срабатывания любая испачканная вещь сама становилась новым источником масла. Горн мазал пол, пол мазал бочки, бочки пачкали стены, а стены разносили масло в соседнюю комнату. Получилась цепная реакция, которую невозможно было остановить.
Починка от ГМа тоже оказалась фикцией. Нейросеть вместо того, чтобы пересобрать поврежденный объект с нуля, просто накатывала поверх старого состояния строку «потушено». При этом модель решила, что раз это горн, то у него должна быть рабочая температура, и от балды вписала туда 1000 градусов. Движок это число честно записал в параметры, и при любом взаимодействии с горном персонаж получал дикий термический урон.
И самое веселое выяснилось, когда мы полезли глубже в проверки. Слой валидации ходов, который должен был бить модель по рукам за такие фокусы, вообще молча падал на каждом вызове из-за старой ошибки в коде. Ошибка тихо падала в лог, а само действие пропускалось дальше. То есть игра выглядела так, будто все проверки пройдены, хотя на самом деле никто никого не проверял.
В итоге пришлось полностью пересматривать то, как код работает со свойствами:
1. Заявленный тип материала теперь всегда главнее текста в названии.
2. Масляные пятна больше не делают из каждого предмета бесконечный фонтан масла.
3. Любой ремонт принудительно пересобирает объект из дефолтного состояния его материала, а все параметры вроде температуры и влажности зажаты в строгие рамки.
4. Добавили команду полной зачистки комнаты от грязи, огня и кислот на случай таких аварий.
В геймдеве это обычное дело, но когда физика завязана на интерпретацию нейросетью, подобные баги выглядят особенно сюрреалистично. Кто делает свои симуляции, часто ловите такие самоподдерживающиеся циклы из-за одной опечатки?
Если вы хоть раз пробовали текстовые ролевки на нейросетях, вы наверняка ловили себя на мысли, что через полчаса это становится невыносимо скучно.
Вроде бы технология крутая, но на практике происходит одно и то же: ты пишешь одно простое действие, а модель вываливает три страницы пафосного текста, где уже за тебя решила, куда ты пошел, что почувствовал и как победил дракона. Ты ей пишешь: «Кидаю в стражника тухлую репу», а она отвечает: «Стражник ощутил в этом жесте дыхание древней судьбы и заплакал от вашего величия». А еще через десять ходов она начисто забывает, где вы вообще находитесь, и радостно соглашается на любой бред игрока.
Я сам долго ковырял эту тему (кто-то может помнить мои старые посты про Хроники Метерии), и в какой-то момент понял главную проблему. Нейросеть нельзя просить «вести игру». Она по своей природе пытается написать рассказ, а игра — это не рассказ, это система правил и жестких ограничений.
Когда я сел переделывать все с нуля в новом проекте (Aetheria), пришлось ломать привычный подход сразу в нескольких местах.



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



В-третьих, неписи. Обычный чат-бот всегда говорит как услужливый продавец-консультант. Чтобы заставить его вести себя нормально, пришлось полностью убирать из контекста системный мусор и заставлять модель смотреть на мир от первого лица конкретного жителя деревни, у которого вообще-то свой день идет, и ты ему со своими расспросами не всегда упал.
Ну и ориентация в пространстве. Вслепую по тексту бегать тяжело, поэтому сейчас я в качестве эксперимента прикрутил черновую карту местности. Она пока совсем сырая и тестовая (еще сам не уверен, приживется ли в итоге), но идея в том, чтобы можно было кликнуть по объекту и выбрать базовые действия вроде «осмотреть» или «поговорить», не расписывая каждый шаг руками.
В итоге получается странная, но очень залипательная штука: нейронка просто крутит логику персонажей и событий, а сама игра живет по строгим законам старых олдскульных RPG.
Если кому-то интересно, как это ощущается на практике, я как раз собрал открытую тестовую сборку v0.1.7:
Сразу честно скажу про запуск и модели: лучше всего игра идет на DeepSeek и Qwen 3.8 Flash, на них логика держится крепко и диалоги адекватные. Но чтобы не заставлять людей сразу покупать ключи, я собрал утилитку Мостик:
Она цепляет бесплатные модели OpenCode. Будем честны, на бесплатных моделях сессия будет в разы слабее, с затупами и кривоватым нарративом, но Мостик дает главное — возможность вообще бесплатно запустить игру и побегать, не отдавая ни копейки.
Интересно послушать, кто еще пробовал делать или играть в подобные системы: как по вашему, у чисто текстовых нейроигр вообще есть будущее, или без нормальной графики это навсегда останется нишевой забавой для гиков?
Это больше системное обновление, но оно все еще такое же крупное.
В этой версии было переработано многое, исправленно многое и даже немного добавленно







К основному
Меню настроек было обновлено. Я добавил побольше настроек, я разделил настройки на вкладки сделав меню настроек как удобнее так и красивее;
Разделение “Счетовод - Поэт” теперь не обязательно, вы можете переключится на единого ГМ или же на “Счетовод - Поэт”
Была добавленна оффлайн озвучка через Piper
Была добавленна потдержка Режима размышления (Thinking / Reasoning) для ГМа
Была добавленна потдержка системы “Prompt Caching”
Был добавлен режим NSFW (Криво работает, не рекомендуется к игре. Только для тестирования)
Была добавленна стата “Стойкость”. Она определяет шанс на получение травм при критическом состоянии здоровья (меньше 10 едениц здоровья). Чем больше показатель “Стойкость” у вас тем меньше шанс на травму
Обновленна карта, теперь у каждой эпохи свой набор стартовых меток
Обновленны промпты. (Это больше к системе и механикам, но так же и лору. Обьяснять слишком долго)
Сильно улучшена детализация лора (а вот это не расскажу. Иследуйте мир)
Переработана система архивации памяти
Немного обновлен и улучшен внешний вид кнопок
На этом в принципе все, мне кажется нету смысла перечислять исправленные баги. Но да они были. Например исправлен баг архивации памяти ГМа
Скачивайте, играйте, пишите свое мнение насчет игры. Спасибо за внимание :З
Привет. Этот пост написан специально для сообщества «Инди игры».
Я хочу познакомить людей из этого сообщества со своей игрой и, если можно так выразиться, набрать аудиторию. Но не в плане рекламы — по крайней мере, я не задумывал этот пост как рекламный.
Что такое Хроники Метерии?
Это текстовая RPG с интеграцией нейросетей, которые берут на себя роль Гейм Мастера (ГМ). Типо как в Dungeons & Dragons, но механики у меня работают иначе.
Стоит затронуть немаловажную деталь, которая отличает Хроники Метерии от других «игр» с нейросетями в этом жанре. В Хрониках Метерии ГМ не просто пишет текст (нарратив), он еще и активно управляет механиками игры. То есть, когда ГМ пишет в повествовании, что ваш персонаж поднимает условный камень, он не просто описывает действие, а использует команду на добавление предмета в ваш инвентарь.
При этом предмет в инвентаре — это не просто текст. Это реальный объект, который при настройке от ГМа влияет на персонажа. Возьмем ситуацию: во время повествования вы подбираете эфирный кристалл (эфир в мире Метеры это что-то типо маны), но при изучении оказывается, что этот кристалл наносит персонажу вред. В такой ситуации ГМ должен будет добавить не просто предмет с описанием, но и дать ему соответствующий эффект.
Эффекты в игре работают по принципу скриптов. Только это не реальный скрипт на js, а собранные из спецсимволов блоки. ГМ может с помощью них взаимодействовать с персонажем игрока — например, каждый ход функция эффекта будет отнимать у игрока 5 ед. HP. Как мне кажется, такие системы — это важный аспект, который отличает обычный чат с нейронкой от реальной игры.
Это не все возможности, но если я буду подробно расписывать каждую механику, пост растянется слишком сильно.
Список систем и механик, которые уже есть в игре:
1. Ядро игрового движка (AI Engine)
Двухстадийная обработка хода (Счетовод — Поэт): Каждый запрос делится на логический просчет (генерация JSON-команд) и нарративное описание. Это исключает галлюцинации ИИ в плане статов и предметов.
Система Snapshot (Слепок состояния): Полное состояние игрока (инвентарь, статы, квесты, надетые вещи) передается ИИ в каждом запросе в виде чистого JSON.
Механика Долгосрочной Памяти (Memory Summarization): Каждые 30 ходов игра принудительно делает «выжимку» событий и сохраняет её в поле gmNotes, очищая историю чата. Это позволяет играть бесконечно.
Мульти-провайдерность: Поддержка Google Gemini, OpenRouter, LLMost и локальных моделей через LM Studio.
2. Ролевая система (RPG Core)
Характеристики: Пять основных атрибутов (STR, DEX, INT, CON, CHA), влияющих на проверки и производные статы.
Динамические показатели: HP (зависит от CON), Мана (для магов, зависит от INT), Золото, Опыт и Уровни.
Nexus (Система Констант): База данных флагов (титулы, фракции, важные сюжетные выборы). Константы подмешиваются в память ИИ на каждом ходу.
Репутация: Система фракционной репутации (от -100 до +100) с визуальной шкалой.
3. Инвентарь и Экипировка (V2.0)
Кукла персонажа: 9 слотов (Голова, Лицо, Туловище, Ноги, Ступни, Плечи, Шея, Левая и Правая руки).
Drag-and-Drop экипировка: Можно перетаскивать предметы из инвентаря на слоты тела.
Система ограничений: Параметр restrictedSlots и баффы, которые пересчитываются при надевании.
Фильтрация инвентаря: Сортировка по категориям (Оружие, Броня, Зелья, Квесты).
4. Карта и Навигация
Визуальная карта (Canvas): Интерактивное полотно с зумом и панорамированием.
Автоматические иконки: Система парсит названия локаций и сама ставит значки (город, пещера, горы).
Механика Путешествия: Перемещение занимает время. ИИ описывает дорогу и события в пути до смены локации.
5. Боевая система и Проверки
Target Number System: Проверки по правилам d20 + модификатор стата против сложности (DC), установленной ИИ.
Quick Tags: Кнопки для бросков (Атака, Защита, Атрибуты). Результат отображается в UI в виде плашки.
Система Умений: Активные и пассивные навыки с параметрами урона, стоимости и перезарядки.
6. Окружение (Environment)
Панель сущностей: Список всех NPC и существ, которых вы видите в данный момент.
Интерактивные подсказки: При наведении на сущность показывается описание, HP и характеристики.
7. Статус-эффекты
Периодическая обработка: Эффекты обрабатываются в начале каждого хода.
Автоматические триггеры: Поддержка логики on_apply, on_turn_start, on_remove.
8. Технические механики
Electron API: Работа с файловой системой напрямую (сейвы в JSON).
Автосохранение: Каждые 5 минут.
Больше об игре смотрите в моем профиле. Я виду серию постов где делюсь новостями об игре.
Ссылку на игру можете найти в серии постов или в описании моего профиля
Спасибо за внимание. Хочу еще раз отметить что это НЕ рекламный пост! Я просто делюсь своим проектом
Привет
Это уже 11 пост в серию Хроник Метерии
Итак в этом посте я расскажу об обновлении 1.1.4 моей текстовой RPG игры Хроники Метерии
Что добавлено:
Опять ничего XD
Скорее всего в близжайщее время прям крупных обновлений ждать не стоит, веть чем больше механик в игре тем больше промпт, а чем больше промпт тем дороже обходится ваша сессия.. Страшно представить ситуацию в которой чтобы поиграть в Хроники Метерии прийдется потратить на один ход более 20 рублей. Это много в контексте Хроник Метерии
Что изменено:
Изменил я пользовательский интерфейс. Раньше он был очень скучным и сухим. Теперь я его немного оживил.
Я добавил: музыку в главное меню, движущийся за мышью фон (динамический фон), добавил шрифт, добавил музыкальное сопровождение при взаимодействии с UI, улучшил интерфейс в самом игровом окне, добавил визуальный эффект пепла (просто для красоты)
Скриншоты:




Чтобы поиграть перейдите по ссылке и скачайте игру следуя инструкции
Если вы новичок или просто не разбираетесь в API ключах советую перейти во вкладку "Помощь" в главном меню игры
Пожалуйста делитесь своими впечатлениями в комментариях на странице Хроник Метерии или же в комментариях под этим постом
Всем привет! Поздравьте меня, я наконец-таки достроил версию 1.1.3.
Из новых механик:
Ничего. XD
Из изменений:
Я полностью пересмотрел систему формирования и отправки запросов. Раньше я использовал один запрос и для системных задач, и для сюжетного повествования. Это сильно нагружало нейронку. Представьте, что вам говорят: «Одновременно вари пачку пельменей, топи печь, руби дрова и готовь баню».
Теперь мой ГМ (Гейм-мастер, он же ИИ) разделился на две «личности». Ему больше не нужно в одном сообщении и прописывать системные команды (вроде добавления 10 кристаллов эфира в инвентарь), и художественно описывать, как красиво они светятся в вашем кармане.
Как это работает теперь:
Сначала запрос с промптом и действием игрока отправляется «Счетоводу». Это ответвление ГМа, которое занимается только расчетами хода и самими командами. Он формирует логику и оставляет подсказки для второго модуля.
Затем подключается «Писатель». Он занимается исключительно нарративом. Команды он писать не умеет, зато создает текст, основываясь на ходе игрока, лоре мира и данных от «Счетовода».
В чем главный плюс?
По задумке, игра теперь не должна выдавать бред, который невозможно реализовать на уровне механики. Кажется, что вещь банальная, но при работе с нейросетями это довольно полезная и сложная штука. Мне потребовалось много времени, чтобы мой мозг наконец допёр, как реализовать это правильно.
Но есть нюанс...
Так как за один ход теперь отправляется сразу два запроса, игра стала «поедать» больше токенов.
В общем, на мой взгляд, это важное нововведение, которое призвано улучшить стабильность игры, хоть и пришлось пожертвовать «кошельком».
Ссылка на игру: ссылка
Всем привет.
Выпускаю обновление 1.1.0. В основном оно техническое, направленное на исправление ошибок и улучшение внутренней логики игры.
Список основных изменений:
Обновлен сервер. Переписал серверную часть на Python и перенес на другой хостинг для большей стабильности и контроля.
Добавлена поддержка новых AI-провайдеров. В настройках теперь можно выбрать OpenRouter и LLMost в дополнение к Gemini.
Переделана система экипировки. Теперь предметы из инвентаря можно перетаскивать на слоты персонажа. Также были даны более строгие инструкции AI, чтобы он всегда выдавал и экипировал полный комплект стартовой брони.
Улучшены стартовые промпты. Добавлена логика "пролога", чтобы начало игры не было таким внезапным, а имело краткую предысторию прибытия персонажа в стартовую локацию.
Переработаны статус-эффекты. Все эффекты вынесены в отдельный JSON-файл. Это упрощает их добавление и редактирование в будущем.
Исправлены баги:
OOC-окно: Теперь клик по плашке "OOC" в диалоге GM корректно отображает всплывающее окно с текстом.
Карта: Исправлена проблема, когда новые метки могли появляться поверх уже существующих.
Улучшена обработка ответов от AI, чтобы игра была более устойчива к ошибкам форматирования JSON.
Вот такое обновление. В основном работа над ошибками и подготовка базы для будущих нововведений.
Спасибо, что играете.
