[enhancement] Общий API мира для симуляции: геометрия, видимость, sweep и изменения блоков #43

Closed
opened 2026-10-29 17:51:06 +00:00 by chexit · 1 comment
Owner

🤖 Filed by Codex, AI-агент Владимира (chexit).

Сформировано по прямому запросу автора проекта; текущий код просмотрен на f443f0a. Цель: общий слой запросов к миру для полёта, датчиков, перемещения и пространственного звука. Чистая симуляция уже отделена от движка; требуется развить мост, а не переписать её ради архитектуры.

Сейчас Ground даёт верхнюю высоту колонки, запросы приходят на следующем тике; game.raycast привязан к взгляду игрока. Этого недостаточно для 3D-коллизий, тоннелей и произвольной проверки видимости.

Требования

  • Единый read-only контракт мира: пакетные segment/sweep-запросы, видимость между произвольными точками, геометрия/формы блоков в ограниченной области, revision/события изменения геометрии.
  • Явные Clear / Hit / Unknown; отсутствующий чанк и исчерпанный бюджет не означают воздух.
  • Идентификаторы мира, поколения, тика и запроса: поздний ответ не применяется к другому объекту/миру.
  • Отдельные политики collision, sensor visibility и sound occlusion: стекло/листва/жидкость могут вести себя по-разному. Общая геометрия не требует одинаковой семантики.
  • Пакеты, кэш по section/chunk revision, ограничение памяти и стоимости; без host-вызова на каждый voxel и без бесконтрольного force-load.
  • Простой provider для headless-тестов, чтобы fixtures не требовали запуска игры.

Связь с #42

P1-коллизии из #42 остаются самостоятельной срочной задачей. Минимальный рабочий sweep не должен ждать реализации всех будущих запросов. Этот issue — общий контракт и дальнейшее расширение, без второго параллельного collision API.

Приёмка

Одинаковые fixtures стены/тоннеля дают согласованные ответы геометрии; различия политик задаются явно. Изменение блока инвалидирует нужные данные; старые ответы и смена мира безопасны. Есть счётчики запросов, Unknown, cache bytes и стоимости тика.

🤖 Filed by Codex, AI-агент Владимира (chexit). Сформировано по прямому запросу автора проекта; текущий код просмотрен на `f443f0a`. Цель: общий слой запросов к миру для полёта, датчиков, перемещения и пространственного звука. Чистая симуляция уже отделена от движка; требуется развить мост, а не переписать её ради архитектуры. Сейчас [`Ground`](https://gitea.maoniao.team/chexit/airdef/src/commit/f443f0a94a71eb2d446792f1829146f9563aaf5d/airdef-mod/src/sim/mod.rs) даёт верхнюю высоту колонки, запросы приходят на следующем тике; `game.raycast` привязан к взгляду игрока. Этого недостаточно для 3D-коллизий, тоннелей и произвольной проверки видимости. ### Требования - Единый read-only контракт мира: пакетные segment/sweep-запросы, видимость между произвольными точками, геометрия/формы блоков в ограниченной области, revision/события изменения геометрии. - Явные `Clear / Hit / Unknown`; отсутствующий чанк и исчерпанный бюджет не означают воздух. - Идентификаторы мира, поколения, тика и запроса: поздний ответ не применяется к другому объекту/миру. - Отдельные политики collision, sensor visibility и sound occlusion: стекло/листва/жидкость могут вести себя по-разному. Общая геометрия не требует одинаковой семантики. - Пакеты, кэш по section/chunk revision, ограничение памяти и стоимости; без host-вызова на каждый voxel и без бесконтрольного force-load. - Простой provider для headless-тестов, чтобы fixtures не требовали запуска игры. ### Связь с #42 P1-коллизии из #42 остаются самостоятельной срочной задачей. Минимальный рабочий sweep не должен ждать реализации всех будущих запросов. Этот issue — общий контракт и дальнейшее расширение, без второго параллельного collision API. ### Приёмка Одинаковые fixtures стены/тоннеля дают согласованные ответы геометрии; различия политик задаются явно. Изменение блока инвалидирует нужные данные; старые ответы и смена мира безопасны. Есть счётчики запросов, Unknown, cache bytes и стоимости тика.
chexit added the type:enhancementarea:toolingpriority:P2area:simulation labels 2026-10-29 17:51:06 +00:00
Author
Owner

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/8065f22 (запушено в main).

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/8065f22 (запушено в main).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#43