From e29e3c6bb90444ec852df9ac42426f30415105dd Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 29 Oct 2026 15:58:33 +0400 Subject: feat(runtime): run resource schedules during world steps --- docs/tomes/02-architecture.md | 7 +++++++ docs/tomes/06-behavior.md | 23 +++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) (limited to 'docs/tomes') diff --git a/docs/tomes/02-architecture.md b/docs/tomes/02-architecture.md index 0d0ea11..527d7b2 100644 --- a/docs/tomes/02-architecture.md +++ b/docs/tomes/02-architecture.md @@ -363,6 +363,13 @@ CollObject, Control и PhysicalModel, пропуская отсутствующ Статическая цепочка ещё не доказывает исполнение активного Control update на миссии. Rust пока сохраняет начальные provider-снимки и не изменяет их этим путём. +В текущем runtime `step_headless` и `frame` получают время очереди явным +аргументом `u32`. По нему запускается представленный ресурсный планировщик +Behavior, после чего обрабатываются очередь мира и отложенные удаления. +Ресурсные изменения публикуются после успешного мирового шага, поэтому ошибка +не оставляет мир и ресурсы на разных шагах. Это начало расчётного цикла; +отдельное обновление Control, общая VM и движение ещё требуют подключения. + ## World3D World3D связывает игровые объекты, события, время, ввод, камеру, сетевые diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index 0ebbbf7..84f4f6e 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -202,17 +202,17 @@ SuperAI для записей кланов, затем обновляет Behavi Это полезное начало сценария, но ещё не целая игровая жизнь AI. Текущий runtime не воспроизводит аргумент обратного вызова в `AI+0x3fc`, защиту от повторного -входа `AI+0x78`, одноразовую метку `AI+0x8a8` или обновления Behavior на игровых -тиках. При этом один конкретный шаг Behavior — распределение ресурсов — уже -исполнен на исходной DLL с искусственными объектами. Rust пока не вызывает -регулярный шаг: игровой мир ещё не предоставляет нужные ресурсные интерфейсы. +входа `AI+0x78`, одноразовую метку `AI+0x8a8` или полное обновление Behavior на игровых +тиках. Распределение ресурсов исполнено на исходной DLL с искусственными +объектами и подключено к Rust `step_headless`: явное время очереди определяет, +какой клан должен выполнить очередной ресурсный шаг. При полной загрузке Rust уже восстанавливает членство объектов в клановых списках Behavior и задаёт их начальные доли. Остальные слова записи хранятся сырыми: семантика только первого из пяти слов хвоста установлена для нормализации. Runtime также не подменяет очередь оригинала: вызывающая сторона сама передаёт время, а локальный генератор Rust пока учитывает только случайные числа -восстановленного стартового шага. +восстановленного стартового шага и ресурсного планировщика. ### Откуда берутся объекты распределителя @@ -355,9 +355,16 @@ Control selector `1`; неподдержанное свойство, запро арифметическое значение возвращает ошибку. Обновления нескольких кланов, их расписания и RNG фиксируются одной транзакцией: если обязательный запрос позднего клана не разрешён, ранее подготовленные изменения остаются -неприменёнными. Приложение пока не вызывает -этот API из игрового цикла, а динамические callbacks, которые переносят -количество между Control provider-строками, ещё не моделируются. Поэтому это +неприменёнными. Обычные `step_headless(engine, input, queue_time_ms)` и +`frame(engine, queue_time_ms)` запускают этот расчёт до обработки очереди мира. +Они сначала готовят ресурсные изменения, затем выполняют шаг мира и публикуют +ресурсное состояние после его успеха. Ошибка любой стадии сохраняет прежние +ресурсы; ошибка подготовки также не продвигает мировой tick. До срока +планировщика большие таблицы ресурсов не копируются. + +Оконное приложение пока запускает static preview и не вызывает этот расчётный +путь. Динамические callbacks, которые переносят количество между Control +provider-строками, ещё не моделируются. Поэтому это исполняемый загруженный resource step, а не полный симулятор миссии. Для настоящих ресурсов AutoDemo тест проходит несколько временных точек: -- cgit v1.2.3