mnemo_cards/games/apps/bus_word_game/DEVELOPMENT_PROMPT.md

210 lines
9.4 KiB
Markdown
Raw Normal View History

2025-11-10 23:55:41 +00:00
# 🚌 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):
```yaml
dependencies:
flutter: sdk
flame: ^1.16.0
audioplayers: ^5.2.1
shared_preferences: ^2.2.2
```
### Ключевые параметры:
```dart
// 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 и производительность
### Производительность:
- Ограничивайте количество объектов на экране
- Используйте пулы объектов для часто создаваемых элементов
- Оптимизируйте рендеринг и коллизии
## 🔧 Команды для работы
```bash
# Запуск в режиме разработки
flutter run -d web-server --web-port 8080
# Установка зависимостей
flutter pub get
# Сборка для продакшена
flutter build web
# Анализ кода
flutter analyze
# Тестирование
flutter test
```
## 📚 Полезные ресурсы
### Документация:
- [Flame Documentation](https://docs.flame-engine.org/)
- [Flutter Documentation](https://docs.flutter.dev/)
- [Dart Language Tour](https://dart.dev/guides/language/language-tour)
### Примеры кода:
- Обработка событий: `bus_word_game.dart` → `onTapDown()`, `onKeyEvent()`
- Физика: `bus_component.dart` → `update()`, `jump()`
- Анимации: `bus_component.dart` → `_updateAnimation()`
- Коллизии: `platform_component.dart` → `isBusOnPlatform()`
## 🎯 Конкретные задачи
### Задача 1: Восстановить генерацию препятствий
```dart
// В bus_word_game.dart, метод _startObstacleSpawner()
onTick: () {
if (!gameState.isPaused && !gameState.isGameOver) {
_spawnObstacle(); // Раскомментировать эту строку
}
},
```
### Задача 2: Добавить звуковые эффекты
```dart
// Создать AudioComponent
class AudioComponent extends Component with HasGameRef {
// Загрузить звуки в onLoad()
// Воспроизводить в соответствующих событиях
}
```
### Задача 3: Система сохранения рекордов
```dart
// В 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. **Оптимизируйте производительность** при добавлении новых элементов
## 🎮 Цель игры
Создать увлекательную игру, где игрок:
- Ловит предметы, соответствующие слову
- Избегает ловушек и неподходящих предметов
- Использует платформы для достижения высоты
- Набирает очки и улучшает рекорды
---
**Используйте этот промпт как руководство для продолжения разработки проекта!** 🚌✨