Серия «Aetheria»

«Я замахиваюсь в пятый раз»: как я уговаривал нейросеть разбить чан с маслом в собственной игре⁠⁠

Серия Aetheria
На сей раз мне захотелось раскрасить текст картинками, поэтому я буду подставлять нейро-картинки и иногда мемы чтобы.. Выглядело интереснее. Надеюсь вам понравится X)

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

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

Сижу ночью, тестирую свежую сборку Aetheria. Мой персонаж стоит на складе, рядом бочка с маслом. Мне нужно проверить, как движок отработает физику разлива и горения.

Пишу: «Бью топором по чану с маслом».

Что должен сделать нормальный скрипт? Вызвать item.damage, расколоть объект, вылить жидкость на пол.

Что делает LLM? Она включает режим великого писателя:
«Ты крепче перехватываешь топорище. Холодный металл тускло блестит в полумраке склада, а в воздухе стоит тяжелый запах старой древесины и смолы. Ты чувствуешь, как напрягаются мышцы перед ударом...»

И всё. Ни вызова функции в коде, ни разбитого чана. Текст есть, действия нет.

Пишу второй раз: «Я не чувствую мышцы, я бью по бочке со всей дури, прямо сейчас».
Модель: «Лезвие со свистом рассекает воздух и с глухим стуком врубается в толстые дубовые клепки! Щепки летят в стороны, чан содрогается, но дерево держится крепко. Ты ощущаешь отдачу в ладонях...»

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

На четвертый ход я уже пишу капсом: «ПРОБЕЙ ЕГО НАХРЕН».

И только когда в системный промпт прилетел жесткий пинок по рукам («сначала вызывай инструмент в движке, а потом пиши свои поэмы»), модель наконец соизволила отправить честный JSON-запрос на урон. Чан треснул, масло залило пол, физический движок с радостью всё это поджег.

Это главная болезнь текстовых нейроигр. Модели патологически лень дергать код, ей проще родить три абзаца художественного текста ни о чем. Приходится буквально вбивать ей в голову правило: если игрок бьет, ты сначала обязана изменить состояние мира в движке, и только потом открывать рот.

В общем, после тонны таких правок, споров с ИИ и борьбы с бесконечными пожарами, мы наконец упаковали текущую версию в играбельный билд (v0.1.7-alpha) и выложили на itch:

https://gardenxas.itch.io/aetheria-rpg

Переоформил я недавно свой профиль. Ой, как же мне он нравится XD

Переоформил я недавно свой профиль. Ой, как же мне он нравится XD

Кому интересно пощупать, как это играется вживую — заходите, качайте. Предупреждаю сразу: игра работает от внешних API-моделей (лучше всего скармливать ей DeepSeek или Qwen), так что в настройках надо будет вбить свой ключ.

Если кто-то тоже пытался заставить LLM стабильно вызывать функции без пустой болтовни — делитесь в комментах, какими костылями лечили.

Показать полностью 4
1

Когда физический движок поверил слову: как мы тушили бесконечный пожар в текстовой RPG⁠⁠

Серия Aetheria

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

На днях один из наших тестеров (JimTheDog) решил проверить, как игра реагирует на создание сложных объектов. Зашел в сарай и попросил Главного ГМа поставить там нормальную кузницу: горн, наковальню, инструменты.

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

Игрок пишет ГМу: потуши, оно само горит. ГМ отвечает, что все потушено и починено. Игрок делает следующий ход, и комната снова вся залита маслом и полыхает. Каждая «починка» жила ровно один ход, после чего все загоралось заново.

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

Первая проблема была в том, как движок собирал предмет. В коде стояла проверка, которая сначала парсила текстовую строчку названия, а уже потом смотрела на указанный материал. Горн был честно прописан как металл, но в названии где-то проскочило слово «масло». В итоге движок решил, что перед ним не железная печь, а промасленная тряпка, и выставил объекту горючесть на максимум и пропитку маслом на 80 единиц.

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

Починка от ГМа тоже оказалась фикцией. Нейросеть вместо того, чтобы пересобрать поврежденный объект с нуля, просто накатывала поверх старого состояния строку «потушено». При этом модель решила, что раз это горн, то у него должна быть рабочая температура, и от балды вписала туда 1000 градусов. Движок это число честно записал в параметры, и при любом взаимодействии с горном персонаж получал дикий термический урон.

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

В итоге пришлось полностью пересматривать то, как код работает со свойствами:

1. Заявленный тип материала теперь всегда главнее текста в названии.

2. Масляные пятна больше не делают из каждого предмета бесконечный фонтан масла.

3. Любой ремонт принудительно пересобирает объект из дефолтного состояния его материала, а все параметры вроде температуры и влажности зажаты в строгие рамки.

4. Добавили команду полной зачистки комнаты от грязи, огня и кислот на случай таких аварий.

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

Показать полностью
3

Почему нейросети в играх до сих пор выдают графоманию вместо нормального геймплея⁠⁠

Серия Aetheria

Если вы хоть раз пробовали текстовые ролевки на нейросетях, вы наверняка ловили себя на мысли, что через полчаса это становится невыносимо скучно.

Введите описание к изображению (не обязательно)

Введите описание к изображению (не обязательно)

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

Я сам долго ковырял эту тему (кто-то может помнить мои старые посты про Хроники Метерии), и в какой-то момент понял главную проблему. Нейросеть нельзя просить «вести игру». Она по своей природе пытается написать рассказ, а игра — это не рассказ, это система правил и жестких ограничений.

Когда я сел переделывать все с нуля в новом проекте (Aetheria), пришлось ломать привычный подход сразу в нескольких местах.

Вот вам пару скринов чтоб было на что посмотреть.

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

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

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

Ну и ориентация в пространстве. Вслепую по тексту бегать тяжело, поэтому сейчас я в качестве эксперимента прикрутил черновую карту местности. Она пока совсем сырая и тестовая (еще сам не уверен, приживется ли в итоге), но идея в том, чтобы можно было кликнуть по объекту и выбрать базовые действия вроде «осмотреть» или «поговорить», не расписывая каждый шаг руками.

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

Если кому-то интересно, как это ощущается на практике, я как раз собрал открытую тестовую сборку v0.1.7:

https://github.com/ai-pop/aetheria-rpg/releases/tag/v0.1.7-a...

Сразу честно скажу про запуск и модели: лучше всего игра идет на DeepSeek и Qwen 3.8 Flash, на них логика держится крепко и диалоги адекватные. Но чтобы не заставлять людей сразу покупать ключи, я собрал утилитку Мостик:

https://github.com/ai-pop/mostik/releases/latest

Она цепляет бесплатные модели OpenCode. Будем честны, на бесплатных моделях сессия будет в разы слабее, с затупами и кривоватым нарративом, но Мостик дает главное — возможность вообще бесплатно запустить игру и побегать, не отдавая ни копейки.

Интересно послушать, кто еще пробовал делать или играть в подобные системы: как по вашему, у чисто текстовых нейроигр вообще есть будущее, или без нормальной графики это навсегда останется нишевой забавой для гиков?

Показать полностью 7
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

Недвижимость и ремонт

Теги

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

Сообщества