Dunk Rush

Dunk Rush — аркадная баскетбольная игра на Flutter + Flame, вдохновлённая Dunk Shot. Игрок оттягивает мяч жестом drag, задаёт направление броска и старается подряд попадать в следующие кольца. В текущей версии уже есть главное меню, внутриигровой магазин, сохранение прогресса и полноценное визуальное оформление на основе графических ассетов.

Что реализовано

  • управление броском через drag с предпросмотром траектории
  • физика полёта мяча с гравитацией, отскоками от кольца и вращением
  • подсчёт очков и сохранение лучшего результата
  • главное меню, экран паузы и экран окончания игры
  • магазин кастомизации с выбором скинов мяча и фонов
  • локальное сохранение прогресса в game_progress.json
  • плавное смещение камеры после успешного попадания
  • движущиеся кольца после достижения счёта 5
  • champion hoop и эффект конфетти при приближении к рекорду или его обновлении

Технологии и инструменты

  • Flutter
  • Flame
  • Dart
  • path_provider
  • Codex

Структура проекта

  • lib/app/ - оболочка приложения, переключение экранов и навигация между меню, магазином и игрой
  • lib/features/menu/ - интерфейс главного меню
  • lib/features/game/ - игровой экран и внутриигровые оверлеи
  • lib/features/shop/ - сущности магазина, каталоги и интерфейс выбора
  • lib/features/progress/ - загрузка и сохранение рекорда и выбранной кастомизации
  • lib/game/ - основной цикл Flame-игры, мяч, кольца, эффекты и игровые правила
  • lib/shared/ - переиспользуемые виджеты и общие декоративные компоненты
  • assets/images/ - скины мячей, изображения колец и фоновые картинки
  • aurora/ - файлы упаковки платформы Aurora, которые сейчас присутствуют в репозитории

Запуск

Сначала установите зависимости:

flutter pub get

Затем запустите проект на доступном Flutter-target:

flutter run

Важно: в текущем состоянии рабочей директории отсутствуют стандартные платформенные папки Flutter, такие как android/, ios/, web/, macos/, linux/ и windows/. Если нужно запускать проект на одной из этих платформ, восстановите их из системы контроля версий или пересоздайте командой:

flutter create .

Управление

  1. Нажмите на мяч и оттяните его вниз или в сторону.
  2. Отпустите, чтобы выполнить бросок.
  3. Пунктирная линия показывает предполагаемую траекторию до запуска.
  4. Каждое чистое попадание добавляет 1 очко.
  5. Если мяч падает ниже экрана, раунд заканчивается и появляется экран окончания игры.

Сохранение прогресса

Игра сохраняет:

  • лучший результат
  • выбранный скин мяча
  • выбранный фон

Данные записываются локально через path_provider в директорию данных приложения, в файл dunk_rush/game_progress.json.

Особенности геймплея

  • По умолчанию игрок начинает со скином мяча classic и без пользовательского фона.
  • Сейчас в магазине доступно 11 скинов мяча и 5 вариантов фона.
  • После серии успешных попаданий кольца могут начать двигаться по горизонтали или по смешанной траектории.
  • Если текущая попытка приближается к сохранённому рекорду, игра может заспавнить champion hoop с более заметным наградным эффектом.

Проверка качества

Для быстрой локальной проверки:

flutter analyze