Архитектура
Карта слоёв
Runtime (веб-клиент)
Отвечает за рендеринг сцены, ввод, камеру, отображение присутствия, жизненный цикл XR-сессии, медиаповерхности и профили качества.
- Приложение:
apps/runtime-web - Общий пакет:
packages/runtime-core
Медиаплоскость
Отвечает за голос, показ экрана, жизненный цикл треков и передачу медиа.
- Провайдер:
LiveKit - Интеграция с API:
apps/api
Плоскость состояния
Отвечает за состояние комнаты, присутствие участников, трансформации и логику комнаты.
- Приложение:
apps/room-state - Провайдер:
Colyseus
Control plane
Отвечает за тенанты, шаблоны, комнаты, метаданные ассетов, ссылки и метаданные развёртывания.
- Приложение:
apps/control-plane - Интеграция с API:
apps/api
Конвейер ассетов
Отвечает за правила импорта, проверку, пресеты сжатия и бюджеты качества.
- Пакет:
packages/asset-pipeline - Шаблоны:
packages/templates
Основные сценарии
Вход в комнату
- Пользователь открывает ссылку на комнату.
apps/runtime-webполучает манифест комнаты изapps/api.- Runtime запрашивает у
apps/apiтокен состояния и медиатокен. - Runtime подключается к
apps/room-stateиLiveKit. - Runtime отрисовывает комнату по конфигурации сцены из манифеста.
Создание комнаты
- Администратор открывает
apps/control-plane. - Control plane создаёт записи тенанта и комнаты через
apps/api. - Ассеты регистрируются и прикрепляются к слотам шаблона.
- API формирует манифест и ссылку на комнату.
- Runtime берёт опубликованную конфигурацию комнаты без изменений в коде.
Границы, которые нельзя нарушать
- Runtime никогда не отвечает за постоянное хранение тенантов и операции CRUD над ними.
- Медиаплоскость никогда не становится источником истины для состояния комнаты.
- Исследовательские прототипы никогда не становятся runtime продукта по умолчанию.
- Шаблоны настраивают сцены, а не создают форки runtime.
Источник: docs/architecture.md в vrata-labs/platform на ревизии 380b2e7ff1dd, лицензия Apache-2.0. GitHub