210 lines
9.4 KiB
Markdown
210 lines
9.4 KiB
Markdown
|
|
# 🚌 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. **Оптимизируйте производительность** при добавлении новых элементов
|
|||
|
|
|
|||
|
|
## 🎮 Цель игры
|
|||
|
|
|
|||
|
|
Создать увлекательную игру, где игрок:
|
|||
|
|
- Ловит предметы, соответствующие слову
|
|||
|
|
- Избегает ловушек и неподходящих предметов
|
|||
|
|
- Использует платформы для достижения высоты
|
|||
|
|
- Набирает очки и улучшает рекорды
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Используйте этот промпт как руководство для продолжения разработки проекта!** 🚌✨
|