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