---
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/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs
  - Assets/Features/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/Features/VoxelWorld/*`.

## Source Of Truth

- `Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
- `Assets/Features/VoxelWorld/Runtime/VoxelWorldAtlas.cs`
- решения из `TASK-0001`

## Read First

- `docs/tasks/items/TASK-0001.md`
- `Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
- `Assets/Features/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 из этой задачи.
