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

108 lines
5.0 KiB
Markdown

---
id: TASK-0021
title: Привести проект в порядок (asmdef и базовые тесты)
summary: Разнести код по asmdef (Runtime/Editor/Tests), навести структуру каталогов и добавить минимальный набор автотестов, чтобы развитие воксельного мира и сетевого слоя не превращалось в хаос.
priority: High
area: architecture
owner: unassigned
created: 2026-03-31
updated: 2026-03-31
execution_time: 2d
depends_on:
- TASK-0001
canonical_docs:
- docs/tasks/Index.md
related_files:
- Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs
- Assets/Editor/Tasks/TaskBoardWindow.cs
---
# TASK-0021 - Привести проект в порядок (asmdef и базовые тесты)
## Status
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
Допустимые значения статуса:
- `BackLog`
- `ToDo`
- `InProgress`
- `Review`
- `Done`
## Why
Сейчас проект развивается сразу в нескольких направлениях (воксельный worldgen, FishNet, AI/NavMesh, спавн/сейвы). Без нормальной структуры сборки и минимальных тестов любые изменения начинают ломать соседние подсистемы, а время на интеграцию растет.
## Expected Outcome
- Код разделен на asmdef по доменам и по границе Runtime/Editor.
- Editor-утилиты не тянут Runtime зависимости и наоборот.
- Есть базовые автотесты, которые фиксируют ключевые контракты (например, детерминизм вычислений и формат времени/парсинг задач можно оставить на потом).
## Current Context
В репозитории уже появились editor-инструменты (`Task Board`) и есть воксельный генератор (`VoxelWorldGenerator`). На текущем этапе важнее обеспечить предсказуемую сборку и быстрый фидбек, чем расширять функционал без контроля.
## Source Of Truth
- текущие канонические задачи в `docs/tasks/Index.md`
- существующие asmdef (если появятся) и фактические зависимости в проекте
## Read First
- `docs/tasks/Index.md`
- `Assets/Scripts/VoxelWorld/Runtime/VoxelWorldGenerator.cs`
## Scope In
- добавить asmdef для ключевых Runtime доменов: voxel worldgen, networking, gameplay-core, ai
- добавить asmdef для Editor tooling
- добавить test assemblies (EditMode) и минимальные smoke tests
- привести нейминг и папки к стабильной структуре (Runtime/Editor/Tests)
## Scope Out
- полный рефактор всех namespaces
- покрытие тестами всей игры
## Constraints
- не менять поведение runtime систем без отдельного решения и проверки
- не ломать существующий пайплайн Unity compilation
## Suggested Approach
1. Снять карту зависимостей: какие папки и системы действительно связаны.
2. Ввести asmdef минимальным числом сборок, но с четкими границами Runtime/Editor.
3. Добавить 3-5 тестов: сборка, создание генератора, базовый deterministic шаг (если есть чистые функции).
4. Зафиксировать правила добавления новых скриптов в нужные assembly.
## Acceptance Criteria
- проект компилируется без циклических ссылок между asmdef
- Editor скрипты не попадают в Runtime сборки
- тесты запускаются (EditMode) и дают полезный сигнал
## Verification
- Unity compilation без ошибок
- запуск `EditMode` тестов
## Risks / Open Questions
- возможны скрытые зависимости через `Resources`/`AssetDatabase` и прямые ссылки на UnityEditor
## Human Decisions Needed
- none currently
## Decision Log
- `2026-03-31` - задача создана как техническая стабилизация перед расширением worldgen/AI.
## Handoff Notes
Если при разнесении asmdef всплывет, что legacy `Assets/Scripts/WorldGen/*` больше не нужен, лучше выделить его в отдельный assembly или пометить как deprecated, а не смешивать с `VoxelWorld`.