diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-20 07:44:10 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-20 07:44:10 +0300 |
| commit | caef8f8e6c0ae81b46fcab39cd4f2b74e1b29235 (patch) | |
| tree | 89a28698cca49bebc7dfb5865248f76122d9fecc /docs/tomes/04-world.md | |
| parent | ecc46ed17772816d6f0de565a0a1605d0299a1dd (diff) | |
| download | fparkan-caef8f8e6c0ae81b46fcab39cd4f2b74e1b29235.tar.xz fparkan-caef8f8e6c0ae81b46fcab39cd4f2b74e1b29235.zip | |
feat(runtime): register mission objects with clan distributors
Diffstat (limited to 'docs/tomes/04-world.md')
| -rw-r--r-- | docs/tomes/04-world.md | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/tomes/04-world.md b/docs/tomes/04-world.md index dcd53b2..1123bc7 100644 --- a/docs/tomes/04-world.md +++ b/docs/tomes/04-world.md @@ -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 |
