Files
rltn/test-game-colliders-loading.js

154 lines
8.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Исправление загрузки коллайдеров в игре
// Файл: 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('Проверьте консоль и убедитесь, что коллайдеры загружаются из базы данных');