413 lines
19 KiB
Markdown
413 lines
19 KiB
Markdown
# Game Requirements
|
||
|
||
## Overview
|
||
|
||
Хардкорный roguelite-платформер с процедурной генерацией уровней. Игрок собирает монетки, избегая врагов и ловушек. Уникальная механика оружия — оглушающие "газовые" снаряды. Между забегами игрок тратит накопленную валюту на апгрейды в магазине.
|
||
|
||
---
|
||
|
||
## Core Gameplay
|
||
|
||
### Цель игры
|
||
- Собрать все монетки на уровне
|
||
- Избегать контакта с врагами и ловушками
|
||
- Пройти как можно больше уровней
|
||
- Накопить валюту для покупки апгрейдов
|
||
|
||
### Персонаж
|
||
- Базовое управление: движение влево/вправо, прыжок
|
||
- Оружие: выпускает оглушающие снаряды ("пуки")
|
||
- Смерть при любом контакте с активным врагом (one-hit kill по умолчанию)
|
||
|
||
### Система снарядов
|
||
- Максимум **3 снаряда** в запасе (базовое значение)
|
||
- После использования снаряд **восстанавливается через время** (~3 сек)
|
||
- Нельзя "спамить" — требуется тактическое использование
|
||
- Снаряд оглушает врага при попадании
|
||
- Направление выстрела: в сторону движения персонажа
|
||
|
||
### Враги
|
||
|
||
#### Типы врагов
|
||
| Тип | Поведение | Появляется с уровня |
|
||
|-----|-----------|---------------------|
|
||
| **Патрульный** | Ходит туда-сюда по платформе | 1 |
|
||
| **Прыгун** | Прыгает по платформам вертикально | 3 |
|
||
| **Летун** | Летает по фиксированной траектории | 5 |
|
||
| **Преследователь** | Медленно движется к игроку | 7 |
|
||
| **Спринтер** | Патрульный, но быстрый | 10 |
|
||
|
||
#### Состояния врагов
|
||
- **Активное**: опасны, убивают при контакте
|
||
- **Оглушённое**: безопасны, можно проходить сквозь
|
||
- Оглушение действует **3 секунды** (базовое значение), затем враг восстанавливается
|
||
- Визуальный индикатор времени оглушения над врагом (круговой таймер)
|
||
|
||
### Ловушки
|
||
|
||
| Тип | Поведение | Появляется с уровня |
|
||
|-----|-----------|---------------------|
|
||
| **Шипы** | Статичные, мгновенная смерть | 2 |
|
||
| **Падающая платформа** | Падает через 0.5сек после наступания | 4 |
|
||
| **Пила** | Движется по траектории | 6 |
|
||
| **Турель** | Стреляет снарядами с интервалом | 8 |
|
||
| **Лазер** | Включается/выключается по таймеру | 10 |
|
||
|
||
### Прогрессия уровней
|
||
- После сбора всех монеток — переход на следующий уровень
|
||
- С каждым уровнем сложность увеличивается:
|
||
- Больше врагов
|
||
- Новые типы врагов
|
||
- Появляются ловушки
|
||
- Больше монеток (нужно больше собрать)
|
||
- Сложнее структура уровня
|
||
|
||
---
|
||
|
||
## Game Feel (Критически важно)
|
||
|
||
### Coyote Time
|
||
- Игрок может прыгнуть в течение **100мс** после схода с платформы
|
||
- Незаметно для игрока, но убирает фрустрацию от "несправедливых" смертей
|
||
|
||
### Input Buffering (Jump Buffer)
|
||
- Если прыжок нажат за **100мс** до приземления — прыжок выполнится автоматически
|
||
- Предотвращает ощущение "съеденных" инпутов
|
||
|
||
### Variable Jump Height
|
||
- Короткое нажатие = низкий прыжок
|
||
- Длинное нажатие = высокий прыжок
|
||
- Даёт точный контроль над персонажем
|
||
|
||
### Edge Correction
|
||
- Если персонаж чуть-чуть не допрыгнул до края платформы — подтянуть на ~4 пикселя
|
||
- Работает только для небольших расстояний
|
||
|
||
### Responsive Controls
|
||
- Минимальное время разгона/торможения
|
||
- Мгновенная смена направления
|
||
- Никакой "скользкости"
|
||
|
||
---
|
||
|
||
## Visual Juice
|
||
|
||
### Частицы
|
||
- Пыль при приземлении
|
||
- Пыль при беге (каждые N кадров)
|
||
- Облачко при выстреле снарядом
|
||
- "Звёздочки" при оглушении врага
|
||
- Блеск/свечение монеток
|
||
- Взрыв частиц при смерти персонажа
|
||
|
||
### Screen Shake
|
||
- Лёгкая тряска при смерти
|
||
- Микро-тряска при оглушении врага
|
||
- **Обязательно**: опция отключения в настройках
|
||
|
||
### Squash & Stretch
|
||
- Персонаж вытягивается вертикально при прыжке
|
||
- Сжимается горизонтально при приземлении
|
||
- Враги "сплющиваются" при оглушении
|
||
- Монетки слегка пульсируют
|
||
|
||
### Хитстоп (Freeze Frame)
|
||
- Микро-пауза (2-3 кадра) при попадании снарядом во врага
|
||
- Усиливает ощущение импакта
|
||
|
||
---
|
||
|
||
## Meta-Progression System
|
||
|
||
### Валюта
|
||
- **Газокоины** — основная мета-валюта
|
||
- Все монетки собранные за забег конвертируются в газокоины после смерти
|
||
- Конверсия: 1 монетка = 1 газокоин
|
||
- Бонус за пройденные уровни: +10% за каждый уровень
|
||
|
||
### Магазин апгрейдов
|
||
|
||
Философия: апгрейды **разнообразят** игру и дают **небольшие** преимущества, но НЕ делают её лёгкой. Многие апгрейды — это tradeoff'ы (плюс в одном, минус в другом).
|
||
|
||
#### Категория: Персонаж
|
||
|
||
| Апгрейд | Эффект | Цена | Примечание |
|
||
|---------|--------|------|------------|
|
||
| **Лёгкие ботинки** | +10% скорость бега | 100 | — |
|
||
| **Пружинные ботинки** | +15% высота прыжка | 150 | — |
|
||
| **Тяжёлая броня** | +1 жизнь за забег | 500 | -15% скорость |
|
||
| **Двойной прыжок** | Можно прыгнуть в воздухе | 800 | — |
|
||
| **Dash** | Рывок по нажатию, 2сек кулдаун | 600 | — |
|
||
| **Скользкий** | Неуязвим 0.5сек после урона | 400 | Работает только с доп. жизнями |
|
||
|
||
#### Категория: Оружие
|
||
|
||
| Апгрейд | Эффект | Цена | Примечание |
|
||
|---------|--------|------|------------|
|
||
| **Большой запас** | +1 снаряд (макс. 4) | 300 | — |
|
||
| **Быстрая перезарядка** | -20% время восстановления | 250 | — |
|
||
| **Дальнобойность** | +30% дальность полёта снаряда | 200 | — |
|
||
| **Мощное оглушение** | +1сек время оглушения | 350 | — |
|
||
| **Разрывной снаряд** | Снаряд оглушает врагов в радиусе | 700 | -1 снаряд в запасе |
|
||
| **Рикошет** | Снаряд отскакивает от стен 1 раз | 450 | — |
|
||
| **Скорострел** | -40% время перезарядки | 400 | -30% время оглушения |
|
||
|
||
#### Категория: Выживание
|
||
|
||
| Апгрейд | Эффект | Цена | Примечание |
|
||
|---------|--------|------|------------|
|
||
| **Второй шанс** | 1 раз за забег: воскрешение на месте | 1000 | Одноразовый за забег |
|
||
| **Магнит** | Монетки притягиваются с расстояния | 200 | — |
|
||
| **Орлиный глаз** | Видно весь уровень на мини-карте | 300 | — |
|
||
| **Чутьё опасности** | Враги подсвечиваются за экраном | 250 | — |
|
||
| **Ловкач** | Hitbox персонажа уменьшен на 10% | 600 | — |
|
||
|
||
#### Категория: Риск/Награда
|
||
|
||
| Апгрейд | Эффект | Цена | Примечание |
|
||
|---------|--------|------|------------|
|
||
| **Жадность** | +50% монеток на уровне | 400 | +25% врагов |
|
||
| **Хардкор** | x2 очки | 300 | Нет coyote time |
|
||
| **Берсерк** | +30% скорость, бесконечные снаряды | 500 | Активируется на 10сек при 0 HP (перед смертью) |
|
||
| **Пацифист** | x3 очки за уровень | 350 | Нельзя использовать снаряды |
|
||
| **Спидран** | +100 очков за каждые 10сек до таймера | 200 | Таймер 60сек на уровень, смерть по истечении |
|
||
|
||
#### Категория: Косметика (не влияет на геймплей)
|
||
|
||
| Апгрейд | Эффект | Цена |
|
||
|---------|--------|------|
|
||
| **Скин: Космонавт** | Новый вид персонажа | 150 |
|
||
| **Скин: Рыцарь** | Новый вид персонажа | 150 |
|
||
| **Скин: Ниндзя** | Новый вид персонажа | 150 |
|
||
| **След: Радуга** | Радужный след при беге | 100 |
|
||
| **След: Огонь** | Огненный след | 100 |
|
||
| **Снаряд: Облачко** | Другой вид снаряда | 50 |
|
||
| **Снаряд: Сердечко** | Другой вид снаряда | 50 |
|
||
|
||
### Система разблокировок
|
||
|
||
Некоторые апгрейды требуют достижений для разблокировки покупки:
|
||
|
||
| Апгрейд | Требование |
|
||
|---------|------------|
|
||
| Двойной прыжок | Дойти до уровня 5 |
|
||
| Dash | Собрать 500 монеток за один забег |
|
||
| Второй шанс | Умереть 50 раз |
|
||
| Хардкор | Пройти уровень без использования снарядов |
|
||
| Берсерк | Оглушить 100 врагов |
|
||
| Пацифист | Дойти до уровня 3 без снарядов |
|
||
|
||
### Баланс хардкорности
|
||
|
||
Принципы сохранения сложности:
|
||
1. **Базовая игра остаётся one-hit kill** — доп. жизни дорогие и имеют штрафы
|
||
2. **Tradeoff'ы** — большинство сильных апгрейдов имеют минусы
|
||
3. **Сложность масштабируется** — чем больше апгрейдов, тем сложнее уровни
|
||
4. **Потолок силы** — апгрейды не стакаются бесконечно
|
||
5. **Риск/награда** — самые выгодные апгрейды усложняют игру
|
||
|
||
---
|
||
|
||
## Level Generation
|
||
|
||
### Подход: комнатная генерация (Spelunky-style)
|
||
- Уровень — сетка из "комнат" (например, 4x4)
|
||
- Каждая комната — готовый шаблон
|
||
- Алгоритм гарантирует путь от входа до всех монеток
|
||
- Шаблоны подбираются по сложности уровня
|
||
|
||
### Параметры генерации по уровням
|
||
|
||
| Уровень | Комнат | Монеток | Врагов | Ловушек |
|
||
|---------|--------|---------|--------|---------|
|
||
| 1-2 | 6-8 | 5-8 | 2-3 | 0 |
|
||
| 3-5 | 8-10 | 8-12 | 4-6 | 1-2 |
|
||
| 6-9 | 10-12 | 12-16 | 6-8 | 3-4 |
|
||
| 10+ | 12-16 | 16-20 | 8-12 | 5-6 |
|
||
|
||
### Seed система
|
||
- Каждый уровень имеет seed
|
||
- Seed отображается на экране паузы
|
||
- Можно ввести seed для воспроизведения уровня (отдельный режим, без влияния на лидерборд)
|
||
|
||
---
|
||
|
||
## Scoring System
|
||
|
||
### Базовые очки
|
||
- Монетка: **10 очков**
|
||
- Завершение уровня: **100 очков × номер уровня**
|
||
- Оглушение врага: **5 очков**
|
||
|
||
### Комбо-система
|
||
- Сбор монеток без паузы увеличивает множитель
|
||
- Пауза >2сек сбрасывает комбо
|
||
- Множители: x1 → x2 → x3 → x5 → x10 (макс)
|
||
- Попадание снарядом во врага не сбрасывает комбо
|
||
|
||
### Бонусы за уровень
|
||
- **Быстрое прохождение** (<30 сек): +50% очков за уровень
|
||
- **Без урона** (если есть доп. жизни): +25% очков
|
||
- **Без снарядов**: +100% очков
|
||
|
||
---
|
||
|
||
## UI/UX
|
||
|
||
### HUD (во время игры)
|
||
- Счётчик монеток: "собрано / всего"
|
||
- Индикатор снарядов (иконки с cooldown-анимацией)
|
||
- Текущее комбо (если активно)
|
||
- Номер уровня
|
||
- Очки
|
||
- Мини-карта (если куплен апгрейд)
|
||
- HP (если есть доп. жизни)
|
||
|
||
### Экран паузы
|
||
- Продолжить
|
||
- Настройки
|
||
- Seed уровня
|
||
- Выход в меню (с подтверждением)
|
||
|
||
### Game Over экран
|
||
- Финальный счёт
|
||
- Статистика забега:
|
||
- Пройдено уровней
|
||
- Собрано монеток
|
||
- Оглушено врагов
|
||
- Время игры
|
||
- Заработано газокоинов
|
||
- Кнопка "В магазин"
|
||
- Кнопка "Играть снова"
|
||
- Таблица лидеров
|
||
|
||
### Главное меню
|
||
- Играть
|
||
- Магазин
|
||
- Лидерборд
|
||
- Настройки
|
||
- Достижения
|
||
|
||
### Настройки
|
||
- Громкость музыки
|
||
- Громкость звуков
|
||
- Screen shake: вкл/выкл
|
||
- Показывать FPS
|
||
- Сбросить прогресс (с подтверждением)
|
||
|
||
---
|
||
|
||
## Power-ups (внутри забега)
|
||
|
||
Редкие предметы, появляющиеся на уровнях:
|
||
|
||
| Power-up | Эффект | Длительность |
|
||
|----------|--------|--------------|
|
||
| **Щит** | Защита от 1 удара | До использования |
|
||
| **Магнит** | Притягивает монетки | 15 сек |
|
||
| **Часы** | Замедляет врагов на 50% | 10 сек |
|
||
| **Кофе** | +50% скорость персонажа | 10 сек |
|
||
| **Бесконечность** | Бесконечные снаряды | 8 сек |
|
||
| **Призрак** | Проход сквозь врагов | 5 сек |
|
||
|
||
Появление: 10% шанс на уровне, максимум 1 power-up на уровень.
|
||
|
||
---
|
||
|
||
## Technical Requirements
|
||
|
||
### Платформа
|
||
- Браузер (desktop)
|
||
- Поддержка клавиатуры
|
||
- Возможно: геймпад (future)
|
||
|
||
### Управление
|
||
|
||
| Действие | Клавиатура | Геймпад (future) |
|
||
|----------|------------|------------------|
|
||
| Движение | A/D или ←/→ | Left Stick / D-Pad |
|
||
| Прыжок | W / ↑ / Space | A / X |
|
||
| Стрельба | F / J / Enter | B / Square |
|
||
| Dash (если куплен) | Shift / K | RB / R1 |
|
||
| Пауза | Escape / P | Start |
|
||
|
||
### Производительность
|
||
- 60 FPS на современных браузерах
|
||
- Минимальное разрешение: 800x600
|
||
- Рекомендуемое: 1280x720
|
||
|
||
### Хранение данных (MVP)
|
||
- localStorage для:
|
||
- Газокоины (валюта)
|
||
- Купленные апгрейды
|
||
- Активные апгрейды
|
||
- Лидерборд (топ-10)
|
||
- Достижения
|
||
- Настройки
|
||
|
||
---
|
||
|
||
## MVP Scope
|
||
|
||
### Фаза 1: Core Loop
|
||
- [ ] Движение персонажа с game feel (coyote time, input buffer, variable jump)
|
||
- [ ] Система снарядов
|
||
- [ ] Базовый враг (патрульный)
|
||
- [ ] Механика оглушения
|
||
- [ ] Сбор монеток
|
||
- [ ] Процедурная генерация (простая)
|
||
- [ ] Переход между уровнями
|
||
- [ ] Game Over
|
||
|
||
### Фаза 2: Juice & Polish
|
||
- [ ] Частицы (пыль, эффекты)
|
||
- [ ] Squash & stretch анимации
|
||
- [ ] Screen shake (с опцией отключения)
|
||
- [ ] Звуковые эффекты
|
||
- [ ] Базовая музыка
|
||
|
||
### Фаза 3: Meta-Progression
|
||
- [ ] Система газокоинов
|
||
- [ ] Магазин с апгрейдами (5-10 базовых)
|
||
- [ ] Сохранение прогресса
|
||
- [ ] Экран Game Over со статистикой
|
||
|
||
### Фаза 4: Content
|
||
- [ ] Дополнительные типы врагов (3-4)
|
||
- [ ] Ловушки (2-3 типа)
|
||
- [ ] Power-ups (3-4 типа)
|
||
- [ ] Больше апгрейдов в магазине
|
||
- [ ] Достижения
|
||
|
||
### Фаза 5: Polish
|
||
- [ ] Комбо-система
|
||
- [ ] Лидерборд
|
||
- [ ] Полный UI/UX
|
||
- [ ] Баланс сложности
|
||
- [ ] Seed система
|
||
|
||
### Отложено на будущее
|
||
- [ ] Бекенд для глобального лидерборда
|
||
- [ ] Ежедневные челленджи (один seed на день)
|
||
- [ ] Боссы
|
||
- [ ] Мобильная версия
|
||
- [ ] Мультиплеер (гонка)
|
||
- [ ] Steam-релиз
|
||
|
||
---
|
||
|
||
## Достижения
|
||
|
||
| Достижение | Условие | Награда |
|
||
|------------|---------|---------|
|
||
| Первые шаги | Пройти уровень 1 | 10 газокоинов |
|
||
| Коллекционер | Собрать 1000 монеток (всего) | 50 газокоинов |
|
||
| Мастер оглушения | Оглушить 100 врагов | Разблокировка "Берсерк" |
|
||
| Пацифист | Пройти уровень без снарядов | Разблокировка "Пацифист" |
|
||
| Марафонец | Дойти до уровня 10 | 100 газокоинов |
|
||
| Скоростной забег | Пройти 5 уровней за 3 минуты | 75 газокоинов |
|
||
| Неубиваемый | Пройти 3 уровня с 1HP без урона | 150 газокоинов |
|
||
| Богач | Накопить 5000 газокоинов | Скин "Золотой" |
|
||
| Комбо-мастер | Собрать x10 комбо | 50 газокоинов |
|
||
| Умер 100 раз | Умереть 100 раз | Скин "Призрак" |
|