# 1. Цель проекта
Создать многопользовательскую 3D-среду (виртуальный зал) на Babylon.js, в которой пользователи могут совместно находиться в одной сцене, взаимодействовать, просматривать синхронизированное видео, использовать VR или обычный режим, выбирать аватары и отображать анимацию движений рук при использовании VR-контроллеров.
Система должна работать в браузере без установки клиента
# 2. Основной функционал
## 2.1. Общие требования
* Клиентская часть: Babylon.js.
* Сетевая часть: WebSocket или Colyseus (Node.js).
* Голосовая связь
* Поддержка WebXR для VR устройств.
* Визуализация сцены от первого лица.
# 3. Функциональные модули
## 3.1. Сцена «Зал»
Зал представляет собой:
1. Пространство с местами для сидения
2. Зона «сцены» для выступлений.
3. Большой экран (видеопанель) для синхронного воспроизведения видео.
4. Легкое интерьерное освещение и базовые материалы.
Требования:
* 3D-модель можно взять готовую, бесплатную или использовать простую сцену из примитивов.
* Все сидения должны иметь фиксированные точки посадки.
* Легкий декор приветствуется (перила, ступени, стеновые панели), но без перегрузки полигонами.
## 3.2. Вход в сцену
Пользователь при подключении:
1. Выбирает аватар из списка.
2. Устанавливает имя/ник.
3. Подключается к комнате.
Сервер присваивает пользователю ID и отправляет текущее состояние комнаты (кто в ней, позиции игроков, состояние видео).
## 3.3. Аватары
* Формат: glTF / GLB.
* Единый гуманоидный скелет.
* Поддержка базовой анимации idle (ожидание).
* В режиме VR движения головы и рук привязаны к скелету.
* В обычном режиме камера управляется мышью/клавиатурой, руки имеют стандартную анимацию.
Требуется:
* Реализация корректного управления костями аватара (голова, кисти).
* В VR отображение положения контроллеров как позы рук.
## 3.4. VR-режим
Используется WebXR.
Функционал:
* Вход в WebXR посредством стандартного API Babylon.js.
* Позиция головы = камера XR.
* Трекинг левой/правой руки.
* Перенос движения контроллеров на кости аватара:
* допускается простое позиционирование
* желательно базовая IK-логика
## 3.5. Перемещение по сцене
Два режима: ### VR:
* Телепортация
* Опционально smooth locomotion
### Non-VR:
* WASD + мышь.
## 3.6. Синхронизация пользователей
Обязательная репликация:
* позиции
* вращения
* позы рук (в VR)
* индикатор сидит/стоит
Частота обновлений: 10-30 Гц.
На клиенте интерполяция движения остальных игроков.
## 3.9. Серверная часть
На сервере должна быть реализована:
* Логика комнат.
* Поддержка до 20-30 одновременных пользователей.
* Авторитет хранения состояния:
* кто сидит
* позиции игроков
* состояние видео
* WebSocket API или Colyseus (предпочтение обсуждается).
* Возможность перезапуска без потери доступности.
---
# 4. Технические требования
---
## 4.1. Производительность
* Средняя цель FPS ≥ 60 на ПК.
* В VR 72/90 Hz, но допускается fallback до 60 FPS.
* Использовать инстансы или оптимизацию геометрии для сидений.
* До 30 игроков без заметных лагов (при хорошей сети).
---
## 4.2. Кросс-браузерность
* Chromium-браузеры (Chrome, Edge, Opera).
* Firefox желательно, но не критично для VR.
* Поддержка мобильных устройств не обязательна.
---
## 4.3. Код
* JavaScript или TypeScript.
* Чистая архитектура: разделение клиент / сервер.
* Комментарии на английском или русском.
* GitHub репозиторий.
---
# 5. Этапы реализации (предпочтительный план)
## Этап 1 MVP
1. Базовая сцена (зал)
2. Сетевое подключение + синхронизация позиций
3. Аватары и выбор аватара
4. Поддержка VR режима
5. Управление руками через контроллеры
6. Система сидений
7. Видеоэкран с синхронизацией
## Этап 2 Улучшения
1. Оптимизация анимаций рук
2. Более реалистичный зал
3. Поддержка голосового чата (WebRTC)
4. UI меню (для выбора видео)
5. Система ролей (модератор, зритель и т.д.)
6. Запоминание настроек пользователя
---
# 6. Материалы, которые предоставит заказчик
* Список моделей аватаров или один примерный аватар.
* Пример видео или URL-источник.
* Референс дизайна зала (если есть).
* Текстуры и логотипы (опционально).
* Сцена зала в Unity
---
# 7. Ожидаемые результаты
* Полностью рабочий прототип виртуального зала.
* Исходные коды на GitHub.
* Сборка, которую можно запустить на хостинге (Node.js + статические файлы).
* Документация по запуску (README).
* Структура проекта, позволяющая дальнейшее расширение функционала.
---
# 8. Критерии качества
* Плавные перемещения и анимации.
* Отсутствие резких скачков аватаров (interpolation/lerp).
* Корректная синхронизация видео (расхождение ≤ 0.3 сек).
* Стабильная работа в VR браузере.
* Чистый и структурированный код.
---
# 9. Дополнительная информация
При отклике обязательно указать:
* Примеры WebGL/WebXR проектов (Babylon.js или Three.js).
* Опыт сетевой синхронизации в реальном времени.
* Опыт работы с WebRTC (если есть).
Разделы:
Опубликован:
16.11.2025 | 12:47 [поднят: 16.11.2025 | 12:47] [последние изменения: 16.11.2025 | 12:47]
Заказ находится в архиве