feat(runtime): register mission objects with clan distributors
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s

This commit is contained in:
Valentin Popov committed 2026-10-20 08:44:10 +04:00
1 parent ecc46ed177
commit caef8f8e6c
5 files changed
+318 -18

No files matched your search

+20
View File
@@ -215,6 +215,26 @@ MissionObjectDraft {
`fparkan-world` не подтверждено. Смещения, условия версий и контрольные суммы исследованных
сборок приведены в [справочнике TMA](../reference/tma.md).
Это слово влияет не только на сценарий. Успешно загруженный пакет клана
публикует его `SuperAI` в таблице `GetSuperAI`; World3D передаёт первый DWORD
дескриптора создания через Behavior, где он выбирает тот же номер таблицы.
Поэтому при создании полного мира можно отнести объект к конкретному клановому
диспетчеру, если его номер лежит в диапазоне `0..63` и сценарий этого клана
загружен. Rust хранит такую связь отдельно от владельца объекта:
```text
TMA raw_after_resource = 1
-> GetSuperAI[1] доступен после загрузки script bundle клана 1
-> запись объекта относится к distributor клана 1
```
Для объектов с Unit DAT используется старший бит DWORD по смещению `+4` от
начала DAT как общий признак, по которому оригинальный World3D создаёт
registration key для Behavior. Это второе 32-битное слово заголовка. Из него
нельзя вывести сторону или тип владельца. В AutoDemo это связывает поля TMA,
class word из Unit DAT и выбранный клановый AI, не меняя `OwnerId` и хеш
игрового состояния.
Свойства хранятся как ordered property bag:
```text