237 lines
12 KiB
Markdown
237 lines
12 KiB
Markdown
[//]: # (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
|