mnemo_cards/games/apps/bus_word_game/DEVELOPMENT_PROMPT.md
2025-11-11 02:55:41 +03:00

9.4 KiB
Raw Blame History

🚌 Bus Word Game - Промпт для продолжения разработки

📋 Контекст проекта

Вы работаете с игрой Bus Word Game - веб-приложением на Flutter с движком Flame. Игрок управляет автобусом Volkswagen T1, который ловит предметы, соответствующие отображаемому слову, перепрыгивая через ловушки и избегая неподходящих предметов.

🏗️ Текущее состояние проекта

Реализованные функции:

  • Основная механика: прыжки автобуса с физикой (гравитация 700, прыжок -600)
  • Анимации: растяжение вверх при прыжке (1.3x), сжатие вниз при приземлении (0.8x)
  • Платформы: тайловые платформы из 3-5 тайлов (left.png, middle.png, right.png)
  • Земля: многослойная тайловая земля с прокруткой
  • Фоновое слово: большое целевое слово на фоне неба (120px шрифт)
  • UI: отображение слова и счета
  • Отладка: подробное логирование и визуальная отладка
  • Система приоритетов: z-index от -1000 (фон) до 3000 (отладка)

🎯 Архитектура:

  • Component-based: все объекты - Flame компоненты
  • State Management: централизованное управление через GameState
  • Event-driven: обработка кликов и клавиатуры
  • Timer-based: генерация объектов по времени

📁 Структура файлов:

lib/game/
├── bus_word_game.dart          # Главный игровой класс
├── game_state.dart             # Состояние игры
└── components/
    ├── bus_component.dart      # Автобус (priority: 1000)
    ├── platform_component.dart # Платформы (priority: 100)
    ├── tile_ground_component.dart # Земля (priority: -1000)
    ├── background_word_component.dart # Фоновое слово (priority: -500)
    ├── ui_component.dart       # UI (priority: 2000)
    ├── debug_component.dart    # Отладка (priority: 3000)
    └── obstacle_component.dart # Препятствия

🎮 Игровая механика

Управление:

  • Клик/Пробел: прыжок автобуса
  • ESC: пауза/возобновление

Физика:

  • Гравитация: 700 пикселей/сек²
  • Скорость прыжка: -600 пикселей/сек
  • Состояния: на земле, на платформе, в воздухе

Анимации:

  • Растяжение при прыжке: 0.15 сек, до 1.3x по высоте
  • Сжатие при приземлении: 0.15 сек, до 0.8x по высоте

Платформы:

  • Генерация: каждые 2 секунды
  • Высота: 180-400px от земли
  • Размеры: 3-5 тайлов в ширину (192-320px)

🛠️ Технические детали

Зависимости (pubspec.yaml):

dependencies:
  flutter: sdk
  flame: ^1.16.0
  audioplayers: ^5.2.1
  shared_preferences: ^2.2.2

Ключевые параметры:

// bus_word_game.dart
static const double gameSpeed = 200.0;
static const double obstacleSpawnInterval = 2.0;
static const double wordChangeInterval = 10.0;
static const double platformSpawnInterval = 2.0;

// bus_component.dart
double gravity = 700.0;
double velocityY = -600.0;
double animationDuration = 0.15;

Система логирования:

  • Используется dart:developer для всех компонентов
  • Категории: загрузка, физика, коллизии, анимации
  • Визуальные индикаторы состояния автобуса

🎯 Приоритетные задачи для продолжения

🔥 Критические (исправления):

  1. Препятствия не генерируются - раскомментировать _spawnObstacle() в bus_word_game.dart
  2. Система очков - реализовать логику подсчета очков
  3. Конец игры - обработка столкновений с ловушками

🚀 Высокий приоритет:

  1. Звуковые эффекты - добавить аудио для прыжков, приземлений, сбора предметов
  2. Система рекордов - сохранение лучших результатов
  3. Настройки игры - регулировка сложности, звука, графики

📈 Средний приоритет:

  1. Новые типы препятствий - движущиеся платформы, телепорты
  2. Система бонусов - временные усиления, щиты
  3. Улучшенная графика - частицы, эффекты, анимации фона

🎨 Низкий приоритет:

  1. Мобильная версия - адаптация для сенсорных экранов
  2. Мультиплеер - соревновательный режим
  3. Кастомизация - скины автобуса, темы

💡 Рекомендации по разработке

Стиль кода:

  • Следуйте существующей архитектуре компонентов
  • Используйте developer.log() для отладки
  • Устанавливайте правильные priority для новых компонентов
  • Добавляйте комментарии на русском языке

Отладка:

  • Проверяйте консоль браузера (F12 → Console)
  • Используйте DebugComponent для визуальной отладки
  • Мониторьте FPS и производительность

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

  • Ограничивайте количество объектов на экране
  • Используйте пулы объектов для часто создаваемых элементов
  • Оптимизируйте рендеринг и коллизии

🔧 Команды для работы

# Запуск в режиме разработки
flutter run -d web-server --web-port 8080

# Установка зависимостей
flutter pub get

# Сборка для продакшена
flutter build web

# Анализ кода
flutter analyze

# Тестирование
flutter test

📚 Полезные ресурсы

Документация:

Примеры кода:

  • Обработка событий: bus_word_game.dartonTapDown(), onKeyEvent()
  • Физика: bus_component.dartupdate(), jump()
  • Анимации: bus_component.dart_updateAnimation()
  • Коллизии: platform_component.dartisBusOnPlatform()

🎯 Конкретные задачи

Задача 1: Восстановить генерацию препятствий

// В bus_word_game.dart, метод _startObstacleSpawner()
onTick: () {
  if (!gameState.isPaused && !gameState.isGameOver) {
    _spawnObstacle(); // Раскомментировать эту строку
  }
},

Задача 2: Добавить звуковые эффекты

// Создать AudioComponent
class AudioComponent extends Component with HasGameRef {
  // Загрузить звуки в onLoad()
  // Воспроизводить в соответствующих событиях
}

Задача 3: Система сохранения рекордов

// В game_state.dart добавить
Future<void> saveHighScore(int score) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setInt('high_score', score);
}

🚨 Важные замечания

  1. Всегда тестируйте изменения в браузере
  2. Проверяйте логи в консоли для отладки
  3. Следуйте существующему стилю кода
  4. Добавляйте отладочную информацию для новых функций
  5. Оптимизируйте производительность при добавлении новых элементов

🎮 Цель игры

Создать увлекательную игру, где игрок:

  • Ловит предметы, соответствующие слову
  • Избегает ловушек и неподходящих предметов
  • Использует платформы для достижения высоты
  • Набирает очки и улучшает рекорды

Используйте этот промпт как руководство для продолжения разработки проекта! 🚌