Skip to content

SpecEngine ​

Ограниченный JSON DSL — язык событийных правил старого data-engine. Исходники: backend/crates/adapters/src/spec_engine/. Новые GameRun-механики реализуются через GameMechanic; этот DSL не заменяет серверный расчёт поля.

МодульНазначение
spec.rsGameplaySpec: state, обработчики событий, миграции
interpreter.rsПрименение событий, внутренний emit, complete_when, сверка score
validate.rsПроверка payload и контракта спецификации
schemas/gameplay_spec.schema.jsonJSON Schema

Операции DSL v2: set, add, emit, grade_indexed, match_list_id. Условия: eq, neq, gt, gte, lt, lte, count_gte. complete_when приводит к session_completed. XP берётся из spec/config. Native builtins level_complete и booster_extra_moves сохраняют серверную сверку score; они не обычные декларативные операции.

Для старого data-шаблона нужен manifest/spec и соответствующий клиентский bundle. Новые игры создаются в games/runtime и games/<механика>, с Rust-модулем механики, а не в старых widget/templates. Перед реализацией — текущий PLAN.md.

bash
cd backend
cargo test -p playflow-adapters spec_engine

Internal & integration documentation