Skip to content

VR Client

The Unity application the participant wears. It renders the interview room and the interviewer's avatar, streams microphone audio, presents the questionnaire, and logs every tracked channel.

Source: Va.Si.Li-Lab · Target: Meta Quest

Setup is documented in the Va.Si.Li-Lab docs

Unity project setup, the editor version, scenes, avatars, tracking, building for Quest, and the full component configuration for InterView live at InterView VR Client in the Va.Si.Li-Lab documentation.

This page covers only how the client fits into the platform - what it talks to, and the two contracts that span repositories.

What it connects to

Four independent services. Each is configured separately, and each can fail without the others noticing.

Service Purpose Configured in
Janus Audio/video and the control data channel WebCamClient
Ubiq VR room and avatar state RoomClient connection definition
Logging API Tracking data and events Va.Si.Li API asset
Questionnaire The survey instrument InterviewTokenManager

The VR client is a peer of the web client, not a special case: both join the same Janus room, both attach the videoroom and textroom plugins, and either can be swapped for the other. That is what makes a browser usable as a non-VR participant view and as the simplest way to test a deployment.

Cross-repository contracts

Two things must agree across repositories. Both fail silently, which is why they are called out here rather than left in the setup instructions.

1. Token derivation must match the web client

InterviewTokenManager.RoomIdFromString() (Unity) and roomIdFromString() in js/state.js (web) implement the same function:

numeric token          -> parsed as an integer
anything else          -> DJB2 hash (seed 5381, ×33), absolute value, minimum 1

If they diverge, the interview splits in two

Interviewer and participant join different rooms. Each waits alone, no error is shown, and nothing in the logs says why. Change both or neither.

See Token and room derivation.

2. The logging API key must match the server

The key set in the Unity API asset must equal X_API_KEY in the server's .env.

A mismatch loses the session without interrupting it

Logging failures do not stop an interview. The session runs normally and records nothing. Verify data is arriving before a participant sits down - see Logging API.

Endpoints the client needs

Setting Points at Default port
WebCamClient.ServerUrl Janus, via the TLS proxy - wss:// 8188 behind the proxy
RoomClient connection Ubiq TCP 16485
API asset host Logging API, via the proxy 16481
InterviewTokenManager.BrowserBaseUrl Your questionnaire -
WebCamClient.RecordingPath /mnt/recordings/ inside the Janus container -