Как работают расширения
Расширение запрашивает у 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 больше не поддерживает, отображается так же. Ничто не исчезает из списка молча.
Чтобы остановить расширение прямо сейчас, отключите его в Настройках. См. Устранение неполадок, если проблема этим не решится.