--- 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/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs - Assets/Features/Tasks/Editor/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/Features/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 Легаси `Assets/Scripts/WorldGen/*` удален. Дальнейшие изменения стоит делать только внутри актуальных feature-папок, не возвращая старую 2D-ветку в общий runtime.