4.4 KiB
4.4 KiB
id, title, summary, priority, area, owner, created, updated, execution_time, depends_on, canonical_docs, related_files
| id | title | summary | priority | area | owner | created | updated | execution_time | depends_on | canonical_docs | related_files | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-0022 | Интегрировать спавн врагов в VoxelWorldGenerator | Добавить в воксельный генератор мира интеграцию спавна врагов при загрузке чанков, используя детерминированные правила и kill-state. | Highest | worldgen | unassigned | 2026-03-31 | 2026-03-31 | 1d |
|
|
|
TASK-0022 - Интегрировать спавн врагов в VoxelWorldGenerator
Status
Статус задачи ведется в docs/tasks/Index.md и является каноническим там.
Why
Спавн врагов должен быть частью runtime world loop: при появлении/активации чанка сервер должен спавнить deterministic roster, а при повторной загрузке учитывать kill-state, чтобы мир ощущался стабильным и сохраняемым.
Expected Outcome
- При загрузке чанка сервер вычисляет deterministic spawn roster для этого чанка.
- Сервер спавнит врагов в пределах чанка (или в заданных spawn zones), не создавая дублей.
- При наличии kill-state для чанка повторный спавн не создает уже убитых врагов.
Current Context
В проекте уже есть VoxelWorldGenerator, который управляет жизненным циклом чанков. Задачи TASK-0005 и TASK-0006 описывают deterministic roster и kill-state, но без интеграции в мир спавн не работает end-to-end.
Source Of Truth
docs/tasks/items/TASK-0005.mddocs/tasks/items/TASK-0006.mdAssets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs
Scope In
- точка интеграции: событие/хук на появление чанка в runtime
- вычисление spawn roster для
(seed, chunkCoord) - привязка
enemySlotIndexк конкретному spawned enemy - применение kill-state при (ре)загрузке чанка
Scope Out
- AI поведение врагов (это
TASK-0012) - сложные spawn director механики
Constraints
- сервер является источником истины для спавна
- результат должен быть детерминированным
Suggested Approach
- Выделить интерфейс/сервис
IChunkSpawnService(или аналог) и вызывать его изVoxelWorldGeneratorпри загрузке чанка. - Реализовать вычисление roster, используя уже согласованный контракт из
TASK-0005. - Перед фактическим спавном проверить kill-state из
TASK-0006. - Зафиксировать правила despawn при выгрузке чанка.
Acceptance Criteria
- при повторной загрузке одного и того же чанка сервер спавнит одинаковый roster
- убитые слоты не спавнятся повторно после загрузки world save
Verification
- ручной тест: зайти/выйти из зоны чанка и убедиться, что roster стабилен
- тест: убить врага, сохранить/перезагрузить мир, проверить отсутствие этого слота
Risks / Open Questions
- нужно решить, где хранить runtime mapping
enemySlotIndex -> NetworkObjectи когда его очищать
Human Decisions Needed
- none currently
Decision Log
2026-03-31- задача выделена отдельно как интеграция deterministic spawn в runtime voxel-chunk loop.
Handoff Notes
Если окажется, что генератор чанков работает и на клиенте, убедиться, что спавн вызывается только на сервере.