vrOS
Документация

Расширения

Добавьте нужное. И ничего лишнего.

Ядро vrOS — это оверлеи, ввод, производительность и игровая зона. Инструменты для творчества — расширения, которые вы включаете по одному: каждое объявляет возможности, которые использует, и остаётся остановленным, пока вы не решите.

vrOS 2.0.0 сначала выпускает этот фундамент. Творческие функции возвращаются в виде расширений, постепенно, и эта страница говорит, какие именно и когда.

Как это устроено

Отдельные программы, работающие с вашего разрешения.

Под присмотром, а не вшито внутрь

Стороннее расширение работает в своём процессе. Если оно упадёт, то перезапустится по правилу из собственного манифеста, а остальной vrOS продолжит работать. Встроенные расширения работают по той же дисциплине — как задачи под присмотром внутри приложения.

Согласие — по одной возможности

Прежде чем расширение запустится, vrOS человеческим языком перечисляет, что оно запросило: оверлеи, захват, звук, шину событий, сеть. Вы выдаёте каждое разрешение отдельно и в любой момент можете отозвать любое в разделе Настройки → Расширения. Обновление, которому нужно что-то новое, спросит заново — только про это одно.

Честно о том, что значит разрешение

Возможности, которыми управляет API vrOS, vrOS и обеспечивает. Доступ к сети — это раскрытие, а не песочница: нативная программа может открыть сокет, не спрашивая vrOS. Поэтому манифест объявляет его, и вы видите это до того, как что-то включите.

Состояние, которое переживает сбой

Состояние расширения хранится в хранилище vrOS, а не в процессе самого расширения. Сбой, перезапуск приложения или перезагрузка ПК возвращают всё туда, где оно было, а появление и исчезновение SteamVR ничего не рушит.

Работает и без гарнитуры

vrOS — прежде всего настольное приложение, и его расширения тоже. Отправить OSC-сообщение или запустить пэд Soundboard можно при закрытом SteamVR.

Простаивает — значит простаивает

Включённое расширение, которое ничего не делает, не крутит таймеры, ничего не опрашивает и ничего не перерисовывает. OBS control опрашивает состояние стрима и записи, только пока на экране есть панель, которая его показывает.

Расширения устанавливаются из папки на вашей собственной машине, а экран согласия появляется до первого запуска. Подписанная дистрибуция — следующий шаг.

Панели

Интерфейс расширения — тот же самый интерфейс.

Расширения поставляют свои панели в виде файлов Slint, и vrOS рисует их сам — тот же рендерер, та же тема, и никакого веб-движка рядом.

  • Панель может быть вкладкой в Dash или плавающим оверлеем, который вы ставите в своём пространстве
  • Панели встроенных расширений выходят на всех девяти языках, как и остальной vrOS
  • Оверлейные панели крепятся к миру, к голове или к любой руке и после перезапуска возвращаются туда, где вы их оставили
  • VR-клавиатура печатает в панель расширения так же, как в панель самого vrOS
  • Панель, которая не загрузилась, называет расширение и ошибку вместо того, чтобы остаться пустой

Состав

Что выходит и когда.

Четыре расширения — в том порядке, в котором их делают. VRChat OSC, OBS control и Soundboard входят в релиз v2.0.0. Twitch chat идёт последним, и даты у него пока нет.

VRChat OSC

На старте

Вся OSC-поверхность VRChat в одном месте: чатбокс с индикатором набора и переключателем звука, параметры аватара в обе стороны, смена аватара, пространство имён input и пространство имён камеры. OSCQuery и mDNS позволяют VRChat найти расширение и порт, который оно слушает. Этот порт по умолчанию привязан к loopback, так что ничто другое в вашей сети не сможет отправлять параметры вашему аватару. Панель чатбокса крепится к запястью.

OBS control

На старте

Подключайтесь к любому числу экземпляров OBS, локальных или удалённых, через obs-websocket. Переключайте сцены, запускайте и останавливайте стрим или запись, включайте и блокируйте источники, смотрите статистику. Компактная режиссёрская панель висит перед вами: сетка сцен, состояние стрима и записи, tally.

Soundboard

На старте

Пэды с собственной громкостью и зацикливанием для каждой записи, воспроизводимые аудиодвижком vrOS. Один звук может идти сразу в несколько выходов, так что клип попадает и в наушники, и в виртуальный микрофон. Пэды — это команды, поэтому их можно назначить на контроллер в SteamVR.

Twitch chat

Даты пока нет

Чат на панели, рядом со всем остальным. Вход идёт через device-code flow, так что vrOS никогда не видит ваш пароль. Оно последнее в очереди.

Встроенные расширения приходят с уже выданными возможностями. Любую из них можно отозвать в разделе Настройки → Расширения — так же, как у стороннего расширения.

Как сделать своё

Тот же API, на котором сделаны встроенные.

Расширения общаются с vrOS через локальный сокет — JSON-RPC, по одному объекту на строку, — поэтому расширение можно написать на любом языке. То, что собственные функции построены на том же API, сделано намеренно: если VRChat OSC нельзя построить на API расширений, значит, неправ API.

SDK расширений пока не публичный.