受监管,而不是缝进主程序
第三方扩展在自己的进程里运行。它崩溃时会按自己清单里的策略重启,vrOS 的其余部分照常运行。内置扩展则以同样的规矩,作为受监管的任务在应用内运行。
扩展
vrOS 的核心是叠加层、输入、性能和游玩空间。创作者工具都是扩展,你一个一个地开启——每个扩展都会申报自己要用的能力,在你做出决定之前保持停止。
vrOS 2.0.0 先交付这套基础。创作者功能会以扩展的形式逐步回归,这个页面会写明是哪些、什么时候。
运作方式
第三方扩展在自己的进程里运行。它崩溃时会按自己清单里的策略重启,vrOS 的其余部分照常运行。内置扩展则以同样的规矩,作为受监管的任务在应用内运行。
扩展运行之前,vrOS 会用大白话列出它请求了什么:叠加层、捕获、音频、事件总线、网络。你逐项授予,之后随时可以在 设置 → 扩展 里撤销任何一项。如果某次更新要求新的东西,它只会为那一项重新询问。
由 vrOS API 掌管的能力,由 vrOS 强制执行。网络访问属于声明,而不是沙箱:原生程序不问 vrOS 也能打开套接字,所以清单会把它写明,让你在启用任何东西之前就看到。
扩展的状态存放在 vrOS 的存储里,而不是扩展自己的进程里。崩溃、重启应用或重启电脑之后,它都会回到原来的位置;SteamVR 来来去去也从不会把它拆散。
vrOS 首先是一个桌面应用,它的扩展也是。发送 OSC 消息、触发 Soundboard 的音垫,在 SteamVR 关闭时照样可用。
已启用但没在做事的扩展不跑定时器、不轮询、也不重绘。只有在显示相关内容的面板出现在屏幕上时,OBS control 才会查询推流和录制状态。
扩展从你自己机器上的文件夹安装,同意界面出现在首次运行之前。签名分发是后面的一步。
面板
扩展以 Slint 文件的形式提供面板,由 vrOS 自己渲染——同一个渲染器、同一套主题,附近没有任何 Web 引擎。
阵容
vrOS 2.0.0 附带五个扩展。每个扩展一开始都是关闭的;在 设置 → 扩展 里开启后,它的标签页就会加入 Dash。
把 VRChat 的 OSC 面收拢到一处:带输入指示和声音开关的聊天框、角色参数收发、切换角色、input 命名空间和 camera 命名空间。OSCQuery 与 mDNS 让 VRChat 找到它以及它监听的端口。该端口默认绑定在回环地址上,所以网络上的其他东西无法把参数推给你的角色。聊天框面板锚定在手腕上。
通过 obs-websocket 连接最多 16 个 OBS 实例,本地或远程都行。切换场景、开始与停止推流或录制、切换与锁定源,并读取统计数据。一块紧凑的导播面板浮在你面前,显示场景网格、推流与录制状态以及 tally。
每个音垫都有独立的音量和循环设置,由 vrOS 音频引擎播放。同一个声音可以同时送到多个输出,让一段音频同时进入你的耳机和虚拟麦克风。音垫本身就是命令,因此可以在 SteamVR 里绑定到控制器上。
面板上的聊天支持 7TV 表情,广告管理会在广告开始前于 VR 中提醒你,还有最多四个可以摆在空间里的直播播放器。登录使用设备码流程,vrOS 从不会看到你的密码。
把通过 Steam Link 串流的 Quest Pro 的面部追踪带进 vrOS,让 O·VR 能通过 OSC 把你的表情发送到 VRChat。
内置扩展在到来时能力已经授予,但视频播放和面部数据除外,这两项总会等你亲自允许。你可以在 设置 → 扩展 里撤销其中任何一项,和第三方扩展一样。