tengri/Content/Movement/ManualTestingChecklist.md

237 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

[//]: # (Movement/ManualTestingChecklist.md)
# Movement System - Manual Testing Checklist
## Тестовая среда
- **Уровень:** TestLevel с BP_MainCharacter
- **Требования:** MovementComponent инициализирован
- **Debug HUD:** Включен для проверки параметров
---
## 1. Инициализация системы
### 1.1 Базовая инициализация
- [ ] **InitializeMovementSystem()** выполняется без ошибок при запуске уровня
- [ ] **IsInitialized flag** устанавливается в true после инициализации
- [ ] **Angle conversion** - пороги корректно конвертируются из градусов в радианы
- [ ] **CapsuleComponent reference** - передаётся и сохраняется корректно (этап 9)
---
## 2. Константы движения
### 2.1 Default значения
- [ ] **MaxSpeed = 800.0** - значение установлено по умолчанию
- [ ] **Acceleration = 10.0** - значение установлено по умолчанию
- [ ] **Friction = 8.0** - значение установлено по умолчанию
- [ ] **Gravity = 980.0** - значение установлено по умолчанию
### 2.2 Пороговые углы
- [ ] **Walkable = 50.0°** - значение по умолчанию в градусах
- [ ] **SteepSlope = 85.0°** - значение по умолчанию в градусах
- [ ] **Wall = 95.0°** - значение по умолчанию в градусах
### 2.3 Sweep Collision константы (Этап 9)
- [ ] **MaxStepSize = 50.0** - максимальный размер шага sweep
- [ ] **MinStepSize = 1.0** - минимальный размер шага
- [ ] **MaxCollisionChecks = 25** - лимит проверок за кадр
- [ ] **GroundTraceDistance = 5.0** - дистанция trace вниз для ground detection
---
## 3. Базовое движение (Этап 7)
### 3.1 Управление клавиатурой
- [ ] **W** - персонаж движется вперед (+X направление)
- [ ] **S** - персонаж движется назад (-X направление)
- [ ] **A** - персонаж движется влево (+Y направление)
- [ ] **D** - персонаж движется вправо (-Y направление)
- [ ] **Отсутствие input** - персонаж останавливается
### 3.2 Управление геймпадом
- [ ] **Left Stick Up** - движение вперед
- [ ] **Left Stick Down** - движение назад
- [ ] **Left Stick Left** - движение влево
- [ ] **Left Stick Right** - движение вправо
- [ ] **Stick в центре** - персонаж останавливается
### 3.3 Физика движения
- [ ] **Плавное ускорение** - персонаж набирает скорость постепенно при нажатии клавиш
- [ ] **Плавное торможение** - персонаж останавливается плавно при отпускании клавиш
- [ ] **MaxSpeed limit** - скорость не превышает 800.0 units/sec
- [ ] **Диагональное движение** - скорость диагонального движения равна прямому (не быстрее)
- [ ] **Стабильное поведение** - нет рывков, заиканий или неожиданных ускорений
### 3.4 Состояния движения
- [ ] **Idle state** - MovementState = Idle когда персонаж стоит
- [ ] **Walking state** - MovementState = Walking при движении
- [ ] **Airborne state** - MovementState = Airborne в воздухе (этап 9)
- [ ] **InputMagnitude** - корректно отражает силу input (0-1)
- [ ] **CurrentSpeed** - показывает текущую горизонтальную скорость
---
## 4. Ground Detection и Падение (Этап 9)
### 4.1 Базовое падение и приземление
- [ ] **Падение начинается:** Персонаж падает вниз с нормальной скоростью
- [ ] **Приземление без провалов:** Персонаж останавливается НА полу, а не В полу
- [ ] **Стабильная Z позиция:** После приземления Z координата стабильна (±0.5 единиц)
- [ ] **IsGrounded = true:** Debug HUD показывает `Is Grounded: true` после приземления
- [ ] **Velocity.Z = 0:** После приземления вертикальная скорость обнулена
**Ожидаемые значения в Debug HUD:**
```
Current Velocity: X=0.00 Y=0.00 Z=0.00
Is Grounded: true
Location Z: ~0.125 (стабильно)
```
### 4.2 Движение по полу без провалов
- [ ] **Движение WASD:** Персонаж двигается по полу плавно
- [ ] **Нет дёрганий Z:** При движении нет вертикальных рывков
- [ ] **Z позиция стабильна:** Разброс Z ≤ 0.5 единиц во время движения
- [ ] **Collision Checks:** В Debug HUD не превышает 25
**Ожидаемые значения в Debug HUD:**
```
Speed: 600-800
Is Grounded: true
Collision Checks: 3-8/25
```
### 4.3 Край платформы
- [ ] **Подход к краю:** Персонаж может подойти к краю платформы
- [ ] **Схождение с края:** Персонаж начинает падать после выхода за край
- [ ] **IsGrounded = false:** Debug HUD показывает airborne state
- [ ] **Короткая "липкость":** Капсула может кратковременно зацепиться (это нормально)
- [ ] **Повторное приземление:** После падения с края может приземлиться снова
**Известное поведение:** Лёгкое "прилипание" к краю из-за скруглённой капсулы - это нормально, исправим в этапе 15
---
## 5. Sweep Collision Performance (Этап 9)
### 5.1 Количество collision checks
| Сценарий | Ожидаемое кол-во checks |
|----------|------------------------|
| Стоит на месте | 0-1 |
| Медленное движение | 2-5 |
| Нормальная скорость | 5-12 |
| Максимальная скорость | 15-25 |
| Падение с высоты | 10-20 |
- [ ] **Idle:** Collision Checks = 0-1
- [ ] **Walking:** Collision Checks = 5-12
- [ ] **Fast movement:** Не превышает MaxCollisionChecks (25)
### 5.2 Адаптивный размер шага
- [ ] **При медленном движении:** Меньше traces (видно в visual debug)
- [ ] **При быстром движении:** Больше traces, меньше расстояние между ними
- [ ] **Падение:** Частые проверки во время быстрого падения
**Visual debug traces должны показать:** Короткие шаги при высокой скорости, длинные при низкой
---
## 6. Детерминированность (Этап 9)
### 6.1 Тест повторяемости
**Процедура:**
1. Запомнить начальную позицию персонажа
2. Подвигать персонажа в определённом направлении 5 секунд
3. Перезапустить уровень
4. Повторить те же движения
5. Сравнить финальные позиции
**Проверки:**
- [ ] **Z координата идентична:** Разница ≤ 0.5 единиц
- [ ] **XY координаты близки:** Небольшое отклонение допустимо (инпут timing)
- [ ] **IsGrounded одинаков:** Один и тот же state в конце
---
## 7. Debug HUD Integration
### 7.1 Movement Info Page
- [ ] **Константы** отображаются корректно:
- Max Speed: 800
- Acceleration: 10
- Friction: 8
- Gravity: 980
- Initialized: true
- [ ] **Текущее состояние** отображается:
- Current Velocity: X, Y, Z компоненты
- Speed: горизонтальная скорость
- Is Grounded: true/false
- Surface Type: Walkable (пока всегда)
- Movement State: Idle/Walking/Airborne
- Input Magnitude: 0.00-1.00
- [ ] **Rotation info** (этап 8):
- Current Yaw
- Target Yaw
- Rotation Delta
- Is Rotating
- [ ] **Position** (этап 9):
- Location: X, Y, Z координаты
- [ ] **Sweep Collision** (этап 9):
- Collision Checks: X/25
- Ground Distance: 5.0 cm
### 7.2 Реальное время обновления
- [ ] **Velocity** изменяется в реальном времени при движении
- [ ] **Speed** корректно показывает magnitude горизонтальной скорости
- [ ] **Movement State** переключается между Idle/Walking/Airborne
- [ ] **Input Magnitude** отражает силу нажатия
- [ ] **Collision Checks** обновляется каждый кадр при движении
- [ ] **Location** обновляется плавно
---
## 8. Автотесты Integration
### 8.1 FT_SurfaceClassification
- [ ] **Тест проходит** - классификация поверхностей по углам
### 8.2 FT_MovementInitialization
- [ ] **Тест проходит** - инициализация, начальные состояния, конфигурация
### 8.3 Удалённые тесты
-**FT_BasicMovement** - удалён (требует тестовый уровень)
-**FT_DiagonalMovement** - удалён (требует тестовый уровень)
---
## 9. Performance
### 9.1 Производительность
- [ ] **Stable 60+ FPS** при активном движении
- [ ] **No memory leaks** при длительном использовании
- [ ] **Smooth movement** без микро-заиканий
- [ ] **Sweep overhead** минимален (<1ms дополнительно)
### 9.2 Отзывчивость
- [ ] **Instant response** на нажатие клавиш (нет input lag)
- [ ] **Smooth transitions** между состояниями движения
- [ ] **Consistent timing** независимо от FPS
---
## Критерии прохождения этапов
### Этап 7: Базовое движение
- [ ] Все основные направления движения работают
- [ ] Физика движения плавная и отзывчивая
- [ ] MaxSpeed limit соблюдается
- [ ] Диагональное движение не дает преимущества в скорости
### Этап 9: Sweep Collision + Ground Detection
- [ ] Полное отсутствие tunneling при любых скоростях
- [ ] Стабильная Z позиция (разброс <0.5 единиц)
- [ ] Детерминированность (100% воспроизводимость)
- [ ] Performance <25 collision checks за кадр
- [ ] Значения корректно отображаются в Debug HUD