Игровой Дизайн-Документ · v2.0 · Актуально

GRAVITRIS

Тетрис, где падают не фигуры — а сам колодец качается, смещается и живёт своей жизнью

Жанр
Puzzle / Action
Платформа
Web / Mobile
Статус
Alpha
Версия
GDD 2.0
// 01

Видение проекта

«Что если в тетрис можно было бы играть, наклоняя стакан — как реальный физический сосуд с кубиками внутри?»

GRAVITRIS — реинтерпретация классического тетриса, построенная на одной радикальной инверсии: игрок управляет не падающей фигурой, а самим колодцем.

⚖️
Инверсия контроля

Управляй пространством, а не объектом. Это меняет всю ментальную модель.

🌊
Физическое ощущение

Колодец ощущается как реальный сосуд — инерция, качание, вес, вибрация.

Максимальный сок

Каждое действие — событие. Звук, свет, анимация, частицы. Игра живая.

🧩
Знакомое чтение

Опытный тетрис-игрок поймёт цель с первого взгляда, но учится заново.

// 02

Ключевая механика

Цикловой сдвиг колодца

При нажатии ← или → все занятые ячейки в колодце сдвигаются на одну позицию. Блоки, выходящие за правую границу, появляются слева — и наоборот. Это торoidальная топология по горизонтали. Падающая фигура при этом не смещается.

Исключение — режим MAGNET: там ← → двигают саму фигуру, а сдвиг колодца прижимает блоки к стенке без оборачивания.

Схема управления

КлавишаОбычные режимыРежим Magnet
← →Циклический сдвиг колодцаДвигает падающую фигуру
↑ / ZВращение фигурыВращение фигуры
Мягкий дропМягкий дроп
ПробелЖёсткий дропЖёсткий дроп
C / ShiftHoldHold
PПаузаПауза

Правила сдвига

// 03

Геймплей

Поле и фигуры

Поле 10×20 ячеек. Классические тетромино I, O, T, S, Z, J, L. Набор 7-bag.

Прогрессия сложности

УровеньСкорость паденияОсобенности
1–31.0 с/клеткаБазовая механика
4–90.6–0.35 с/клеткаНарастающий темп
10–150.3–0.2 с/клеткаПодключаются слои музыки
16+≤0.15 с/клеткаГравитационный импульс активен

Система очков

СобытиеОчки
1 линия (Single)100 × уровень
2 линии (Double)300 × уровень
3 линии (Triple)500 × уровень
4 линии (Tetris)800 × уровень
Комбо+50 × номер комбо
Мягкий дроп1 за клетку
Жёсткий дроп2 за клетку

Гравитационный импульс (уровень 16+)

Каждые 15–35 секунд — случайный авто-сдвиг на 1–3 позиции. За 2.5 секунды до удара: нарастающий гул + красная подсветка рамки колодца. При ударе: белая вспышка, встряска, кольцо частиц из центра.

// 04

Режимы игры

Marathon

До game over. Уровни 1–20+. Таймер в HUD. Основной режим.

Sprint 40

Очистить 40 линий максимально быстро. Рекорд по времени.

Ultra 2min

Максимум очков за 2 минуты. Старт с уровня 15. Таймер обратного отсчёта с миганием в последние 20 сек.

🌊
Tsunami

Колодец автоматически сдвигается волнами, синхронно с ритмом. Период сокращается с уровнем. Прогресс-бар волны внизу.

🧲
Magnet

← → двигают фигуру, а не колодец. При сдвиге блоки прижимаются к стенке без wrap. Классическая механика позиционирования + новая физика поля.

💥
Chaos

Каждые 20 сек — случайный эффект: инверсия стрелок, темнота, двойной сдвиг, качка, ускорение ×3, мега-гравитация. HUD показывает обратный отсчёт.

Эффекты режима Chaos

ЭффектДлительностьОписание
Инверсия8 с← и → меняются местами
Темнота6 сЛежащие блоки почти невидимы
Двойной сдвиг7 сКаждый сдвиг смещает на 2 позиции
Качка6 сПри активации случайно вращает фигуру
Скорость5 сПадение в 3× быстрее
Мега-гравитациямгновенно3 авто-сдвига подряд
// 05

Визуал и эффекты

Цвета блоков

I#00e5ff
O#ffe600
T#b000ff
S#00ff85
Z#ff2d55
J#2255ff
L#ff8800

Анимации колодца

Наклон (опционально)

±3° пружинная анимация при каждом сдвиге. Отключается в настройках профиля.

Встряска

При посадке, Tetris, дропе, импульсе — разная интенсивность.

Glow колодца

Зелёный → красный по мере заполнения. Только на критическом уровне (>75%).

Предупреждение импульса

Красная рамка нарастает за 2.5с до удара.

Система частиц

8 скинов блоков

СкинРазблокировкаЭффект
КлассикаВсегда3D-блок с фаской и подсветкой
НеонУровень профиля 3Тёмный фон, светящийся контур, точки в углах
СтеклоУровень профиля 6Полупрозрачный, блик, диагональный отсвет
Пиксель100 линийЧекерборд 4px пикселей
МеталлДостижение TETRISBrushed metal, горизонтальные штрихи, бевел
ЛаваУровень профиля 10Пульсирующий жар, живая анимация
ПустотаPerfect ClearЗвёздная пыль, пульсирующий контур
Голограмма50 игрСканлайны, мерцание, угловые скобки
// 06

Аудио

Весь звук генерируется процедурно через Web Audio API — никаких семплов. Полная независимость от внешних ресурсов.

Адаптивная музыка — 5 слоёв

СлойАктивируетсяОписание
DrumsС уровня 1Kick, snare, hi-hat. Паттерн усложняется с уровня 6
BassС уровня 3Sawtooth бас по D-minor pentatonic. Вариация с уровня 8
LeadС уровня 6Square-мелодия. Более сложная вариация с уровня 12
PadС уровня 10Мягкие треугольные аккорды Dm/Cm, долгое затухание
Danger droneПри заполнении >75%Sine-осциллятор, нарастает до критической высоты. Мгновенно глушится при game over

BPM и завершение

SFX

// 07

XP и достижения

Система уровней игрока

Отдельно от игровых уровней — глобальный уровень профиля. Сохраняется в localStorage. XP за игру: 10 базово + бонус за уровень, линии, очки, тетрисы, perfect clear.

В авто-демо режиме XP и достижения не начисляются.

18 достижений

ДостижениеУсловиеXP
Первый сдвигСдвинуть колодец 1 раз20
Сдвигатель100 сдвигов суммарно50
Вихрь1000 сдвигов суммарно150
TETRIS!4 линии за раз80
Пироман5 Tetris в одной игре200
Комбо-машинаКомбо x5100
100 линийСуммарно 100 линий60
СтроительСуммарно 1000 линий200
Глубокий колодецУровень игры 10120
В стратосферуУровень игры 20300
ФинишёрЗавершить Sprint 40100
МолнияSprint 40 быстрее 30 сек250
УльтраЗавершить Ultra 2min100
СерферВыжить в Tsunami100
Идеальный колодецPerfect Clear300
Сто тысяч100 000 очков в одной игре200
Регуляр10 игр80
Ветеран50 игр250
// 08

Косметика

Все скины блоков рендерятся процедурно через Canvas API. Скины Лава, Пустота и Голограмма анимированы — меняются каждый кадр через Date.now().

Выбор скина доступен в профиле. Заблокированные скины отображаются серыми с иконкой замка и условием разблокировки. Выбор сохраняется в localStorage.

Настройки

// 09

Авто-демо

Режим автоматической игры с AI-ботом. Запускается кнопкой «▶ Авто-демо» в главном меню.

Алгоритм бота

Поведение

// 10

Мобильная версия

Адаптивная вёрстка

Виртуальный геймпад

КнопкаДействие
← →Сдвиг колодца (или движение фигуры в Magnet)
↻ (круглая)Вращение фигуры
↓ (зажать)Мягкий дроп с авто-повтором
HOLDHold фигуры
DROPЖёсткий дроп

Свайпы на стакане

// 11

Технический стек

Платформа

Один HTML-файл. Никаких зависимостей, фреймворков или сборщиков. Работает офлайн.

Рендер

Canvas 2D API. Два слоя: игровой (well-canvas) и частицы (particle-canvas).

Аудио

Web Audio API — полностью процедурный звук и музыка. Никаких аудиофайлов.

Хранилище

localStorage. XP, уровень профиля, статистика, достижения, активный скин, настройки.

Логика

Vanilla JS. Матрица — Uint8-совместимый массив 10×20. Горячий путь без Object overhead.

Производительность

Частицы через object pool. RAF loop. Музыкальные слои обновляются раз в 30 кадров.

Архитектура логики

loop(now)
├── Mode ticks (ultra timer, sprint counter, tsunami wave, chaos events)
├── Gravity Impulse (lv 16+)
├── Auto drop → lock()checkLines() → [clearRows animation] → finalClear()
├── Spring physics (shake, tilt)
└── draw() → matrix + ghost + piece + glow + particles

shiftWell(dir)
├── Pre-check: simulate shift on copy, test hit() → cancel if blocked
├── Apply toroidal shift (or magnet compress)
└── Trail particles + SFX + arrow indicator

AI autoplay
├── bestMove(): enumerate rotations × positions, eval each board
├── executePlan(): rotate → shift → hard drop with human delays
└── gameover hook → auto-restart after 3.2s
    
// 12

Статус реализации

Реализовано

Не реализовано (за пределами текущего скоупа)