[doc] Rename & fix TDD_01.md
parent
591be73675
commit
5f6d356ead
|
|
@ -1,4 +1,4 @@
|
|||
[//]: # (Documentation/Movement/TechnicalDesign/TDD.md)
|
||||
[//]: # (Documentation/Movement/TechnicalDesign/TDD_01.md)
|
||||
|
||||
# Система Движения - Техническая Документация
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
```
|
||||
Loading…
Reference in New Issue