450 lines
21 KiB
Markdown
450 lines
21 KiB
Markdown
[//]: # (Documentation/Roadmap.md)
|
||
|
||
# Этап 1: Базовая настройка и константы
|
||
**Цель:** Система классификации поверхностей по углам
|
||
|
||
**Результат:** Стабильная база для всех последующих расчетов
|
||
|
||
**Что реализуем:**
|
||
- Переменные движения (MaxSpeed, Acceleration, Friction, Gravity)
|
||
- Система углов поверхностей (Walkable ≤50°, SteepSlope ≤85°, Wall ≤95°, Ceiling >95°)
|
||
- Конвертация градусы ↔ радианы
|
||
- Функции инициализации и тестирования констант
|
||
- Enhanced Input System интеграция
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Корректная конвертация углов (точность <0.001)
|
||
- ✅ Все константы инициализируются при старте
|
||
- ✅ Debug вывод показывает правильные значения
|
||
- ✅ Автоматические тесты проходят
|
||
|
||
---
|
||
|
||
# Этап 2: Debug HUD система
|
||
**Цель:** Статичный debug вывод для удобной отладки
|
||
|
||
**Результат:** Профессиональная debug система
|
||
|
||
**Что реализуем:**
|
||
- Цветовое кодирование разных типов информации
|
||
- Функции переключения debug режимов
|
||
- Контроль частоты обновления HUD
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Информация отображается статично на экране
|
||
- ✅ Цветовая дифференциация работает
|
||
- ✅ Легкое включение/выключение debug режимов
|
||
- ✅ Нет влияния на производительность
|
||
|
||
---
|
||
|
||
# Этап 3: Система сообщений в виде тостов
|
||
**Цель:** Удобный вывод сообщений для отладки
|
||
|
||
**Результат:** Система сообщений в виде тостов
|
||
|
||
**Что реализуем:**
|
||
- Функции для отображения сообщений в виде тостов
|
||
- Цветовая дифференциация сообщений
|
||
- Контроль времени отображения тостов
|
||
- Подстройка положения тостов на экране в зависимости от их количества
|
||
- Анимация появления и исчезновения тостов
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Сообщения отображаются в виде тостов
|
||
- ✅ Цветовая дифференциация работает
|
||
- ✅ Тосты исчезают через заданное время
|
||
- ✅ Положение тостов адаптируется в зависимости от их количества
|
||
- ✅ Анимация появления и исчезновения тостов плавная и не вызывает рывков
|
||
|
||
---
|
||
|
||
# Этап 4: Детекция текущего игрового девайса
|
||
**Цель:** Определение типа устройства ввода (мышь/клавиатура)
|
||
|
||
**Результат:** Стабильное определение типа устройства ввода
|
||
|
||
**Что реализуем:**
|
||
- Функции определения типа устройства (E_InputDeviceType)
|
||
- Функции проверки состояния устройства (IsKeyboard, IsGamepad)
|
||
- Смена подсказок в HUD в зависимости от устройства
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Корректное определение типа устройства ввода
|
||
- ✅ Подсказки в HUD меняются в зависимости от устройства
|
||
- ✅ Легкая интеграция с Enhanced Input System
|
||
- ✅ Отсутствие ошибок при смене устройства
|
||
|
||
---
|
||
|
||
# Этап 5: Детекция поверхностей
|
||
**Цель:** Надежное определение типа поверхности под персонажем
|
||
|
||
**Результат:** Стабильная классификация Walkable/SteepSlope/Wall/Ceiling
|
||
|
||
**Что реализуем:**
|
||
- Функции классификации поверхности по нормали
|
||
- Функции запросов состояния (IsSurfaceWalkable, IsSurfaceSteep, etc.)
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Точная классификация поверхностей по углам
|
||
- ✅ Стабильное определение типа поверхности
|
||
- ✅ Корректная работа с нормалями поверхностей
|
||
- ✅ Детальная debug информация
|
||
|
||
---
|
||
|
||
# Этап 6: Вращение камерой мышкой или стиком
|
||
**Цель:** Плавное вращение камеры с учетом устройства ввода
|
||
|
||
**Результат:** Плавное управление камерой
|
||
|
||
**Что реализуем:**
|
||
- Плавное вращение камеры при движении мышью или стиком геймпада
|
||
- Учет чувствительности и инверсии осей
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Плавное вращение камеры при движении мышью
|
||
- ✅ Плавное вращение камеры при движении стиком геймпада
|
||
- ✅ Учет чувствительности и инверсии осей
|
||
- ✅ Отсутствие рывков и заиканий
|
||
|
||
---
|
||
|
||
# Этап 7: Базовое движение по земле
|
||
**Цель:** Плавное детерминированное движение по плоским поверхностям
|
||
|
||
**Результат:** Отзывчивое управление без рывков и заиканий
|
||
|
||
**Что реализуем:**
|
||
- VInterpTo для плавного ускорения и торможения
|
||
- Применение гравитации с правильным обнулением на земле
|
||
- Горизонтальное движение только на walkable поверхностях
|
||
- Ограничение максимальной скорости
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Плавное ускорение при нажатии WASD и стика геймпада
|
||
- ✅ Плавное торможение при отпускании клавиш/стика геймпада
|
||
- ✅ Скорость не превышает MaxSpeed
|
||
- ✅ Диагональное движение не быстрее прямого
|
||
- ✅ Стабильное поведение на земле
|
||
|
||
---
|
||
|
||
# Этап 8: Поворот персонажа вслед за движением
|
||
**Цель:** Плавный поворот персонажа в сторону движения
|
||
|
||
**Результат:** Персонаж естественно реагирует на направление движения
|
||
|
||
**Что реализуем:**
|
||
- При использовании мыши или стика геймпада персонаж поворачивается в сторону движения
|
||
- Учет наклона камеры для корректного поворота
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Персонаж плавно поворачивается в сторону движения
|
||
- ✅ Поворот учитывает наклон камеры
|
||
- ✅ Плавный переход между направлениями
|
||
- ✅ Нет рывков при повороте
|
||
- ✅ Персонаж не поворачивается, если не движется
|
||
- ✅ Поворот не влияет на скорость движения
|
||
|
||
---
|
||
|
||
# Этап 9: Детерминированный Sweep collision
|
||
**Цель:** Полное устранение tunneling через stepped collision detection
|
||
**Результат:** Bullet-proof система коллизий
|
||
|
||
**Что реализуем:**
|
||
- PerformDeterministicSweep с пошаговой проверкой
|
||
- HandleSweepCollision для обработки ударов
|
||
- Адаптивный размер шагов sweep
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Полное отсутствие tunneling при любых скоростях
|
||
- ✅ Стабильная Z позиция (разброс <0.5 единиц)
|
||
- ✅ Детерминированность (100% воспроизводимость)
|
||
- ✅ Performance <25 collision checks за кадр
|
||
|
||
---
|
||
|
||
# Этап 10: Обработка стен и углов
|
||
**Цель:** Плавное скольжение вдоль стен без застреваний
|
||
**Результат:** Качественная навигация в сложной геометрии
|
||
|
||
**Что реализуем:**
|
||
- Wall sliding - скольжение вдоль стен
|
||
- Corner resolution - обработка внутренних углов
|
||
- Multi-directional sweep - несколько попыток движения
|
||
- Edge detection и step-up механика
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Персонаж не застревает в углах
|
||
- ✅ Плавное скольжение вдоль стен любой геометрии
|
||
- ✅ Автоматический step-up на небольшие препятствия
|
||
- ✅ Работает в сложных лабиринтах
|
||
|
||
---
|
||
|
||
# Этап 11: Движение по склонам
|
||
**Цель:** Реалистичное поведение на наклонных поверхностях
|
||
**Результат:** Естественное движение по пандусам и скатывание
|
||
|
||
**Что реализуем:**
|
||
- Slope walking - движение вверх/вниз по склонам ≤45°
|
||
- Slope sliding - скатывание с крутых поверхностей >45°
|
||
- Ground snapping - прилипание к неровной поверхности
|
||
- Momentum preservation на склонах
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Плавный подъем по пандусам ≤45°
|
||
- ✅ Реалистичное скатывание с крутых склонов >45°
|
||
- ✅ Отсутствие "прыжков" на неровностях
|
||
- ✅ Сохранение импульса при переходах между поверхностями
|
||
|
||
---
|
||
|
||
# Этап 12: Разделение физики и рендера
|
||
**Цель:** Детерминированная физика + плавная визуализация
|
||
**Результат:** AAA-качество визуального движения
|
||
|
||
**Что реализуем:**
|
||
- Dual position system (physics + render positions)
|
||
- Position interpolation для плавности
|
||
- Fixed timestep для физики (120Hz physics, variable render)
|
||
- Smooth transitions между состояниями
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Физика остается детерминированной
|
||
- ✅ Визуально плавное движение без микрозаиканий
|
||
- ✅ Stable 60+ FPS без влияния на физику
|
||
- ✅ Smooth interpolation работает корректно
|
||
|
||
---
|
||
|
||
# Этап 13: Профессиональная камера система
|
||
**Цель:** Плавная камера уровня AAA-игр
|
||
**Результат:** Комфортная камера без рывков
|
||
|
||
**Что реализуем:**
|
||
- Camera lag и damping для плавного следования
|
||
- Look-ahead prediction (камера смотрит вперед при движении)
|
||
- Smooth rotation следования за поворотами
|
||
- Dead zone для микродвижений
|
||
- Collision avoidance для камеры
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Камера не дергается при остановке/старте
|
||
- ✅ Плавные повороты и наклоны
|
||
- ✅ Предсказание направления движения
|
||
- ✅ Нет проваливания камеры в стены
|
||
|
||
---
|
||
|
||
# Этап 14: Adaptive stepping optimization
|
||
**Цель:** Оптимизация производительности sweep системы
|
||
**Результат:** Меньше collision checks без потери качества
|
||
|
||
**Что реализуем:**
|
||
- Variable step size в зависимости от скорости
|
||
- Субпиксельная точность для медленного движения
|
||
- Performance monitoring и auto-tuning
|
||
- Spatial optimization для collision queries
|
||
|
||
**Критерии успеха:**
|
||
- ✅ <10 collision checks при обычном движении
|
||
- ✅ Субпиксельная точность при медленном движении
|
||
- ✅ Автоматическая адаптация под нагрузку
|
||
- ✅ Stable performance в сложных сценах
|
||
|
||
---
|
||
|
||
# Этап 15: Enhanced ground snapping
|
||
**Цель:** Плавное прилипание к неровным поверхностям
|
||
**Результат:** Персонаж идет по неровной геометрии без отрыва
|
||
|
||
**Что реализуем:**
|
||
- Multi-point ground detection
|
||
- Intelligent surface normal blending
|
||
- Smooth height transitions
|
||
- Predictive ground snapping
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Плавное движение по ступенькам
|
||
- ✅ Нет отрыва от неровной поверхности
|
||
- ✅ Smooth transitions на изменениях высоты
|
||
- ✅ Работает на любой сложности геометрии
|
||
|
||
---
|
||
|
||
# Этап 16: Система прыжков
|
||
**Цель:** Отзывчивое воздушное управление уровня лучших платформеров
|
||
**Результат:** Качественный платформинг с точным контролем
|
||
|
||
**Что реализуем:**
|
||
- Variable jump height (короткое/длинное нажатие)
|
||
- Air control с ограничениями и инерцией
|
||
- Coyote time (прыжок после покидания платформы)
|
||
- Jump buffering (ранние нажатия прыжка)
|
||
- Multi-jump система (опционально)
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Точный контроль высоты прыжка
|
||
- ✅ Forgiving jump timing (coyote + buffer)
|
||
- ✅ Responsive но не overpowered air control
|
||
- ✅ Плавные transitions между ground/air состояниями
|
||
|
||
---
|
||
|
||
# Этап 17: Воздушная физика
|
||
**Цель:** Реалистичная но игровая воздушная физика
|
||
**Результат:** Естественное поведение в полете
|
||
|
||
**Что реализуем:**
|
||
- Air resistance и terminal velocity
|
||
- Wind/updraft systems
|
||
- Gliding механика
|
||
- Landing impact detection и анимации
|
||
- Air-to-ground transition smoothing
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Реалистичная траектория полета
|
||
- ✅ Плавные приземления без "хлопков"
|
||
- ✅ Terminal velocity ограничивает падение
|
||
- ✅ Responsive air control без нарушения физики
|
||
|
||
---
|
||
|
||
# Этап 18: Продвинутые склоны и поверхности
|
||
**Цель:** Сложные взаимодействия с геометрией
|
||
**Результат:** Разнообразные типы поверхностей
|
||
|
||
**Что реализуем:**
|
||
- Ice surfaces (скользкие поверхности с инерцией)
|
||
- Conveyor belts (движущиеся платформы)
|
||
- Bouncy surfaces (отскакивающие поверхности)
|
||
- Sticky surfaces (замедляющие движение)
|
||
- Slope acceleration/deceleration physics
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Каждый тип поверхности ощущается уникально
|
||
- ✅ Плавные переходы между типами поверхностей
|
||
- ✅ Детерминированное поведение всех типов
|
||
- ✅ Легкая настройка параметров поверхностей
|
||
|
||
---
|
||
|
||
# Этап 19: Wall interactions
|
||
**Цель:** Продвинутые взаимодействия со стенами
|
||
**Результат:** Wall jumping, wall sliding, wall climbing
|
||
|
||
**Что реализуем:**
|
||
- Wall jumping с momentum preservation
|
||
- Wall sliding с контролем скорости
|
||
- Wall climbing на специальных поверхностях
|
||
- Corner grabbing и edge detection
|
||
- Wall run система (опционально)
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Responsive wall jumping с правильными углами
|
||
- ✅ Контролируемое wall sliding
|
||
- ✅ Smooth transitions wall ↔ ground ↔ air
|
||
- ✅ Интуитивное управление wall mechanics
|
||
|
||
---
|
||
|
||
# Этап 20: Специальные движения
|
||
**Цель:** Уникальные движения для богатого геймплея
|
||
**Результат:** Dash, ground pound, ledge grab и другие
|
||
|
||
**Что реализуем:**
|
||
- Dash/dodge с invincibility frames
|
||
- Ground pound с area impact
|
||
- Ledge grabbing и climbing
|
||
- Slide/crouch движения
|
||
- Special movement abilities
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Каждое движение ощущается impact-ful
|
||
- ✅ Smooth combinations между движениями
|
||
- ✅ Balanced timing и cooldowns
|
||
- ✅ Clear visual и audio feedback
|
||
|
||
---
|
||
|
||
# Этап 21: Performance optimization
|
||
**Цель:** 60 FPS на целевом железе в любых сценариях
|
||
**Результат:** Оптимизированная система коллизий
|
||
|
||
**Что реализуем:**
|
||
- Spatial partitioning для collision objects
|
||
- LOD system для collision complexity
|
||
- Multi-threading collision checks
|
||
- Memory pool для collision queries
|
||
- Predictive collision culling
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Stable 60+ FPS на целевом железе
|
||
- ✅ <5ms на collision detection в worst case
|
||
- ✅ Scalable performance до 100+ collision objects
|
||
- ✅ Minimal memory allocations в runtime
|
||
|
||
---
|
||
|
||
# Этап 22: Debug и профилирование tools
|
||
**Цель:** Профессиональные инструменты для тонкой настройки
|
||
**Результат:** Полный контроль над системой
|
||
|
||
**Что реализуем:**
|
||
- Visual collision debugging (rays, sweeps, contacts)
|
||
- Real-time performance metrics и profiling
|
||
- Tweakable parameters в runtime через UI
|
||
- Automated testing suite для regression testing
|
||
- Replay system для детерминированности
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Visual debugging показывает все collision queries
|
||
- ✅ Real-time параметры настраиваются без restart
|
||
- ✅ Performance metrics точные и useful
|
||
- ✅ Automated tests покрывают все основные сценарии
|
||
|
||
---
|
||
|
||
# Этап 23: Edge cases и stress testing
|
||
**Цель:** Bullet-proof система для любых условий
|
||
**Результат:** Система работает в экстремальных сценариях
|
||
|
||
**Что реализуем:**
|
||
- Extreme velocity testing (10000+ units/sec)
|
||
- Complex geometry stress tests
|
||
- Memory leak detection и prevention
|
||
- Determinism verification tools
|
||
- Edge case handling (NaN, infinity, etc.)
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Система не ломается при экстремальных значениях
|
||
- ✅ No memory leaks при длительной работе
|
||
- ✅ Determinism поддерживается в любых условиях
|
||
- ✅ Graceful degradation при перегрузке
|
||
|
||
---
|
||
|
||
# Этап 24: User experience polish
|
||
**Время:** 3-4 дня | **Сложность:** Средняя
|
||
**Цель:** Finalized user experience
|
||
**Результат:** Система ощущается как в коммерческой игре
|
||
|
||
**Что реализуем:**
|
||
- Input buffering и prediction
|
||
- Haptic feedback integration (геймпады)
|
||
- Audio feedback integration для movement
|
||
- Visual effects integration (dust, particles)
|
||
- Accessibility options
|
||
|
||
**Критерии успеха:**
|
||
- ✅ Controls ощущаются максимально responsive
|
||
- ✅ Rich feedback для всех действий
|
||
- ✅ Поддержка различных input методов
|
||
- ✅ Accessibility options работают корректно
|
||
|
||
---
|