111 lines
4.5 KiB
Markdown
111 lines
4.5 KiB
Markdown
---
|
||
id: TASK-0003
|
||
title: Построить детерминированную voxel-генерацию мира с биомами
|
||
summary: Развить воксельный worldgen до детерминированной генерации мира по seed с поддержкой биомов и стабильной структуры чанков.
|
||
priority: Highest
|
||
area: worldgen
|
||
owner: unassigned
|
||
created: 2026-03-30
|
||
updated: 2026-03-30
|
||
execution_time: 1d6h
|
||
depends_on:
|
||
- TASK-0001
|
||
canonical_docs:
|
||
- docs/tasks/Index.md
|
||
related_files:
|
||
- Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
|
||
- Assets/Scripts/VoxelWorld/Runtime/VoxelWorldAtlas.cs
|
||
---
|
||
|
||
# TASK-0003 - Построить детерминированную voxel-генерацию мира с биомами
|
||
|
||
## Status
|
||
|
||
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
|
||
|
||
Допустимые значения статуса:
|
||
|
||
- `BackLog`
|
||
- `ToDo`
|
||
- `InProgress`
|
||
- `Review`
|
||
- `Done`
|
||
|
||
## Why
|
||
|
||
Диаблоид с процедурным миром требует воспроизводимого результата по seed. Биомы влияют не только на визуал, но и на правила спавна, лута и будущих данжей.
|
||
|
||
## Expected Outcome
|
||
|
||
Один и тот же seed всегда строит одинаковый набор воксельных чанков и биомных зон. У мира есть понятный API для запроса biome data и chunk data.
|
||
|
||
## Current Context
|
||
|
||
В проекте уже есть `VoxelWorldGenerator`, который строит чанки и управляет их lifecycle. Легаси `Assets/Scripts/WorldGen/*` не является фокусом проекта.
|
||
|
||
## Source Of Truth
|
||
|
||
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
|
||
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldAtlas.cs`
|
||
- решения из `TASK-0001`
|
||
|
||
## Read First
|
||
|
||
- `docs/tasks/items/TASK-0001.md`
|
||
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
|
||
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldAtlas.cs`
|
||
|
||
## Scope In
|
||
|
||
- нормализовать seed-driven worldgen
|
||
- определить модель биома на уровне чанка и под-областей
|
||
- выделить стабильные world coordinates и chunk coordinates
|
||
- подготовить world query API для спавна и данжей
|
||
|
||
## Scope Out
|
||
|
||
- логика врагов и битовые маски убийств
|
||
- размещение готовых данж prefab
|
||
|
||
## Constraints
|
||
|
||
- генерация должна быть одинаковой для всех клиентов и сервера
|
||
- нельзя строить ключевые правила мира только на клиенте
|
||
|
||
## If You Find Drift
|
||
|
||
- если существующий worldgen зависит от недетерминированных источников, это нужно исправлять или явно документировать
|
||
|
||
## Suggested Approach
|
||
|
||
1. Зафиксировать структуру seed, biome sampling и координатную систему.
|
||
2. Вынести deterministic chunk generation API.
|
||
3. Подготовить точки интеграции для spawn, saves и dungeon placement.
|
||
|
||
## Acceptance Criteria
|
||
|
||
- одинаковый seed порождает одинаковые чанки и биомы
|
||
- есть способ получить biome/chunk data без прямой привязки к визуальному рендеру
|
||
- downstream systems могут использовать мир как deterministic source of truth
|
||
|
||
## Verification
|
||
|
||
- прогон нескольких одинаковых seed и сравнение результатов
|
||
- ручная проверка стабильности при повторной загрузке мира
|
||
|
||
## Risks / Open Questions
|
||
|
||
- потребуется решить, хранится ли биом целиком как функция seed или частично кэшируется в save
|
||
|
||
## Human Decisions Needed
|
||
|
||
- none currently
|
||
|
||
## Decision Log
|
||
|
||
- `2026-03-30` - поддержка биомов зафиксирована как часть ядра worldgen, а не как декоративное расширение.
|
||
|
||
## Handoff Notes
|
||
|
||
Задачи по спавну, сохранениям и данжам должны ссылаться на deterministic world query API из этой задачи.
|