12 KiB
12 KiB
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 Тест повторяемости
Процедура:
- Запомнить начальную позицию персонажа
- Подвигать персонажа в определённом направлении 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