Files
TheDeclineOfWarriors/docs/tasks/items/TASK-0019.md
T

5.0 KiB
Raw Blame History


id: TASK-0019 title: Добавить генерацию данжей-предфабов поверх биомов мира summary: Реализовать BackLog-задачу на детерминированное размещение dungeon prefab в voxel-мире: одинаковая позиция по seed, встраивание через stamp/carve и сохранение результата. priority: High area: worldgen owner: unassigned created: 2026-03-30 updated: 2026-03-30 execution_time: 1d6h depends_on:

  • TASK-0003 canonical_docs:
  • docs/tasks/Index.md related_files:
  • Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
  • Assets/ChunkTemplate.asset

TASK-0019 - Добавить генерацию данжей-предфабов поверх биомов мира

Status

Статус задачи ведется в docs/tasks/Index.md и является каноническим там.

Допустимые значения статуса:

  • BackLog
  • ToDo
  • InProgress
  • Review
  • Done

Why

Dungeon prefab должны одинаково размещаться по seed и быть частью мира, а не отдельной "декорацией". Для voxel-мира это означает stamp/carve в данных чанков (и, при необходимости, пересборку визуального меша/коллайдеров).

Expected Outcome

Система worldgen умеет по seed и biome rules выбрать место для dungeon prefab, встроить его в voxel-мир (stamp/carve в воксельных данных чанков), удалить конфликтующие воксели и воспроизвести тот же результат у всех клиентов.

Current Context

В проекте есть VoxelWorldGenerator с chunked runtime loop. Dungeon placement должен строиться поверх deterministic world coordinates и biome sampling, но применять изменения на уровне voxel chunk data.

Source Of Truth

  • docs/tasks/items/TASK-0003.md
  • готовые dungeon prefab assets
  • future dungeon placement code

Read First

  • docs/tasks/items/TASK-0003.md
  • Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
  • Assets/ChunkTemplate.asset

Scope In

  • deterministic placement dungeon prefab по seed и biome rules
  • выбор world-space/voxel-space якоря (anchor) и bounded volume для stamp/carve
  • stamp/carve в voxel chunk data и пересборка меша/коллайдера
  • одинаковое размещение у всех игроков

Scope Out

  • процедурная сборка самих данжей из модулей
  • сложная логика лута и боссов внутри данжа

Constraints

  • данж не должен существовать только как отдельный GameObject без интеграции в voxel данные мира
  • размещение должно быть детерминированным и совместимым с chunked worldgen

If You Find Drift

  • если prefab placement требует недетерминированного ручного runtime-подбора, это drift

Suggested Approach

  1. Определить правила выбора позиции данжа по biome/world rules.
  2. Определить формат dungeon stamp (например: набор voxel изменений, высотная маска, volume SDF или готовый "voxel brush").
  3. Реализовать применение stamp/carve в voxel chunk data и пересборку визуала.
  4. Подготовить интеграцию с chunk loading и world save.

Acceptance Criteria

  • один и тот же seed размещает один и тот же dungeon prefab в одном и том же месте
  • данж встраивается в voxel-мир через stamp/carve и изменяет voxel chunk data
  • результат одинаков у всех игроков и повторяем после загрузки мира

Verification

  • повторная генерация одинакового мира и сверка положения данжа
  • ручная проверка отсутствия "парящих" коллайдеров/дыр после stamp/carve

Risks / Open Questions

  • нужно решить, как хранить пересечение данжа с несколькими чанками и как кэшировать/сохранять stamp results

Human Decisions Needed

  • none currently

Decision Log

  • 2026-03-31 - задача переписана под voxel worldgen: stamp/carve вместо grid/tile carving.

Handoff Notes

При переводе в ToDo желательно отдельно перечислить доступные dungeon prefab и biome placement rules.