fix(runtime): model distributor share normalization
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
5 files changed
+516
-42
No files matched your search
+20
-10
@@ -207,7 +207,9 @@ SuperAI для записей кланов, затем обновляет Behavi
|
||||
исполнен на исходной DLL с искусственными объектами. Rust пока не вызывает
|
||||
регулярный шаг: игровой мир ещё не предоставляет нужные ресурсные интерфейсы.
|
||||
При полной загрузке Rust уже восстанавливает членство объектов в клановых
|
||||
списках Behavior, но сами записи распределителя и их доли пока не моделирует.
|
||||
списках Behavior и задаёт их начальные доли. Остальные слова записи хранятся
|
||||
сырыми: семантика только первого из пяти слов хвоста установлена для
|
||||
нормализации.
|
||||
Runtime также не подменяет очередь оригинала: вызывающая сторона сама передаёт
|
||||
время, а локальный генератор Rust пока учитывает только случайные числа
|
||||
восстановленного стартового шага.
|
||||
@@ -241,10 +243,17 @@ Rust-тест повторно читает лицензированную ми
|
||||
TMA-записями и проверяет реальные `ObjectHandle`, но помечен `#[ignore]`, чтобы
|
||||
не требовать оригинальных ресурсов от остальных разработчиков.
|
||||
|
||||
Это пока только перечень участников. Оригинальный `Behavior.dll!Add` создаёт для
|
||||
каждого участника запись размером `0x1c` с долей `1 / count`, после чего
|
||||
нормирует прежние доли. Rust ещё не хранит эти поля и не исполняет их регулярный
|
||||
обмен ресурсами. Поля не выводятся из TMA-соседнего слова или `OwnerId`.
|
||||
Список распределителя хранит не только участников, но и долю каждого. При
|
||||
добавлении двух объектов оба получают по половине общего веса. Если добавить
|
||||
третий, движок оставляет долю новой записи около одной трети, а оставшийся вес
|
||||
делит между прежними изменяемыми записями. Помеченная запись сохраняет свой вес,
|
||||
как закреплённая часть общего набора. Повторное добавление того же объекта не
|
||||
создаёт вторую строку и оставляет остальные слова записи нетронутыми.
|
||||
|
||||
Rust хранит этот небольшой начальный список с долями. Он не смешивает selector
|
||||
из TMA, владельца мирового объекта и внутренний ключ Behavior: связь в Rust
|
||||
опирается на уже созданный `ObjectHandle`. Регулярный обмен ресурсами пока
|
||||
остаётся отдельным этапом, потому что для него нужны интерфейсы игровых объектов.
|
||||
|
||||
### Регулярная передача ресурсов
|
||||
|
||||
@@ -263,11 +272,12 @@ Resource Distributor работает со списком зарегистрир
|
||||
исходной `Behavior.dll`, но объекты и ответы интерфейсов заданы тестом; это ещё
|
||||
не воспроизведение реальной миссии.
|
||||
|
||||
Членство списка связано с реальным путём регистрации, но выполнение этой
|
||||
миссии не сравнивалось с тем, как исходная DLL заполняет поля записи `0x1c` и
|
||||
нормирует доли. Rust пока не хранит эти поля, а игровому миру ещё не хватает
|
||||
ресурсных интерфейсов ArealMap для регулярного шага. Открытые вопросы и границы
|
||||
проверки приведены в [границах знания](../appendices/knowledge-boundaries.md).
|
||||
Для правила долей есть отдельная проверка исходной `Behavior.dll` на синтетических
|
||||
записях при игровом x87 control word `0x007f`: проверены добавление, повторный
|
||||
ключ, закреплённая запись, нулевая сумма и округление. Это позволяет Rust
|
||||
сохранять начальный список, но пока не подтверждает веса реальных объектов в
|
||||
живой миссии. Для регулярного шага по-прежнему не хватает интерфейсов ArealMap.
|
||||
Остальные ограничения собраны в [границах знания](../appendices/knowledge-boundaries.md).
|
||||
|
||||
Первый часто встречающийся table entry с side effect — `Handler(2)` (176
|
||||
records в corpus). Он берёт active instruction, разрешает семь slots через
|
||||
|
||||
Reference in new issue
Block a user