refine runtime navmesh contracts and plan
This commit is contained in:
@@ -100,6 +100,7 @@
|
||||
Последствия:
|
||||
- каноничность gameplay не должна зависеть от клиентского NavMesh
|
||||
- client NavMesh используется для локальных потребностей, но authoritative decisions по NPC остаются у хоста
|
||||
- при одинаковом world state peers должны приходить к функционально эквивалентной walkable topology, но NavMesh не считается protocol-grade bit-identical артефактом, от которого зависит correctness multiplayer state
|
||||
|
||||
### 5. Будущие изменения проходимости мира передаются как authoritative world deltas
|
||||
|
||||
@@ -140,11 +141,12 @@
|
||||
- rebuild должен быть incremental, throttled и bounded
|
||||
- полносценовый bake вокруг камеры не подходит как каноническая модель
|
||||
|
||||
### 7. Первая итерация NavMesh покрывает область вокруг player actor, но долгосрочный контракт расширяется до players + active NPC
|
||||
### 7. Первая итерация NavMesh может приоритизировать одного player actor, но внешний interest-контракт сразу задается как actor set
|
||||
|
||||
Решение:
|
||||
- для первой проверки гипотезы build priority привязывается к player actor
|
||||
- целевой контракт для multiplayer host: nav coverage должна учитывать игроков и активных NPC
|
||||
- для первой проверки гипотезы scheduler может стартовать от одного player actor
|
||||
- внешний reader/read-model контракт не должен жестко фиксировать single-point модель
|
||||
- целевой контракт для multiplayer host: nav coverage должна учитывать игроков и активных NPC как actor-level interest set
|
||||
|
||||
Почему выбрано:
|
||||
- это минимальный объем для MVP-проверки без ранней переплаты за сложную interest model
|
||||
@@ -158,6 +160,7 @@
|
||||
Последствия:
|
||||
- в коде нельзя оставлять `Camera.main` как канонический источник world/nav interest
|
||||
- target должен представлять actor-level interest, а не presentation-level camera
|
||||
- reader-контракт для интереса должен уметь вернуть один или несколько actor-level interest points; даже если первая scene wiring временно дает только один player actor, это не должно цементироваться во внешний API
|
||||
|
||||
### 8. Для MVP поддерживается один тип NavMesh agent
|
||||
|
||||
@@ -219,9 +222,10 @@
|
||||
- `VoxelWorldGenerator` пока содержит private nested types и внутренние детали, которые нельзя делать частью внешнего API
|
||||
|
||||
Последствия:
|
||||
- нужны contracts для `IChunkNavGeometryReader` и `IWorldInterestReader`
|
||||
- нужны query contracts для чтения актуальных nav build sources чанков и actor-level interest set, например `IChunkNavSourceReader` и `IWorldInterestReader`
|
||||
- нужны message types для `ChunkNavGeometryReady`, `ChunkNavGeometryRemoved` и `WorldInterestChanged`
|
||||
- `GlobalMessagePipe` не считается канонической точкой интеграции для feature-кода
|
||||
- world-to-navmesh contracts не должны делать `Transform`, `MeshCollider` и `BoxCollider` каноническим внешним состоянием там, где достаточно узких source descriptors для build/invalidation
|
||||
|
||||
## Long-Term Risks
|
||||
|
||||
|
||||
Reference in New Issue
Block a user