Decision Sim
Пошаговая симуляция: решения двигают показатели, в конце обязательный разбор механизма
Decision Sim
Развивает: принятие решений в системе с отложенной обратной связью. Атом исследовательский: верного прохождения у него нет, оценку он не ставит.
Автор задаёт стартовое состояние (несколько показателей), последовательность ходов
с вариантами, эффекты каждого варианта и обязательный разбор. Ученик делает ходы,
видит, как состояние поехало, и в конце читает, ПОЧЕМУ так вышло. Без debrief атом
не соберётся: симуляция без разбора это игрушка, а не учебный блок.
Правило хода и допущения модели показаны прямо в блоке: арифметика симуляции не прячется от ученика.
Демо
Использование
{{< atom type="decision-sim" >}}
title: "Заголовок симуляции"
intro: "Одна строка: что за система и чем вы управляете"
modelNote: "обязательно: что именно упрощено в модели"
resources:
- { id: fish, label: "Рыба в озере", start: 100, min: 0, max: 200, unit: "т", regrow: 0.25 }
- { id: money, label: "Касса", start: 10, min: 0, max: 200 }
rounds:
- prompt: "Что решаем на этом ходе"
options:
- text: "Вариант выбора"
hint: "короткая качественная подсказка, без цифр"
effects: { fish: -20, money: 8 }
note: "почему состояние поехало именно так"
- text: "Другой вариант"
effects: { fish: -70, money: 28 }
debrief:
text: "Объяснение механизма: почему одни решения дали такой результат, а другие другой"
lessons:
- "Вывод, который переносится на другие системы"
{{< /atom >}}
| Параметр | Тип | Описание |
|---|---|---|
title |
string | Обязателен |
intro |
string | Вводная строка, к ней применяется метка tag |
tag |
string | Метка достоверности: fact, src, debate |
modelNote |
string | Обязателен: допущения модели, показываются ученику |
resources |
array | {id, label, start, min, max, unit, regrow, color}, до четырёх штук |
rounds |
array | {prompt, options}, минимум два варианта в ходе |
options[] |
object | {text, hint, effects: {resourceId: delta}, note} |
debrief |
object | Обязателен: {text, lessons: [], tag} |
regrow это доля прироста за ход от остатка (0.25 значит плюс 25% к тому, что
осталось после вашего решения). Порядок внутри хода всегда один: сначала эффекты выбора,
потом прирост, потом ограничение по min и max. Это правило печатается в блоке словами,
чтобы ученик считал вместе с симуляцией, а не гадал.
Домен: visual (lazy-load).
Графика и деградация
Траектория показателей по ходам рисуется на PixiJS 8. Движок берётся с CDN-цепочки
(jsdelivr, unpkg, cdnjs) и грузится только когда блок доскроллен, а не на
загрузке страницы. Тикер останавливается, как только блок ушёл из вьюпорта.
Канвас это надстройка. Если движок не загрузился, соединение экономное или устройство слабое, блок работает целиком: те же ходы, те же кнопки, те же цифры показателей, история ходов и тот же разбор. Проверить это можно, заблокировав CDN в devtools: исчезнет только график.
prefers-reduced-motion: reduce гасит пульс текущей точки и переходы полос, состояние
показывается сразу.
Доступность
- Варианты хода это обычные кнопки, высота не меньше 44 пикселей, работают с клавиатуры.
- После хода фокус переезжает на заголовок следующего хода, изменение состояния
проговаривается через
role="status". - Канвас помечен
aria-hidden, весь текст живёт в DOM и находится через Ctrl+F.
Не берите этот атом, когда нужна проверка знания: единственно верного прохождения
у симуляции нет, в зачёт она идти не может. После прогона механизм проверяют соседи:
причину quiz или appraise, «что было бы, если» counterfactual, порядок шагов
order-items. Один выбор без развёртки во времени это scenario или predict.
Без JavaScript блок остаётся пустым, поэтому сам механизм должен быть описан текстом
урока рядом.