[Fix] Update Tasks to Voxel Engine
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
---
|
||||
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`.
|
||||
Reference in New Issue
Block a user