154 lines
8.6 KiB
JavaScript
154 lines
8.6 KiB
JavaScript
// Исправление загрузки коллайдеров в игре
|
||
// Файл: test-game-colliders-loading.js
|
||
|
||
console.log('🔧 Исправление загрузки коллайдеров в игре');
|
||
console.log('');
|
||
|
||
console.log('❓ Проблема:');
|
||
console.log('Редактор коллизий работает с базой данных, но сама игра загружает коллайдеры из JSON файла');
|
||
console.log('Коллайдеры, созданные в редакторе, не отображаются в игре');
|
||
console.log('');
|
||
|
||
console.log('🔍 Причина проблемы:');
|
||
console.log('');
|
||
|
||
console.log('1. 🔄 Разные источники данных:');
|
||
console.log(' - Редактор коллизий: загружает из /api/colliders/city/:cityId (база данных)');
|
||
console.log(' - Игра: загружает из /colliders_city_1.json (JSON файл)');
|
||
console.log(' - Данные не синхронизируются между источниками');
|
||
console.log('');
|
||
|
||
console.log('2. 📊 Две функции загрузки в Game.js:');
|
||
console.log(' - loadCollidersFromJSON(): для коллизионных данных (Box3)');
|
||
console.log(' - loadCustomCollidersForCity(): для визуальных коллайдеров (Mesh)');
|
||
console.log(' - Обе использовали только JSON файлы');
|
||
console.log('');
|
||
|
||
console.log('3. 🗄️ Отсутствие fallback механизма:');
|
||
console.log(' - Игра не могла загрузить данные из базы данных');
|
||
console.log(' - Нет резервного варианта при недоступности БД');
|
||
console.log('');
|
||
|
||
console.log('✅ Исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🔄 Обновление loadCollidersFromJSON():');
|
||
console.log(' - Сначала пробует загрузить из /api/colliders/city/:cityId');
|
||
console.log(' - При 500 ошибке fallback на /colliders_city_1.json');
|
||
console.log(' - Обрабатывает данные из обоих источников');
|
||
console.log('');
|
||
|
||
console.log('2. 🔄 Обновление loadCustomCollidersForCity():');
|
||
console.log(' - Сначала пробует загрузить из /api/colliders/city/:cityId');
|
||
console.log(' - При 500 ошибке fallback на /api/colliders?cityId=:cityId');
|
||
console.log(' - Создает визуальные меши для коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('3. 📊 Улучшенная обработка данных:');
|
||
console.log(' - Проверка формата данных (data.colliders vs Array)');
|
||
console.log(' - Логирование источника данных');
|
||
console.log(' - Отладочная информация для диагностики');
|
||
console.log('');
|
||
|
||
console.log('🔧 Технические детали:');
|
||
console.log('');
|
||
|
||
console.log('🔄 Логика загрузки:');
|
||
console.log('- Первая попытка: /api/colliders/city/:cityId (база данных)');
|
||
console.log('- Fallback: JSON файлы или старый API');
|
||
console.log('- Проверка ответа: response.ok && response.status !== 500');
|
||
console.log('- Обработка данных: data.colliders || data (массив)');
|
||
console.log('');
|
||
|
||
console.log('📊 Два типа коллайдеров в игре:');
|
||
console.log('- Коллизионные (Box3): для проверки столкновений');
|
||
console.log('- Визуальные (Mesh): для отображения в сцене');
|
||
console.log('- Оба типа теперь загружаются из базы данных');
|
||
console.log('');
|
||
|
||
console.log('🗄️ API endpoints:');
|
||
console.log('- Новый: GET /api/colliders/city/:cityId (база данных)');
|
||
console.log('- Старый: GET /api/colliders?cityId=:cityId (JSON файлы)');
|
||
console.log('- Fallback: GET /colliders_city_1.json (прямые файлы)');
|
||
console.log('');
|
||
|
||
console.log('🧪 Как тестировать исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🎮 Запуск игры:');
|
||
console.log(' - Откройте игру: http://localhost:4000');
|
||
console.log(' - Проверьте консоль браузера');
|
||
console.log(' - Должно появиться: "📊 Загружены коллайдеры из базы данных"');
|
||
console.log(' - Или: "📄 Загружены коллайдеры из JSON файла" (fallback)');
|
||
console.log('');
|
||
|
||
console.log('2. 🔍 Проверка коллайдеров:');
|
||
console.log(' - Коллайдеры должны быть видны в игре');
|
||
console.log(' - Коллизии должны работать корректно');
|
||
console.log(' - Проверьте, что персонаж не проходит через коллайдеры');
|
||
console.log('');
|
||
|
||
console.log('3. 🔄 Синхронизация с редактором:');
|
||
console.log(' - Создайте коллайдер в редакторе коллизий');
|
||
console.log(' - Сохраните изменения');
|
||
console.log(' - Перезагрузите игру');
|
||
console.log(' - Новый коллайдер должен появиться в игре');
|
||
console.log('');
|
||
|
||
console.log('4. 🗄️ Тест fallback:');
|
||
console.log(' - Остановите сервер базы данных');
|
||
console.log(' - Перезагрузите игру');
|
||
console.log(' - Должно появиться: "🔄 Новый API недоступен, пробуем старый JSON API"');
|
||
console.log(' - Игра должна загрузиться с данными из JSON файлов');
|
||
console.log('');
|
||
|
||
console.log('5. 📊 Отладочная информация:');
|
||
console.log(' - Проверьте консоль на наличие ошибок');
|
||
console.log(' - Должны быть логи о загрузке коллайдеров');
|
||
console.log(' - Проверьте количество загруженных коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('🎯 Ожидаемые результаты:');
|
||
console.log('');
|
||
|
||
console.log('✅ Загрузка из базы данных:');
|
||
console.log('- [ ] Игра загружает коллайдеры из БД');
|
||
console.log('- [ ] Коллайдеры из редактора видны в игре');
|
||
console.log('- [ ] Коллизии работают корректно');
|
||
console.log('- [ ] Синхронизация между редактором и игрой');
|
||
console.log('');
|
||
|
||
console.log('✅ Fallback механизм:');
|
||
console.log('- [ ] При недоступности БД загружаются JSON файлы');
|
||
console.log('- [ ] Игра работает в любом случае');
|
||
console.log('- [ ] Логирование источника данных');
|
||
console.log('- [ ] Отсутствие критических ошибок');
|
||
console.log('');
|
||
|
||
console.log('✅ Производительность:');
|
||
console.log('- [ ] Быстрая загрузка коллайдеров');
|
||
console.log('- [ ] Отсутствие задержек в игре');
|
||
console.log('- [ ] Корректная работа коллизий');
|
||
console.log('- [ ] Стабильная работа при переключении городов');
|
||
console.log('');
|
||
|
||
console.log('🔍 Отладочная информация:');
|
||
console.log('');
|
||
|
||
console.log('📊 В консоли должно появляться:');
|
||
console.log('- "🔍 loadCollidersFromJSON вызвана для города: 1"');
|
||
console.log('- "📊 Загружены коллайдеры из базы данных: X объектов"');
|
||
console.log('- "🔍 loadCustomCollidersForCity для города: 1"');
|
||
console.log('- "📊 Загружены кастомные коллайдеры из базы данных: X объектов"');
|
||
console.log('');
|
||
|
||
console.log('🎯 Проверка в игре:');
|
||
console.log('- Коллайдеры должны быть видны (если включена визуализация)');
|
||
console.log('- Персонаж не должен проходить через коллайдеры');
|
||
console.log('- Коллизии должны работать плавно');
|
||
console.log('');
|
||
|
||
console.log('🚀 Исправления готовы к тестированию!');
|
||
console.log('Откройте игру: http://localhost:4000');
|
||
console.log('Проверьте консоль и убедитесь, что коллайдеры загружаются из базы данных');
|