Tg with Notifications, bags fixxed

This commit is contained in:
2025-09-04 13:39:53 +03:00
parent f77d19975e
commit 51995c3695
13 changed files with 1775 additions and 34 deletions

134
GAME_IMPROVEMENTS_README.md Normal file
View File

@@ -0,0 +1,134 @@
# Улучшения игры - Полный список
## 🆕 Новые функции
### 1. Уведомления о сообщениях в Telegram
- **Описание**: Показываются уведомления о новых сообщениях, когда Telegram не открыт
- **Как работает**:
- WebSocket событие `newMessage` обрабатывается на клиенте
- Уведомление появляется в правом верхнем углу экрана
- Автоматически исчезает через 5 секунд
- Анимированное появление и исчезновение
- **Файлы**: `src/Game.js` - добавлена функция `showMessageNotification()`
### 2. Уведомления о перезагрузке сервера
- **Описание**: Игроки получают предупреждение о перезагрузке сервера
- **Как работает**:
- Сервер отправляет событие `serverRestart` всем клиентам
- Показывается красное уведомление с обратным отсчетом
- Сервер корректно завершает работу через 5 секунд
- **Файлы**:
- `server.js` - добавлена функция `gracefulShutdown()`
- `src/Game.js` - добавлена функция `showServerRestartNotification()`
## 🎮 Улучшения управления
### 3. Исправление застревания в текстурах
- **Проблема**: Игрок застревал в текстурах и не мог выбраться
- **Решение**:
- Уменьшены размеры коллизионной коробки игрока (с 0.25 до 0.2)
- Добавлено скольжение вдоль стен при столкновении
- Увеличен зазор между игроком и объектами (с 0.01 до 0.05)
- Улучшена система определения направления скольжения
- **Файлы**: `src/Game.js` - улучшена функция `updateFirstPersonMovement()`
### 4. Улучшенное управление камерой
- **Новые возможности**:
- `Ctrl + колесо` = вертикальный поворот камеры (как было)
- `Shift + Ctrl + колесо` = горизонтальный поворот камеры (±90 градусов)
- **Ограничения**: Горизонтальный поворот ограничен для предотвращения дезориентации
- **Файлы**: `src/Game.js` - улучшена функция `onMouseWheel()`
### 5. Отключение браузерного масштабирования
- **Проблема**: Браузер масштабировал страницу при Ctrl + колесо
- **Решение**: Добавлены обработчики событий для предотвращения масштабирования
- **Файлы**: `src/Game.js` - добавлены обработчики `wheel` и `keydown`
## 🚀 Оптимизация производительности
### 6. Улучшенная система загрузки ресурсов
- **Проблема**: Панель загрузки блокировала управление игрой
- **Решение**:
- Панель показывается только при начальной загрузке или загрузке >5 ресурсов
- Малые загрузки происходят в фоне без блокировки
- Добавлен флаг `isInitialLoad` для контроля отображения
- **Файлы**: `src/Game.js` - улучшен `LoadingManager`
## 🔧 Технические улучшения
### 7. Graceful Shutdown сервера
- **Описание**: Сервер корректно завершает работу при получении сигналов
- **Сигналы**: `SIGTERM`, `SIGINT` (Ctrl+C)
- **Процесс**:
1. Уведомление всех клиентов
2. Ожидание 5 секунд
3. Закрытие HTTP сервера
4. Принудительное завершение через 10 секунд
### 8. Улучшенная система коллизий
- **Алгоритм скольжения**:
- Определение ближайшего препятствия
- Вычисление направления скольжения
- Проверка возможности движения в направлении скольжения
- Применение скольжения с уменьшенной дистанцией
## 📱 Пользовательский интерфейс
### 9. Подсказки по управлению
- **Описание**: Автоматически показывается подсказка об управлении камерой
- **Время**: Появляется через 3 секунды после загрузки игры
- **Длительность**: Висит 10 секунд, затем плавно исчезает
- **Стиль**: Темная полупрозрачная панель с анимацией
## 🧪 Тестирование
### 10. Тестовые файлы
- `test_telegram_status.html` - тест API статуса пользователей
- `TELEGRAM_STATUS_README.md` - документация по системе статусов
- `TESTING_INSTRUCTIONS.md` - инструкции по тестированию
- `GAME_IMPROVEMENTS_README.md` - этот файл
## 🚀 Как запустить
1. **Запуск сервера**:
```bash
node server.js
```
2. **Тестирование уведомлений**:
- Откройте игру в браузере
- Войдите в систему
- Откройте Telegram и отправьте сообщение
- Проверьте уведомления
3. **Тестирование перезагрузки**:
- Нажмите Ctrl+C в терминале сервера
- Проверьте уведомление о перезагрузке
4. **Тестирование управления**:
- `Ctrl + колесо` = вертикальный поворот
- `Shift + Ctrl + колесо` = горизонтальный поворот
## 🔍 Отладка
- **Сервер**: Логи в консоли терминала
- **Клиент**: Логи в консоли браузера (F12)
- **WebSocket**: Проверка соединения в Network tab
## 📋 Чек-лист тестирования
- [ ] Уведомления о сообщениях работают
- [ ] Уведомления о перезагрузке сервера работают
- [ ] Игрок не застревает в текстурах
- [ ] Управление камерой работает корректно
- [ ] Браузерное масштабирование отключено
- [ ] Панель загрузки не блокирует игру
- [ ] Подсказки по управлению отображаются
## 🎯 Следующие шаги
1. **Кэширование**: Добавить кэширование статуса пользователей
2. **Группировка**: Группировать пользователей по статусу в Telegram
3. **Уведомления**: Push-уведомления для важных событий
4. **Статистика**: Время онлайн, активность пользователей
5. **Оптимизация**: Дальнейшее улучшение производительности