9.4 KiB
9.4 KiB
🚌 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для всех компонентов - Категории: загрузка, физика, коллизии, анимации
- Визуальные индикаторы состояния автобуса
🎯 Приоритетные задачи для продолжения
🔥 Критические (исправления):
- Препятствия не генерируются - раскомментировать
_spawnObstacle()вbus_word_game.dart - Система очков - реализовать логику подсчета очков
- Конец игры - обработка столкновений с ловушками
🚀 Высокий приоритет:
- Звуковые эффекты - добавить аудио для прыжков, приземлений, сбора предметов
- Система рекордов - сохранение лучших результатов
- Настройки игры - регулировка сложности, звука, графики
📈 Средний приоритет:
- Новые типы препятствий - движущиеся платформы, телепорты
- Система бонусов - временные усиления, щиты
- Улучшенная графика - частицы, эффекты, анимации фона
🎨 Низкий приоритет:
- Мобильная версия - адаптация для сенсорных экранов
- Мультиплеер - соревновательный режим
- Кастомизация - скины автобуса, темы
💡 Рекомендации по разработке
Стиль кода:
- Следуйте существующей архитектуре компонентов
- Используйте
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.dart→onTapDown(),onKeyEvent() - Физика:
bus_component.dart→update(),jump() - Анимации:
bus_component.dart→_updateAnimation() - Коллизии:
platform_component.dart→isBusOnPlatform()
🎯 Конкретные задачи
Задача 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);
}
🚨 Важные замечания
- Всегда тестируйте изменения в браузере
- Проверяйте логи в консоли для отладки
- Следуйте существующему стилю кода
- Добавляйте отладочную информацию для новых функций
- Оптимизируйте производительность при добавлении новых элементов
🎮 Цель игры
Создать увлекательную игру, где игрок:
- Ловит предметы, соответствующие слову
- Избегает ловушек и неподходящих предметов
- Использует платформы для достижения высоты
- Набирает очки и улучшает рекорды
Используйте этот промпт как руководство для продолжения разработки проекта! 🚌✨