tengri/Content/Movement/ManualTestingChecklist.md

12 KiB
Raw Blame History

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