aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 19:56:34 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 19:56:34 +0300
commit9dcf6d456e0c2e06d45be001874ac72d7911703e (patch)
treed53358e84632fe132fad8298a54a7aeb48adb31b /docs
parent3592b46b0ffa31d1b09fd9503e87e00af616ab28 (diff)
downloadfparkan-9dcf6d456e0c2e06d45be001874ac72d7911703e.tar.xz
fparkan-9dcf6d456e0c2e06d45be001874ac72d7911703e.zip
feat(runtime): load mission script bundles
Diffstat (limited to 'docs')
-rw-r--r--docs/appendices/script-vm.md8
-rw-r--r--docs/tomes/04-world.md8
2 files changed, 16 insertions, 0 deletions
diff --git a/docs/appendices/script-vm.md b/docs/appendices/script-vm.md
index d5b1607..71e2793 100644
--- a/docs/appendices/script-vm.md
+++ b/docs/appendices/script-vm.md
@@ -73,6 +73,14 @@ raw seven slots, resolved variable values и вход/выход вызова `0
controlled mission. До него compatibility VM возвращает явный unsupported
result, а не «примерный» game command.
+На границе mission runtime выбранный TMA clan `first_resource` теперь
+материализуется как отдельный `MissionScriptBundle`: loader нормализует
+`<base>.scr`, декодирует его тем же bounded reader-ом и публикует immutable
+package вместе с clan provenance. Headless report выводит число таких packages
+и их named events. Это именно wiring входных данных, не VM execution: Init и
+остальные events пока не dispatch-ятся, а ошибка чтения сохраняет
+transactional rollback mission loader-а.
+
TMA properties остаются four raw `u32` words плюс имя, пока consumer/schema не
задаст тип (integer/float bits/ObjectId/enum/fixed-point/index). В том числе
сохраняются `NOT USED`; corpus подтверждает `Invulnerability`, life state,
diff --git a/docs/tomes/04-world.md b/docs/tomes/04-world.md
index 9961a49..f9c0e67 100644
--- a/docs/tomes/04-world.md
+++ b/docs/tomes/04-world.md
@@ -135,6 +135,14 @@ repeat relation_count:
TRF или пустой ресурс. Tags различаются между кланами и должны сохраняться как
raw-поля, пока их потребительская семантика не закрыта.
+Runtime уже использует первую строку как доказанный путь выбора пакета: к ней
+добавляется `.scr`, если расширение отсутствует, и полученный compiled package
+декодируется losslessly до регистрации мира. Для каждого клана сохраняются
+индекс, исходный base path, нормализованный `.scr` path и пакет событий. Это
+не запускает opcode и не приписывает ему gameplay-эффект, но делает сценарный
+input частью транзакции загрузки: missing/invalid package отменяет mission
+load до публикации частичного world state.
+
Mode `0` имеет отдельный count-driven layout:
```text