From e33925677692b85d096d891b381bac62b2c9942b Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 18 Jul 2026 19:42:52 +0400 Subject: feat(runtime): add terrain-snapped reference movement --- docs/tomes/06-behavior.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'docs') diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index 93ec301..3de3a22 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -290,6 +290,30 @@ Control получает world-interface Terrain и использует пов последовательности, а интеграция использует одну политику `dt` и округления. Иначе одинаковая миссия постепенно расходится даже без сети. +#### Reference controller в текущем runtime + +`fparkan-runtime::advance_reference_movement` — намеренно маленький +детерминированный мост между сохранённым mission transform и `TerrainWorld`. +Он получает `OriginalObjectId`, явную XY-цель и положительный максимум шага, +находит только live/registered object по исходному ID, двигает XY не более чем +на этот шаг и записывает высоту из `TerrainWorld::height_at`. Orientation и +scale остаются исходными IEEE-754 words; функция не изменяет clock, очередь +World3D или animation state. Возвращаемое значение означает достижение именно +заданной XY-цели. + +Это **не** восстановленный Control, Behavior или navigation controller: +функция не строит маршрут, не использует `dt`, скорость, terrain normal, +коллизии, acceleration и оригинальные AI decisions. Она существует как +проверяемый reference path, который фиксирует границу будущих controller-ов и +не позволяет renderer-у или gameplay обходить terrain query. Non-finite input, +неположительный шаг, отсутствующая миссия/объект и XY вне поверхности дают +явную ошибку без частичного изменения transform. + +Licensed test на GOG `Autodemo.00` запускает этот путь для live mission object, +находит существующую поверхность и проверяет точные XY/Z words после snap. Это +доказывает связывание current runtime data, но не доказывает семантику +оригинального движения. + ### Различия Control в Части 2 `Control.dll` пересобрана при неизменных размере, imports и пяти именах/ordinals -- cgit v1.2.3