108 lines
5.0 KiB
Markdown
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`.
|