Мир как лог наблюдений

До наблюдения мира нет. Объясняет, почему состояние локации фиксируется только в момент, когда туда приходит персонаж, и чем это отличается от «живого мира» в духе Dwarf Fortress.

DM держит планы в голове или в личном scratchpad'е. В БД ничего не отражается до момента, когда игрок реально приходит в локацию. Единственное, что фиксируется — состояние локации в момент наблюдения. Append-only. Изменения только через события (correction).


Почему не «живой мир»

В Dwarf Fortress мир существует параллельно игроку: гоблины нападают, реки текут, осады случаются без участия пользователя. Это красиво — и колоссально сложно поддерживать.

Mother of Learning делает обоснованное упрощение: мир — это то, что видели персонажи. До прихода группы в локацию у неё нет состояния в БД. DM знает, что там должно быть; система не знает — и это нормально.

Три причины, почему так лучше:

  1. Масштаб west-marches. 30+ игроков, несколько DM, параллельные события в разных уголках мира одновременно. Поддерживать актуальное состояние каждой локации в реальном времени — задача уровня MMORPG, не ролевой кампании.

  2. DM как фильтр. DM — не исполнитель детерминированной симуляции, а рассказчик. Процедурные подсказки системы (таблицы встреч, генераторы лута) — предложения, которые DM принимает, отклоняет или меняет. Мир в БД — это то, что DM решил зафиксировать, а не то, что «рассчитала симуляция».

  3. Техническая простота. Append-only лог наблюдений — простая и надёжная модель. Нет конфликтов «система думает X, DM хочет Y».

DM scratchpad — не состояние мира

Личные заметки DM о планируемых событиях, непришедших NPC, секретах локаций — это не часть nodes / events. Они живут в инструментах DM: личный документ, хроника с пометкой dm_only, внешний инструмент. Когда событие случается с игроком, оно фиксируется как нода или транзакция. До этого — не существует в системе.

LocationSnapshot — целевая концепция

В HANDOFF-архитектуре фиксируется LocationSnapshot — снимок состояния локации в момент наблюдения: кто там был, что нашли, какие были условия. Дальнейшие изменения — только через события correction.

В проде сейчас: ноды с node_type='location' — это актуальный snapshot. Если DM правит локацию, запись обновляется напрямую (hard update). Журнала изменений нет — пока не внедрён soft-delete и dm_audit_log. → roadmap/audit-log-and-safety.md

Процедурные подсказки vs факты мира

Система может предложить содержимое новой локации — на основании биома, глубины данжа, активных таблиц встреч. Это всегда предложение. DM принимает решение о фиксации: до принятия ничего не попадает в БД.

Это tool-first принцип в действии. → tool-first.md


event-sourcing.md — как лог событий хранит историю изменений мира. → persistence-scope.md — что из этого лога переживает сброс петли.