← Капитанский журнал

Игровая логика как JSON — GraphDoc DSL и визуальное программирование через ActionFlow

Почему мы описываем настольные игры как графы состояний в JSON — и как AI научился генерировать их из обычного текста.

Вот вопрос, который звучит просто, но таковым не является: как позволить кому-то — человеку или AI — описать настольную игру, не написав ни строчки кода?

Наш ответ — GraphDoc: JSON-документ, описывающий игру как граф состояний. Узлы — это состояния игры. Переходы живут внутри node.data, а не в рёбрах. Внутри каждого узла ActionFlow определяет, что происходит при входе, какие действия доступны и куда можно перейти дальше. Это визуальное программирование, сериализованное в JSON.

Конвейер прост: AI читает текстовое описание (“хочу карточную игру типа Войны”), генерирует GraphDoc, редактор визуализирует его через ReactFlow, а движок исполняет через GameLoader → NewGameEngine. Валидатор проверяет структуру перед запуском.

Почему JSON? Потому что это лингва-франка между нашим AI-сервисом, редактором и движком. AI генерирует JSON. Редактор читает JSON. Движок исполняет JSON. Никаких слоёв трансляции, никаких рассогласований.

ActionFlow заслуживает отдельного внимания. Это «код» внутри каждого узла — граф вызовов хэндлеров, соединённых потоком выполнения. Представьте визуальный скриптовый язык, где каждый шаг — хэндлер плагина: взять карту, проверить условие, изменить ресурс, испустить событие. AI не пишет JavaScript — он собирает эти потоки из доступных хэндлеров.

Такой дизайн означает, что AI никогда не касается сырого кода. Он работает на уровне композиции — выбирает правильные хэндлеры, соединяет их в правильном порядке, задаёт правильные параметры. Это гораздо более ограниченная (а значит, более надёжная) задача, чем свободное программирование.

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