[Fix] Update Tasks to Voxel Engine

This commit is contained in:
2026-03-31 09:32:34 +07:00
parent 122d7e55c2
commit 097a86f40b
12 changed files with 338 additions and 46 deletions
+16 -15
View File
@@ -1,7 +1,7 @@
---
id: TASK-0019
title: Добавить генерацию данжей-предфабов поверх биомов мира
summary: Реализовать BackLog-задачу на детерминированное размещение готовых dungeon prefab в мире так, чтобы они одинаково вставлялись по seed, вписывались в grid и вырезали мировой слой под собой.
summary: Реализовать BackLog-задачу на детерминированное размещение dungeon prefab в voxel-мире: одинаковая позиция по seed, встраивание через stamp/carve и сохранение результата.
priority: High
area: worldgen
owner: unassigned
@@ -13,7 +13,7 @@ depends_on:
canonical_docs:
- docs/tasks/Index.md
related_files:
- Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs
- Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
- Assets/ChunkTemplate.asset
---
@@ -33,15 +33,15 @@ related_files:
## Why
Пользователь явно описал сценарий с готовым prefab-данжем, который должен одинаково размещаться у всех игроков и не рисоваться поверх карты, а встраиваться в grid мира с вырезанием тайлов под собой.
Dungeon prefab должны одинаково размещаться по seed и быть частью мира, а не отдельной "декорацией". Для voxel-мира это означает stamp/carve в данных чанков (и, при необходимости, пересборку визуального меша/коллайдеров).
## Expected Outcome
Система worldgen умеет по seed и biome rules выбрать место для dungeon prefab, встроить его в мир, удалить конфликтующий мировой слой под ним и воспроизвести тот же результат у всех клиентов.
Система worldgen умеет по seed и biome rules выбрать место для dungeon prefab, встроить его в voxel-мир (stamp/carve в воксельных данных чанков), удалить конфликтующие воксели и воспроизвести тот же результат у всех клиентов.
## Current Context
В проекте уже есть grid/tile-based worldgen. Dungeon placement должен строиться поверх deterministic world coordinates и biome sampling.
В проекте есть `VoxelWorldGenerator` с chunked runtime loop. Dungeon placement должен строиться поверх deterministic world coordinates и biome sampling, но применять изменения на уровне voxel chunk data.
## Source Of Truth
@@ -52,14 +52,14 @@ related_files:
## Read First
- `docs/tasks/items/TASK-0003.md`
- `Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs`
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
- `Assets/ChunkTemplate.asset`
## Scope In
- deterministic placement dungeon prefab по seed и biome rules
- привязка prefab к grid/tiles мира
- вырезание или замещение мировых тайлов под данжем
- выбор world-space/voxel-space якоря (anchor) и bounded volume для stamp/carve
- stamp/carve в voxel chunk data и пересборка меша/коллайдера
- одинаковое размещение у всех игроков
## Scope Out
@@ -69,7 +69,7 @@ related_files:
## Constraints
- данж не должен просто отрисовываться сверху без интеграции в мир
- данж не должен существовать только как отдельный GameObject без интеграции в voxel данные мира
- размещение должно быть детерминированным и совместимым с chunked worldgen
## If You Find Drift
@@ -79,23 +79,24 @@ related_files:
## Suggested Approach
1. Определить правила выбора позиции данжа по biome/world rules.
2. Описать grid-aligned placement и carve/replace world tiles под prefab.
3. Подготовить интеграцию с chunk loading и world save.
2. Определить формат dungeon stamp (например: набор voxel изменений, высотная маска, volume SDF или готовый "voxel brush").
3. Реализовать применение stamp/carve в voxel chunk data и пересборку визуала.
4. Подготовить интеграцию с chunk loading и world save.
## Acceptance Criteria
- один и тот же seed размещает один и тот же dungeon prefab в одном и том же месте
- данж встраивается в grid мира и заменяет конфликтующие тайлы под собой
- данж встраивается в voxel-мир через stamp/carve и изменяет voxel chunk data
- результат одинаков у всех игроков и повторяем после загрузки мира
## Verification
- повторная генерация одинакового мира и сверка положения данжа
- ручная проверка отсутствия наложения поверх неснятых мировых тайлов
- ручная проверка отсутствия "парящих" коллайдеров/дыр после stamp/carve
## Risks / Open Questions
- нужно решить, как хранить пересечение данжа с несколькими чанками и как кэшировать carve results
- нужно решить, как хранить пересечение данжа с несколькими чанками и как кэшировать/сохранять stamp results
## Human Decisions Needed
@@ -103,7 +104,7 @@ related_files:
## Decision Log
- `2026-03-30` - задача добавлена в `BackLog` по явному запросу пользователя и уточнена требованием grid-carving.
- `2026-03-31` - задача переписана под voxel worldgen: stamp/carve вместо grid/tile carving.
## Handoff Notes