Перейти к содержимому

Как работают расширения

Расширение запрашивает у vrOS именно то, что ему нужно — вывод звука, свои панели, доступ к сети, — и вы разрешаете или запрещаете каждый пункт. vrOS запускает его, следит за ним и перезапускает, если оно падает.

Стороннее расширение — это отдельная программа: оно работает само по себе, общается с vrOS через локальный сокет и не может утянуть vrOS за собой при сбое. Пять расширений, которые поставляются вместе с vrOS, встроены — это контролируемые задачи внутри приложения, на том же API и с той же дисциплиной, изолированные от паники, а не границей процесса. Чем различаются эти два уровня, см. в разделе Создать расширение.

Эта страница — взгляд со стороны пользователя. О том, как создать своё, см. Создать расширение.

Все пять выходят вместе с 2.0.0 и изначально выключены. Включите одно в разделе Настройки → Расширения, и его вкладка появится в Даше.

Расширение Что оно делает
VRChat OSC Чатбокс, параметры аватара, камера, OSC-трекеры, обнаружение через OSCQuery. Работает и при закрытом SteamVR.
Саундборд Пэды с категориями, усилением, зацикливанием и разделёнными пэдами; каждый пэд направляется в гарнитуру и/или микрофон
OBS Control Переключение сцен, состояние стрима и записи и панель OBS Director; до 16 экземпляров OBS одновременно
Twitch Вход в аккаунт, чат со смайликами 7TV, менеджер рекламы с HUD рекламы в VR и до четырёх плееров прямых трансляций
Steam Link Face Передаёт отслеживание лица с Quest Pro, стримящего через Steam Link, в отслеживание лица O·VR

2.0.0 — не паритет с vrOS 1. Новые функции для авторов возвращаются в виде расширений, по одной, а в Примечаниях к выпуску написано, что вошло в вашу сборку.

Расширение спрашивает при первом запуске, а не при установке. Пока вы не решите, оно остаётся остановленным. Оно не работает и не занимает слот на рейле.

Экран перечисляет каждую возможность, которую расширение запрашивает, с отдельным переключателем и строкой на обычном языке о том, что это значит на практике. Возможности, которые оно не запрашивало, тоже перечислены и помечены как незапрошенные, чтобы вы видели всю картину того, что оно вообще может попросить. Затем: отказать во всём или разрешить выбранное.

Если более поздняя версия захочет что-то новое, вас спросят заново только о разнице. То, что вы уже разрешили, остаётся разрешённым.

Возможность Что даёт разрешение
Bus Получать перечисленные ею события vrOS, например подключение и отключение VR. Её собственные события всегда принадлежат только ей.
Overlays Рисовать свои панели в вашем пространстве. Она не может видеть или трогать чужие оверлеи.
Capture Запрашивать оверлей захвата конкретного окна.
Audio Воспроизводить через аудиодвижок vrOS и его маршрутизацию выходов.
Secrets Хранить пароль или токен в хранилище учётных данных вашей ОС, под собственным именем.
OSC Открывать сокеты OSC.
Network Общаться с сетью.
Воспроизведение видео Воспроизводить видео и звук из интернета на своих панелях. Звук может продолжаться, пока панель скрыта.
Данные лица Передавать или читать данные отслеживания лица и глаз.

Bus, Overlays, Capture, Audio и Secrets обеспечиваются хостом: когда расширение просит у API vrOS то, что ему не разрешено, вызов отклоняется прямо на соединении.

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

Ещё они удерживают API расширений честным: они построены на том же API, что достаётся стороннему разработчику, без приватной лазейки. Если штатную функцию нельзя построить на этом API, значит, неправ API.

Каждое установленное расширение перечислено с автором, версией и чипами возможностей: разрешено, запрошено (решение ещё за вами) или нейтрально, когда расширение отключено. Нерешённый запрос помечает строку категории и заголовок Даша, так что его видно откуда угодно.

В каждой строке можно нажать ПРОСМОТР — откроется полный экран согласия, — включить или отключить расширение и отозвать возможность, выданную ранее. Отзыв — это тот же переключатель, которым вы её выдали. См. Настройки.

Включённое расширение с вкладкой в Даше получает слот на рейле: сначала основные вкладки (панели, производительность, игровая зона), затем разделитель, затем слоты расширений в вашем порядке, а Настройки закреплены внизу. Основные вкладки и Настройки не двигаются.

По умолчанию расширения получают свою вкладку на рейле и в приложении на ПК. См. Приложение на ПК.

В этом выпуске рядом с коротким названием расширения рисуется контурная заглушка. Собственных значков расширений в нём нет.

Расширение может рисовать два вида панелей: вкладку внутри Даша и вызываемую панель-оверлей, которую вы размещаете в своём пространстве. Панели-оверлеи вызываются с собственной вкладки расширения в Даше.

Панель-оверлей — это обычный оверлей vrOS. Привяжите её к миру, к голове или к любому запястью, берите её рукой, блокируйте — после перезапуска она вернётся туда, где вы её оставили. См. Панели.

Когда VR отключается, панели расширения скрываются, а само расширение продолжает работать. Его состояние никогда не сбрасывается оттого, что вы сняли гарнитуру. Расширение, помеченное как работающее без VR, вообще не узнаёт, существует ли SteamVR.

Расширения регистрируют именованные команды, которые можно вызвать с их панелей и из Даша. Чтобы добраться до команды с контроллера, назначьте её на одно из восьми заранее объявленных действий в Настройках → Расширения, а затем привяжите это действие в SteamVR в разделе «Привязки контроллеров», как и всё остальное, что предоставляет vrOS. Неназначенные действия ничего не делают. vrOS не выдумывает жестов. См. Ввод.

Положите папку расширения в:

  • Windows: %LOCALAPPDATA%\vrOS\extensions\<id>\
  • Linux: ~/.local/share/vros/extensions/<id>/

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

Упавшее расширение перезапускается с нарастающей задержкой, по правилам из его собственного манифеста. Его сохранённые данные живут в vrOS, поэтому перезапуск продолжает работу, а не сбрасывает её.

То, которое падает раз за разом, перестают перезапускать, и оно оказывается отключённым, с причиной, показанной в панели. Расширение, собранное под версию протокола, которую vrOS больше не поддерживает, отображается так же. Ничто не исчезает из списка молча.

Чтобы остановить расширение прямо сейчас, отключите его в Настройках. См. Устранение неполадок, если проблема этим не решится.