477 lines
14 KiB
Markdown
477 lines
14 KiB
Markdown
# TengriPlatformer — Roadmap v2.0
|
||
|
||
> **Статус:** Этапы 1-12 завершены
|
||
> **Фокус:** Прототип уровня "Подвал" + полноценная система движения
|
||
> **Принцип:** Сначала базовое движение, потом механики уровня, потом полировка
|
||
|
||
---
|
||
|
||
## ✅ ЗАВЕРШЁННЫЕ ЭТАПЫ (1-12)
|
||
|
||
| # | Название | Статус |
|
||
|---|----------|--------|
|
||
| 1 | Инициализация проекта | ✅ |
|
||
| 2 | Debug HUD система | ✅ |
|
||
| 3 | Toast уведомления | ✅ |
|
||
| 4 | Камера система | ✅ |
|
||
| 5 | Детекция устройства ввода | ✅ |
|
||
| 6 | Enhanced Input настройка | ✅ |
|
||
| 7 | Базовое движение по земле | ✅ |
|
||
| 8 | Поворот персонажа | ✅ |
|
||
| 9 | Sweep collision | ✅ |
|
||
| 10 | Стены и углы (wall sliding, step-up) | ✅ |
|
||
| 11 | Ground snapping и склоны | ✅ |
|
||
| 12 | Fixed Timestep + Interpolation | ✅ |
|
||
|
||
---
|
||
|
||
# 🔴 ФАЗА 1: CORE MOVEMENT (Критический путь)
|
||
> Без этого нельзя тестировать ничего другое
|
||
|
||
---
|
||
|
||
## Этап 13: Система прыжков
|
||
**Цель:** Отзывчивое управление уровня лучших платформеров
|
||
**Блокирует:** ВСЕ механики уровня требуют прыжков
|
||
|
||
**Реализация:**
|
||
- Variable jump height (короткое/длинное нажатие)
|
||
- Air control с ограничениями и инерцией
|
||
- Coyote time (прыжок после покидания платформы, ~100-150ms)
|
||
- Jump buffering (ранние нажатия прыжка)
|
||
- Landing detection и recovery
|
||
|
||
**Критерии:**
|
||
- [ ] Точный контроль высоты прыжка
|
||
- [ ] Forgiving timing (coyote + buffer)
|
||
- [ ] Responsive но не overpowered air control
|
||
- [ ] Плавные transitions ground ↔ air
|
||
|
||
**Время:** ~4-6 часов
|
||
|
||
---
|
||
|
||
## Этап 14: Воздушная физика
|
||
**Цель:** Естественное поведение в воздухе
|
||
**Нужно для:** Качественный platforming feel
|
||
|
||
**Реализация:**
|
||
- Gravity curve (быстрее падение чем подъём)
|
||
- Terminal velocity
|
||
- Air resistance (опционально)
|
||
- Air-to-ground transition smoothing
|
||
- Landing impact (приседание при жёстком приземлении)
|
||
|
||
**Критерии:**
|
||
- [ ] Прыжок ощущается "сочно" (Mario-like arc)
|
||
- [ ] Плавные приземления
|
||
- [ ] Предсказуемая траектория
|
||
|
||
**Время:** ~3-4 часа
|
||
|
||
---
|
||
|
||
# 🟡 ФАЗА 2: LEVEL MECHANICS (Прототип "Подвал")
|
||
> Минимум для прохождения уровня от начала до конца
|
||
|
||
---
|
||
|
||
## Этап 15: Система подбора предметов
|
||
**Демо:** Подобрать камешек/кость, держать, положить
|
||
**Нужно для:** Бросок в свечу
|
||
|
||
**Реализация:**
|
||
- Pickup radius detection
|
||
- Inventory slot (1 предмет в руках)
|
||
- Hold/drop mechanics
|
||
- Visual attachment к персонажу
|
||
- Item data asset (вес, throwable flag)
|
||
|
||
**Критерии:**
|
||
- [ ] Подбор в радиусе ~100см
|
||
- [ ] Предмет визуально в руке
|
||
- [ ] Drop кладёт под ноги
|
||
|
||
**Время:** ~3-4 часа
|
||
|
||
---
|
||
|
||
## Этап 16: Система бросков
|
||
**Демо:** Кинуть камешек в свечу → свеча качается
|
||
**Нужно для:** Активация раскачивания
|
||
|
||
**Реализация:**
|
||
- Aim trajectory preview (параболическая линия)
|
||
- Throw force (зажатие = сильнее)
|
||
- Projectile physics
|
||
- Impact detection → события
|
||
- Throwable interface
|
||
|
||
**Критерии:**
|
||
- [ ] Траектория предсказуема
|
||
- [ ] Попадание триггерит события
|
||
- [ ] Можно подобрать снова
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 17: Интерактивные объекты
|
||
**Демо:** Дёрнуть кольцо, открыть дверцу шкафа
|
||
**Нужно для:** Все механизмы уровня
|
||
|
||
**Реализация:**
|
||
- IInteractable interface
|
||
- Interaction prompt UI (E / кнопка геймпада)
|
||
- State machine (open/closed, on/off)
|
||
- Single-use vs reusable
|
||
- Audio/visual feedback
|
||
|
||
**Критерии:**
|
||
- [ ] Prompt появляется в радиусе
|
||
- [ ] Состояния сохраняются
|
||
- [ ] Работает keyboard + gamepad
|
||
|
||
**Время:** ~3-4 часа
|
||
|
||
---
|
||
|
||
## Этап 18: Физика качания (Pendulum)
|
||
**Демо:** Свеча качается, клетка качается синхронно
|
||
**Нужно для:** Побег из клетки, тарзанка
|
||
|
||
**Реализация:**
|
||
- Pendulum physics (угол, длина, затухание)
|
||
- Player-induced swing (нажатия в такт)
|
||
- Swing transfer (синхронизация объектов)
|
||
- Impact trigger (свеча → верёвка)
|
||
|
||
**Критерии:**
|
||
- [ ] Физика реалистична
|
||
- [ ] Раскачка интуитивна
|
||
- [ ] Объекты синхронизируются
|
||
|
||
**Время:** ~5-6 часов
|
||
|
||
---
|
||
|
||
## Этап 19: Система огня
|
||
**Демо:** Свеча поджигает верёвку → верёвка сгорает
|
||
**Нужно для:** Падение клетки
|
||
|
||
**Реализация:**
|
||
- Fire source component
|
||
- Flammable component
|
||
- Burn duration → destruction
|
||
- Visual fire effect (Niagara)
|
||
- Fire spread (опционально)
|
||
|
||
**Критерии:**
|
||
- [ ] Поджог требует контакта
|
||
- [ ] Горение → разрушение
|
||
- [ ] Визуально убедительно
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 20: Система верёвки (Rope)
|
||
**Демо:** Накинуть верёвку на крюк, качнуться через котёл
|
||
**Нужно для:** Тарзанка
|
||
|
||
**Реализация:**
|
||
- Rope throw targeting
|
||
- Attach point detection
|
||
- Rope physics (длина, натяжение)
|
||
- Swing while attached (использует Pendulum)
|
||
- Dismount с сохранением momentum
|
||
|
||
**Критерии:**
|
||
- [ ] Верёвка цепляется за валидные точки
|
||
- [ ] Качание как pendulum
|
||
- [ ] Отпустить = сохранить скорость
|
||
|
||
**Время:** ~6-8 часов
|
||
|
||
---
|
||
|
||
## Этап 21: Система временных бафов
|
||
**Демо:** Выпить зелье → прыжок выше на 10 сек
|
||
**Нужно для:** Прыгучее зелье
|
||
|
||
**Реализация:**
|
||
- Buff data asset (тип, длительность, множитель)
|
||
- Active buffs container
|
||
- Buff UI (иконка + таймер)
|
||
- Stat modification
|
||
- Consumable integration
|
||
|
||
**Критерии:**
|
||
- [ ] Визуальный эффект на персонаже
|
||
- [ ] Таймер виден
|
||
- [ ] Эффект заканчивается плавно
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 22: Головоломка с зеркалом
|
||
**Демо:** Шкаф невидим напрямую, виден в отражении
|
||
**Нужно для:** Шкаф с зельями
|
||
|
||
**Реализация:**
|
||
- View frustum check
|
||
- Mirror render target
|
||
- Conditional visibility
|
||
- "Blind interaction"
|
||
- Shimmer effect (намёк)
|
||
|
||
**Критерии:**
|
||
- [ ] Исчезает при прямом взгляде
|
||
- [ ] Виден в зеркале
|
||
- [ ] Можно взаимодействовать вслепую
|
||
|
||
**Время:** ~6-8 часов
|
||
|
||
---
|
||
|
||
## Этап 23: Складные механизмы
|
||
**Демо:** Дёрнуть кольцо → лестница разворачивается
|
||
**Нужно для:** Лестница к люку
|
||
|
||
**Реализация:**
|
||
- Deployable base class
|
||
- Trigger mechanisms (кольцо, бросок)
|
||
- Deployment animation
|
||
- Safety check (не придавить игрока)
|
||
|
||
**Критерии:**
|
||
- [ ] Активация от разных источников
|
||
- [ ] Плавная анимация
|
||
- [ ] Можно использовать после deployment
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 24: Взбирание (Climbing)
|
||
**Демо:** Залезть по лестнице к люку
|
||
**Нужно для:** Финальный выход
|
||
|
||
**Реализация:**
|
||
- Climbable surface detection
|
||
- Climb state machine
|
||
- Climb movement (вверх/вниз)
|
||
- Dismount (вверху, внизу, в сторону)
|
||
|
||
**Критерии:**
|
||
- [ ] Автоцепляние к лестнице
|
||
- [ ] Плавное движение
|
||
- [ ] Выход наверху без рывков
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
# 🟢 ФАЗА 3: POLISH & ADVANCED MOVEMENT
|
||
> После играбельного прототипа
|
||
|
||
---
|
||
|
||
## Этап 25: Профессиональная камера
|
||
**Цель:** AAA-уровень камеры
|
||
|
||
**Реализация:**
|
||
- Camera lag и damping
|
||
- Look-ahead prediction
|
||
- Dead zone для микродвижений
|
||
- Collision avoidance (sphere trace)
|
||
- Character highlight когда за препятствием
|
||
|
||
**Критерии:**
|
||
- [ ] Нет рывков при старте/остановке
|
||
- [ ] Камера не проваливается в стены
|
||
- [ ] Плавные повороты
|
||
|
||
**Время:** ~5-6 часов
|
||
|
||
---
|
||
|
||
## Этап 26: Wall interactions
|
||
**Цель:** Продвинутые взаимодействия со стенами
|
||
|
||
**Реализация:**
|
||
- Wall jumping с momentum
|
||
- Wall sliding с контролем скорости
|
||
- Corner grabbing
|
||
- Ledge detection
|
||
|
||
**Критерии:**
|
||
- [ ] Responsive wall jump
|
||
- [ ] Smooth transitions wall ↔ ground ↔ air
|
||
|
||
**Время:** ~6-8 часов
|
||
|
||
---
|
||
|
||
## Этап 27: Специальные движения
|
||
**Цель:** Dash, ground pound, ledge grab
|
||
|
||
**Реализация:**
|
||
- Dash/dodge с i-frames
|
||
- Ground pound с area impact
|
||
- Ledge grabbing и climbing
|
||
- Slide/crouch
|
||
|
||
**Критерии:**
|
||
- [ ] Каждое движение impactful
|
||
- [ ] Smooth combinations
|
||
|
||
**Время:** ~6-8 часов
|
||
|
||
---
|
||
|
||
## Этап 28: Продвинутые поверхности
|
||
**Цель:** Разнообразие типов поверхностей
|
||
|
||
**Реализация:**
|
||
- Ice (скользкие)
|
||
- Conveyor belts
|
||
- Bouncy surfaces
|
||
- Sticky surfaces
|
||
|
||
**Критерии:**
|
||
- [ ] Каждый тип уникален
|
||
- [ ] Плавные переходы между типами
|
||
|
||
**Время:** ~5-6 часов
|
||
|
||
---
|
||
|
||
## Этап 29: Audio система
|
||
**Цель:** Звуковой feedback
|
||
|
||
**Реализация:**
|
||
- Footstep sounds (по типу поверхности)
|
||
- Jump/land sounds
|
||
- Interaction sounds
|
||
- Ambient audio
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 30: Debug и профилирование
|
||
**Цель:** Инструменты для тонкой настройки
|
||
|
||
**Реализация:**
|
||
- Visual collision debugging
|
||
- Runtime tweakable parameters
|
||
- Performance metrics
|
||
- Replay system для детерминированности
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
## Этап 31: Edge cases и stress testing
|
||
**Цель:** Bullet-proof система
|
||
|
||
**Реализация:**
|
||
- Extreme velocity testing
|
||
- Complex geometry stress tests
|
||
- Memory leak detection
|
||
- NaN/infinity handling
|
||
|
||
**Время:** ~3-4 часа
|
||
|
||
---
|
||
|
||
## Этап 32: UX Polish
|
||
**Цель:** Commercial game feel
|
||
|
||
**Реализация:**
|
||
- Input buffering refinement
|
||
- Haptic feedback (gamepad)
|
||
- Visual effects (dust, particles)
|
||
- Accessibility options
|
||
|
||
**Время:** ~4-5 часов
|
||
|
||
---
|
||
|
||
# 🔵 ФАЗА 4: CONTENT
|
||
> После полировки движения
|
||
|
||
---
|
||
|
||
## Этап 33: Level transition
|
||
Переход люк → кухня
|
||
|
||
## Этап 34: Save/Checkpoint
|
||
Сохранение прогресса
|
||
|
||
## Этап 35: Второй уровень
|
||
Кухня первого этажа
|
||
|
||
---
|
||
|
||
## ЗАВИСИМОСТИ
|
||
|
||
```
|
||
ФАЗА 1 (Core Movement)
|
||
[13: Прыжки] ──► [14: Воздушная физика]
|
||
│
|
||
▼
|
||
ФАЗА 2 (Level Mechanics)
|
||
│
|
||
├──► [15: Подбор] ──► [16: Броски] ───┐
|
||
│ │
|
||
├──► [17: Интерактивы] ───────────────┤
|
||
│ │
|
||
├──► [18: Качание] ──► [19: Огонь] ───┼──► КЛЕТКА
|
||
│ │ │
|
||
│ └──► [20: Верёвка] ──────────┼──► ТАРЗАНКА
|
||
│ │
|
||
├──► [21: Бафы] ──┬──► [22: Зеркало] ──┼──► ШКАФ
|
||
│ │ │
|
||
└──► [23: Механизмы] ──► [24: Climbing]┴──► ЛЮКЙ
|
||
```
|
||
|
||
---
|
||
|
||
## ОЦЕНКА ВРЕМЕНИ
|
||
|
||
| Фаза | Этапы | Часы | Результат |
|
||
|------|-------|------|-----------|
|
||
| 1: Core | 13-14 | ~7-10 | Прыжки работают |
|
||
| 2: Level | 15-24 | ~44-58 | Уровень проходим |
|
||
| 3: Polish | 25-32 | ~37-47 | AAA feel |
|
||
| 4: Content | 33-35 | ~10-15 | Больше контента |
|
||
| **Итого** | | **~98-130** | |
|
||
|
||
**MVP (Фазы 1-2):** ~51-68 часов = **13-17 дней** (при 4ч/день)
|
||
**Polished (+ Фаза 3):** ~88-115 часов = **22-29 дней**
|
||
|
||
---
|
||
|
||
## КРИТИЧЕСКИЙ ПУТЬ ДО MVP
|
||
|
||
```
|
||
13 → 14 → 15 → 16 → 17 → 18 → 19 → 20 → 21 → 22 → 23 → 24
|
||
▲
|
||
│
|
||
START HERE
|
||
```
|
||
|
||
Каждый этап даёт демонстрируемый результат.
|
||
|
||
---
|
||
|
||
## ПРИМЕЧАНИЯ
|
||
|
||
1. **Debug HUD** — используем UE инструменты (Gameplay Debugger, etc.)
|
||
2. **Тесты** — отложены до Фазы 3
|
||
3. **C++** — продолжаем использовать для производительности
|
||
4. **Итерации** — после каждого этапа можно показать прогресс
|