Zum Inhalt springen

Wie Erweiterungen funktionieren

Eine Erweiterung fordert von vrOS genau das an, was sie braucht — Audioausgabe, eigene Panels, Netzwerkzugriff — und du gewährst oder verweigerst jedes Einzelne. vrOS startet sie, überwacht sie und startet sie neu, wenn sie abstürzt.

Eine Erweiterung von Dritten ist ein eigenes Programm: Sie läuft für sich, spricht über einen lokalen Socket mit vrOS und kann vrOS bei einem Absturz nicht mitreißen. Die fünf Erweiterungen, die mit vrOS ausgeliefert werden, sind stattdessen eingebaut — überwachte Tasks innerhalb der App, auf derselben API und mit derselben Disziplin, gegen eine Panic isoliert statt durch eine Prozessgrenze. Was die beiden Stufen unterscheidet, steht unter Eine Erweiterung entwickeln.

Diese Seite ist die Nutzerseite. Zum Selberbauen siehe Eine Erweiterung entwickeln.

Alle fünf kommen mit 2.0.0 und starten ausgeschaltet. Schalte eine unter Einstellungen → Erweiterungen ein, und ihr Tab kommt ins Dash.

Erweiterung Was sie tut
VRChat OSC Chatbox, Avatar-Parameter, Kamera, OSC-Tracker, OSCQuery-Erkennung. Funktioniert auch bei geschlossenem SteamVR.
Soundboard Pads mit Kategorien, Gain, Loop und geteilten Pads, pro Pad auf dein Headset und/oder dein Mikrofon geroutet
OBS Control Szenenwechsel, Stream- und Aufzeichnungsstatus und ein OBS-Director-Panel, für bis zu 16 OBS-Instanzen
Twitch Anmeldung, Chat mit 7TV-Emotes, ein Werbe-Manager mit Werbe-HUD in VR und bis zu vier Live-Stream-Player
Steam Link Face Bringt das Gesichtstracking einer Quest Pro, die über Steam Link streamt, ins Gesichtstracking von O·VR

2.0.0 ist nicht der Gleichstand mit vrOS 1. Weitere Creator-Funktionen kommen als Erweiterungen zurück, eine nach der anderen, und in den Versionshinweisen steht, was in deinem Build gelandet ist.

Eine Erweiterung fragt beim ersten Start, nicht bei der Installation. Bis du entscheidest, bleibt sie gestoppt. Sie läuft nicht und belegt keinen Slot auf der Leiste.

Der Bildschirm listet jede Capability auf, die sie anfordert, jeweils mit eigenem Schalter und einer Zeile in Klartext, was das in der Praxis bedeutet. Auch nicht angeforderte Capabilities stehen dort, als nicht angefordert markiert, damit du die ganze Form dessen siehst, was sie überhaupt je verlangen könnte. Dann: alles ablehnen oder Ausgewähltes zulassen.

Will eine spätere Version etwas Neues, wirst du nur zur Differenz erneut gefragt. Was du bereits gewährt hast, bleibt gewährt.

Capability Was das Gewähren erlaubt
Bus Die von ihr gelisteten vrOS-Ereignisse empfangen, etwa VR verbunden und VR getrennt. Ihre eigenen Ereignisse gehören immer ihr allein.
Overlays Eigene Panels in deinem Bereich zeichnen. Andere Overlays kann sie weder sehen noch anfassen.
Capture Ein Capture-Overlay eines bestimmten Fensters anfordern.
Audio Über die vrOS-Audio-Engine und ihr Ausgangs-Routing abspielen.
Secrets Ein Passwort oder Token unter eigenem Namen im Schlüsselspeicher deines Betriebssystems ablegen.
OSC OSC-Sockets öffnen.
Network Mit dem Netzwerk sprechen.
Videowiedergabe Video und Audio aus dem Internet in ihren Panels abspielen. Audio kann weiterlaufen, während das Panel ausgeblendet ist.
Gesichtsdaten Gesichts- und Eye-Tracking-Daten liefern oder lesen.

Bus, Overlays, Capture, Audio und Secrets werden vom Host durchgesetzt: Fragt eine Erweiterung die vrOS-API nach etwas, das ihr nicht gewährt wurde, wird der Aufruf auf der Leitung abgewiesen.

Die fünf eingebauten Erweiterungen werden mit vrOS ausgeliefert und sind ausgeschaltet, bis du sie unter Einstellungen → Erweiterungen einschaltest. Sie sind vorab gewährt, du wirst also nicht gefragt, wenn du eine zum ersten Mal aktivierst — außer bei Videowiedergabe und Gesichtsdaten, die nie vorab gewährt sind und immer darauf warten, dass du sie erlaubst. Ansonsten sind sie echte Erweiterungen: dasselbe Manifest, dieselben Capability-Chips, derselbe Knopf zum Widerrufen in den Einstellungen. Schalte eine aus, und sie stoppt.

Sie sind außerdem der Grund, warum die Erweiterungs-API ehrlich bleibt: Sie sind auf derselben API gebaut, die auch Dritte bekommen, ohne private Hintertür. Lässt sich eine First-Party-Funktion nicht auf dieser API bauen, ist die API falsch.

Jede installierte Erweiterung steht dort mit Autor, Version und Capability-Chips: gewährt, angefragt (wartet noch auf deine Entscheidung) oder neutral, wenn die Erweiterung deaktiviert ist. Eine ausstehende Entscheidung kennzeichnet die Kategoriezeile und die Dash-Kopfzeile, damit sie von überall auffindbar ist.

Pro Zeile kannst du PRÜFEN — das öffnet den vollen Zustimmungsbildschirm —, die Erweiterung aktivieren oder deaktivieren und eine früher gewährte Capability widerrufen. Widerrufen ist derselbe Schalter, mit dem du sie gewährt hast. Siehe Einstellungen.

Eine aktivierte Erweiterung mit Dash-Tab bekommt einen Slot auf der Leiste: zuerst die Kern-Tabs (Overlays, Leistung, Spielbereich), dann ein Trenner, dann die Erweiterungs-Slots in deiner Reihenfolge, mit den Einstellungen unten angeheftet. Kern-Tabs und Einstellungen bewegen sich nie.

Erweiterungen bekommen ihren Leisten-Tab standardmäßig auch in der Desktop-App. Siehe Die Desktop-App.

Diese Version zeichnet ein Platzhalter-Umrisssymbol neben das Kurzlabel der Erweiterung. Eigene Erweiterungssymbole sind nicht drin.

Eine Erweiterung kann zwei Arten von Panel zeichnen: einen Tab im Dash und ein Overlay-Panel, das du erzeugen und in deinem Bereich platzieren kannst. Overlay-Panels erzeugst du im eigenen Dash-Tab der Erweiterung.

Ein Overlay-Panel ist ein normales vrOS-Overlay. Verankere es an der Welt, an deinem Kopf oder an einem der beiden Handgelenke, greife es, sperre es — nach einem Neustart kommt es dorthin zurück, wo du es gelassen hast. Siehe Overlays.

Trennt sich VR, werden die Panels einer Erweiterung ausgeblendet, und die Erweiterung läuft weiter. Ihr Zustand wird nie abgebaut, weil du das Headset ablegst. Eine Erweiterung, die ohne VR laufen darf, erfährt nie, ob SteamVR überhaupt existiert.

Erweiterungen registrieren benannte Befehle, die du aus ihren Panels und aus dem Dash auslösen kannst. Um einen davon mit einem Controller zu erreichen, weist du ihn in Einstellungen → Erweiterungen einer von acht vordeklarierten Aktionen zu und belegst diese Aktion dann in SteamVR unter Controller-Belegung, wie alles andere, was vrOS anbietet. Nicht zugewiesene Aktionen tun nichts. vrOS erfindet keine Gesten. Siehe Eingabe.

Lege den Ordner der Erweiterung hier ab:

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

Ein vorhandener Ordner ist eine installierte Erweiterung. Sie wird als deaktiviert geführt, mit den angeforderten Capabilities als Chips, bis du sie aktivierst und den Zustimmungsbildschirm durchgehst. Signierte Verteilung über einen Store ist ein späterer Meilenstein; diese Version kennt lokale Ordnerinstallationen.

Eine abgestürzte Erweiterung startet mit wachsender Wartezeit neu, nach der Vorgabe in ihrem eigenen Manifest. Ihre gespeicherten Daten liegen in vrOS, ein Neustart setzt also fort statt zurück.

Eine, die immer wieder abstürzt, wird nicht mehr neu gestartet und landet auf deaktiviert, mit dem Grund in der Ansicht. Eine Erweiterung, die gegen eine Protokollversion gebaut ist, die vrOS nicht mehr unterstützt, steht genauso da. Nichts verschwindet stillschweigend aus der Liste.

Um eine sofort zu stoppen, deaktiviere sie in den Einstellungen. Siehe Fehlerbehebung, wenn das Problem das überlebt.