확장이 작동하는 방식
확장은 필요한 것을 vrOS에 구체적으로 요청합니다 — 오디오 출력, 자체 패널, 네트워크 접근 — 그리고 하나하나 허용하거나 거부합니다. vrOS는 확장을 시작하고, 감독하고, 쓰러지면 다시 시작합니다.
서드파티 확장은 별도의 프로그램입니다. 스스로 실행되고, 로컬 소켓으로 vrOS와 통신하며, 크래시가 나도 vrOS를 함께 끌고 가지 않습니다. vrOS와 함께 제공되는 확장 다섯 개는 대신 내장되어 있습니다 — 앱 안에서 감독을 받는 태스크이며, 같은 API와 같은 규율 위에 있고, 프로세스 경계가 아니라 패닉으로부터 격리됩니다. 두 계층을 가르는 것이 무엇인지는 확장 만들기를 보세요.
이 페이지는 사용자 쪽입니다. 직접 만들려면 확장 만들기를 보세요.
함께 제공되는 것
섹션 제목: “함께 제공되는 것”다섯 개 모두 2.0.0과 함께 제공되며 꺼진 상태로 시작합니다. 설정 → 확장에서 하나를 켜면 그 탭이 대시에 추가됩니다.
| 확장 | 하는 일 |
|---|---|
| VRChat OSC | 챗박스, 아바타 파라미터, 카메라, OSC 트래커, OSCQuery 탐색. SteamVR를 닫아도 작동합니다. |
| 사운드보드 | 카테고리, 게인, 루프·분할 패드를 갖춘 패드. 패드마다 헤드셋이나 마이크, 또는 둘 다로 라우팅 |
| OBS Control | 최대 16개의 OBS 인스턴스에 걸친 장면 전환, 스트림 및 녹화 상태, OBS Director 패널 |
| Twitch | 로그인, 7TV 이모트를 지원하는 채팅, VR 안의 광고 HUD를 갖춘 광고 관리자, 최대 4개의 라이브 방송 플레이어 |
| Steam Link Face | Steam Link로 스트리밍하는 Quest Pro의 얼굴 트래킹을 O·VR의 얼굴 트래킹으로 가져옵니다 |
2.0.0은 vrOS 1과 기능이 같지 않습니다. 더 많은 크리에이터 기능이 확장으로 하나씩 돌아오며, 지금 가지고 있는 빌드에 무엇이 들어갔는지는 릴리스 노트가 알려 줍니다.
동의 화면
섹션 제목: “동의 화면”확장은 설치할 때가 아니라 처음 실행될 때 묻습니다. 결정하기 전까지는 중지된 채로 있습니다. 실행되지 않고, 레일 슬롯도 차지하지 않습니다.
이 화면은 확장이 요청하는 모든 케이퍼빌리티를 나열하며, 각각에 자체 토글과 그것이 실제로 무엇을 뜻하는지 쉬운 말로 설명하는 한 줄이 붙습니다. 요청하지 않은 케이퍼빌리티도 요청 안 함으로 표시된 채 함께 나열되므로, 그 확장이 언젠가 요청할 수 있는 것의 전체 모습을 볼 수 있습니다. 그다음은 전부 거부하거나, 선택한 것만 허용하는 것입니다.
나중 버전이 새로운 것을 원하면 차이 나는 부분만 다시 묻습니다. 이미 허용한 것은 허용된 채로 남습니다.
케이퍼빌리티가 허용하는 범위
섹션 제목: “케이퍼빌리티가 허용하는 범위”| 케이퍼빌리티 | 허용하면 가능한 일 |
|---|---|
| 버스 | 확장이 명시한 vrOS 이벤트를 수신합니다. VR 연결과 연결 해제 같은 것입니다. 자체 이벤트는 언제나 자기 것입니다. |
| 오버레이 | 자체 패널을 공간에 그립니다. 다른 오버레이를 보거나 건드릴 수 없습니다. |
| 캡처 | 특정 창의 캡처 오버레이를 요청합니다. |
| 오디오 | vrOS 오디오 엔진과 그 출력 라우팅으로 재생합니다. |
| 시크릿 | 비밀번호나 토큰을 OS 자격 증명 저장소에 자기 이름으로 보관합니다. |
| OSC | OSC 소켓을 엽니다. |
| 네트워크 | 네트워크와 통신합니다. |
| 동영상 재생 | 인터넷의 동영상과 오디오를 자체 패널에서 재생합니다. 패널이 숨겨져 있어도 오디오는 계속 재생될 수 있습니다. |
| 얼굴 데이터 | 얼굴 및 시선 트래킹 데이터를 제공하거나 읽습니다. |
버스, 오버레이, 캡처, 오디오, 시크릿은 호스트가 강제합니다. 확장이 허용받지 않은 것을 vrOS API에 요청하면 그 호출은 회선에서 거부됩니다.
퍼스트파티 확장
섹션 제목: “퍼스트파티 확장”내장 확장 다섯 개는 vrOS와 함께 제공되며, 설정 → 확장에서 켜기 전까지는 꺼져 있습니다. 미리 허용되어 있으므로 처음 켤 때 묻지 않습니다 — 단, 동영상 재생과 얼굴 데이터는 예외로, 미리 허용되는 일이 없고 언제나 직접 허용하기를 기다립니다. 그 밖에는 진짜 확장입니다. 같은 매니페스트, 같은 케이퍼빌리티 칩, 설정 안의 같은 철회 버튼을 씁니다. 하나를 끄면 멈춥니다.
확장 API가 정직하게 유지되는 방법이기도 합니다. 서드파티가 받는 것과 같은 API 위에 만들어졌고, 비공개 뒷문은 없습니다. 퍼스트파티 기능을 그 API로 만들 수 없다면, 잘못된 쪽은 API입니다.
설정 → 확장
섹션 제목: “설정 → 확장”설치된 확장이 모두 작성자, 버전, 케이퍼빌리티 칩과 함께 나열됩니다. 칩은 허용됨, 요청됨(아직 결정을 기다리는 중), 또는 확장이 비활성화된 경우 중립입니다. 대기 중인 결정은 카테고리 행과 대시 헤더에 배지를 붙이므로, 어디에서든 찾을 수 있습니다.
행마다 검토(전체 동의 화면을 엽니다), 확장 활성화 또는 비활성화, 앞서 허용한 케이퍼빌리티 철회를 할 수 있습니다. 철회는 허용할 때 쓴 것과 같은 스위치입니다. 설정을 보세요.
레일 슬롯
섹션 제목: “레일 슬롯”대시 탭이 있는 활성화된 확장은 레일에 슬롯을 하나 받습니다. 코어 탭이 먼저(패널, 성능, 플레이 공간), 그다음 구분선, 그다음 원하는 순서대로 확장 슬롯이 오고, 설정은 맨 아래에 고정됩니다. 코어 탭과 설정은 움직이지 않습니다.
확장은 기본적으로 데스크톱 앱에서도 레일 탭을 받습니다. 데스크톱 앱을 보세요.
이번 릴리스는 확장의 짧은 레이블 옆에 자리 표시용 외곽선 글리프를 그립니다. 사용자 지정 확장 아이콘은 들어 있지 않습니다.
확장은 두 종류의 패널을 그릴 수 있습니다. 대시 안의 탭, 그리고 공간에 놓는 생성할 수 있는 오버레이 패널입니다. 오버레이 패널은 확장 자신의 대시 탭에서 생성합니다.
오버레이 패널은 평범한 vrOS 오버레이입니다. 월드, 머리, 또는 양쪽 손목 중 어느 쪽에든 앵커로 고정하고, 잡고, 잠글 수 있으며, 다시 시작한 뒤에도 두고 간 자리로 돌아옵니다. 패널을 보세요.
VR 연결이 끊기면 확장의 패널은 숨겨지고 확장은 계속 실행됩니다. 헤드셋을 내려놓는다고 상태가 해체되는 일은 없습니다. VR 없이 실행되도록 표시된 확장은 SteamVR가 있는지조차 알지 못합니다.
명령과 바인딩
섹션 제목: “명령과 바인딩”확장은 이름 붙은 명령을 등록하고, 그 명령은 확장의 패널과 대시에서 실행할 수 있습니다. 컨트롤러로 명령에 닿으려면 설정 → 확장에서 미리 선언된 액션 여덟 개 중 하나에 지정한 다음, vrOS가 노출하는 다른 모든 것과 마찬가지로 SteamVR의 컨트롤러 바인딩에서 그 액션을 바인딩하세요. 지정하지 않은 액션은 아무 일도 하지 않습니다. vrOS는 제스처를 지어내지 않습니다. 입력을 보세요.
서드파티 확장 설치
섹션 제목: “서드파티 확장 설치”확장의 폴더를 다음 위치에 두세요.
- Windows:
%LOCALAPPDATA%\vrOS\extensions\<id>\ - Linux:
~/.local/share/vros/extensions/<id>/
폴더가 있으면 설치된 확장입니다. 활성화하고 동의 화면을 거치기 전까지는, 요청하는 케이퍼빌리티가 칩으로 표시된 채 비활성화 상태로 나열됩니다. 스토어를 통한 서명 배포는 이후 마일스톤이며, 이번 릴리스는 로컬 폴더 설치입니다.
확장이 말썽을 부릴 때
섹션 제목: “확장이 말썽을 부릴 때”크래시가 난 확장은 자체 매니페스트의 정책에 따라 백오프를 두고 다시 시작합니다. 저장된 데이터는 vrOS 안에 있으므로, 재시작은 초기화가 아니라 이어가기입니다.
계속 크래시가 나는 확장은 더 이상 재시작되지 않고 비활성화 상태로 남으며, 이유가 설정 화면에 표시됩니다. vrOS가 더 이상 지원하지 않는 프로토콜 버전으로 만들어진 확장도 같은 방식으로 나열됩니다. 목록에서 조용히 사라지는 것은 없습니다.
지금 당장 멈추려면 설정에서 비활성화하세요. 그래도 문제가 남으면 문제 해결을 보세요.