[doc] Rename & fix TDD_01.md

main
Nikolay Petrov 2025-08-21 17:09:02 +05:00
parent 591be73675
commit 5f6d356ead
2 changed files with 223 additions and 1 deletions

View File

@ -1,4 +1,4 @@
[//]: # (Documentation/Movement/TechnicalDesign/TDD.md)
[//]: # (Documentation/Movement/TechnicalDesign/TDD_01.md)
# Система Движения - Техническая Документация

View File

@ -0,0 +1,222 @@
[//]: # (Documentation/Movement/TechnicalDesign/TDD_02.md)
# Система Debug HUD - Техническая Документация
## Обзор
Страничная debug система с UI-интерфейсом для мониторинга состояния Movement системы в реальном времени.
## Архитектурные принципы
- **Модульность:** Debug система отделена от Movement логики
- **Расширяемость:** Легкое добавление новых debug страниц
- **Производительность:** Контролируемая частота обновления
- **UX:** Интуитивная навигация и адаптивный интерфейс
## Компоненты системы
### AC_DebugHUD (Core Component)
**Ответственности:**
- Управление состоянием debug системы
- Регистрация и управление debug страницами
- Обновление данных в реальном времени
- Коммуникация с UI Widget
**Ключевые функции:**
- `InitializeDebugHUD()` - Инициализация системы
- `UpdateHUD()` - Обновление каждый кадр
- `ToggleDebugHUD()` - Включение/выключение
- `NextPage()/PreviousPage()` - Навигация
- `RegisterDebugPage()` - Добавление новых страниц
### WBP_DebugHUD (UI Widget)
**Ответственности:**
- Отображение debug информации
- Адаптивное изменение размера
- Обработка текстового контента
**UI Структура:**
```
Canvas Panel
└── Border
└── MainContainer (Vertical Box)
├── HeaderTextBox (заголовок страницы)
├── Border
├── ContentTextBox (основной контент)
├── Border
└── NavigationTextBox (подсказки навигации)
```
## Система страниц
### Movement Constants Page
- Max Speed, Acceleration, Friction, Gravity
- Статус инициализации компонента
- Источник: AC_Movement.MovementConstants
### Surface Classification Page
- Пороги углов для всех типов поверхностей
- Walkable ≤50°, Steep 50°-85°, Wall 85°-95°, Ceiling >95°
- Источник: AC_Movement.AngleThresholdsDegrees
### Performance Metrics Page
- Frame counter, FPS в реальном времени
- Частота обновления debug системы
- Количество активных страниц
- Источник: внутренние метрики AC_DebugHUD
## Структуры данных
### S_DebugPage
```typescript
{
PageID: E_DebugPageID // Уникальный идентификатор
Title: string // Заголовок страницы
Content: string // Текстовый контент (поддержка \n)
IsVisible: boolean // Участие в навигации
UpdateFunction: E_DebugUpdateFunction // Функция обновления
}
```
### S_DebugSettings
```typescript
{
CurrentMode: E_DebugMode // Hidden/Visible
CurrentPageIndex: number // Индекс текущей страницы
ShowVisualDebug: boolean // Отдельно от HUD
UpdateFrequency: Float // Hz (0 = каждый кадр)
}
```
## Управление
### Keyboard Controls
- **Tab** - Toggle Debug HUD
- **PageUp** - Previous Page
- **PageDown** - Next Page
- **Home** - Toggle Visual Debug
### Gamepad Controls (опционально)
- **LT+RT+A** - Toggle Debug HUD
- **LT+RT+DPad Left/Right** - Navigate Pages
- **LT+RT+Y** - Toggle Visual Debug
## Производительность
### Оптимизации
- Update frequency control (default: каждый кадр)
- Size To Content для минимального UI footprint
- Lazy widget updates (только при изменении данных)
- Efficient page switching без пересоздания UI
### Benchmarks
- Инициализация: <1ms
- Update per frame: <0.1ms
- Memory footprint: ~50KB
- FPS impact: <1% при включенном HUD
## Расширяемость
### Добавление новой страницы
1. Добавить enum в `E_DebugPageID`
2. Добавить update function в `E_DebugUpdateFunction`
3. Реализовать Update[Name]Page() в AC_DebugHUD
4. Добавить case в UpdateCurrentPage() switch
5. Зарегистрировать через RegisterDebugPage()
### Пример:
```typescript
// 1. Enum
E_DebugPageID.InputInfo = "InputInfo"
// 2. Update function
E_DebugUpdateFunction.UpdateInputPage = "UpdateInputPage"
// 3. Implementation
private UpdateInputPage(Page: S_DebugPage): S_DebugPage {
return {
...Page,
Content: `Current Input: ${this.GetCurrentInput()}\n` +
`Input Buffer: ${this.GetInputBuffer()}`
}
}
// 4. Registration
this.RegisterDebugPage({
PageID: E_DebugPageID.InputInfo,
Title: "Input System",
Content: '',
IsVisible: true,
UpdateFunction: E_DebugUpdateFunction.UpdateInputPage
});
```
## Тестирование
### Автоматические тесты
- `TestDebugSystem()` - системные тесты
- `TestPageContentGeneration()` - генерация контента
- `TestNavigation()` - навигация между страницами
- `RunAllTests()` - полный набор тестов
### Debug команды
- `DebugCommand_RunTests()` - запуск тестов
- `DebugCommand_StressTest()` - стресс тест
### Manual Testing Checklist
- Инициализация системы
- Навигация по всем страницам
- Корректность данных на каждой странице
- Real-time обновления (FPS, Frame counter)
- Toggle функциональность
- Адаптивный размер UI
- Производительность
## Известные ограничения
1. **Текстовый интерфейс:** Только text-based debug info
2. **Статические страницы:** Страницы регистрируются при инициализации
3. **Одиночный Widget:** Один debug HUD на экран
## Планы развития (Этап 3+)
1. **Toast Messages система** - Временные уведомления
2. **Visual Debug элементы** - Линии, сферы, collision shapes
3. **Interactive элементы** - Кнопки, слайдеры для real-time настройки
4. **Сохранение настроек** - Persistent debug preferences
5. **Remote debugging** - Debug через внешние инструменты
## Интеграционные точки
### С Movement System
- Получение Movement Constants
- Получение Angle Thresholds
- Real-time мониторинг состояния
### С Input System
- Enhanced Input Actions для навигации
- Hotkey регистрация без конфликтов
### С Game Framework
- Инициализация в BeginPlay
- Update в Tick
- Cleanup в EndPlay
## Файловая структура
```
Content/
├── Debug/
│ ├── Components/
│ │ └── AC_DebugHUD.ts
│ ├── Enums/
│ │ ├── E_DebugMode.ts
│ │ ├── E_DebugPageID.ts
│ │ └── E_DebugUpdateFunction.ts
│ ├── Structs/
│ │ ├── S_DebugPage.ts
│ │ └── S_DebugSettings.ts
│ └── UI/
│ └── WBP_DebugHUD.ts
└── Movement/
└── Blueprints/
└── BP_MainCharacter.ts (integration point)
```