Platform & avatar mode settings
Allowed platforms (VR, Windows, Mac, Android, iOS) and avatar modes (HIDE, DEFAULT, UNRESTRICTED) — the two World & Platform fields that shape who can join and what they look like.
These pages are not yet fully reviewed. The LUIDA team is continuing to review and improve them. If you find anything wrong on these pages, or have questions that aren't resolved by reading them, please ask or report to the LUIDA team.
When creating an experiment, the World & Platform card has two settings that shape how your study runs: allowedPlatforms and participantAvatarMode. They control, respectively, which device types can join the experiment and what participants look like once they're inside.
You can edit both fields any time from the experiment detail page after creation. They take effect immediately for new sessions; sessions in progress are unaffected.
Screenshot pending — the World & Platform card on the experiment detail page, with the platform checkboxes (4/5 checked) and the Participant Avatar dropdown set to HIDE.
allowedPlatforms — which devices can join
A multi-select with five options:
| Value | Devices | Notes |
|---|---|---|
VR | Meta Quest, Valve Index, PCVR rigs, etc. | The main LUIDA platform — most studies are VR-first. Hand tracking, room-scale movement, and bone-level data only work here. |
WINDOWS | Cluster desktop client (Windows) | Mouse + keyboard. Participants render as a pinned head + arms; full-body avatar sync isn't available. |
MACOS | Cluster desktop client (Mac) | Same as Windows, minus PCVR support. |
ANDROID | Cluster mobile (Android) | Touch UI; limited interaction. |
IOS | Cluster mobile (iOS) | Same as Android. |
By default all five are checked. The setting is enforced at the eligibility check (callExternal type=checkJoinEligibility): when a participant tries to enter, the Web Console reads their envInfo.platform from the join request, and rejects them with eligible: false if it isn't in the allowed list. They're then teleported back to a gate world — never reaching your experiment scene.
The setting also appears on the Recruitment World bulletin board: experiments tagged VR-only show a "VR required" badge so participants on other platforms don't try to join in the first place.
When to restrict platforms
A few practical rules of thumb:
- VR-only studies (presence research, body-ownership manipulations, bone-tracking experiments): check only
VR. Other platforms will be rejected at the door rather than partway through. - Cross-platform studies that you've explicitly validated on each platform: check the ones you tested. Don't ship to Android if you haven't run a pilot on Android — input handling and rendering differ.
- Pilot/test runs: check everything. Easier to test from a desktop client than to put on a VR headset every iteration.
Action behavior can vary by platform. SendHaptics, for example, silently no-ops on non-VR platforms. If your study depends on haptics for feedback timing, restrict to VR — otherwise non-VR participants will experience the trial without the haptic and your data will be inconsistent.
participantAvatarMode — what participants look like
A single-select dropdown with three values. The chosen mode is applied across the entire experiment (it's not per-session or per-condition).
HIDE (default)
Forces a transparent / invisible avatar for every participant. Participants are invisible to themselves and to each other.
When to use:
- Perception studies where avatar appearance would confound results.
- Studies that supply a custom avatar via
AssignAvatarToParticipant—HIDEkeeps the original Cluster avatar out of the way so the assigned wrapper avatar is the only thing visible. - Studies where the participant's own embodiment shouldn't matter at all (e.g., reaction-time tasks with no body in scene).
DEFAULT
Forces the standard LUIDA avatar on every participant — a neutral, gender-ambiguous full-body mesh. Every participant looks the same.
When to use:
- Between-subjects studies where avatar variability would confound results (e.g., a paired-trust study where you don't want one condition having "cute" avatars and another "scary" ones).
- Studies that depend on full-body presence but don't want to deal with avatar-related noise.
UNRESTRICTED
Participants keep their own Cluster avatar, including UGC and uploaded VRMs.
When to use:
- Naturalistic social studies where self-expression matters.
- Pilot or recruitment events where you want participants to feel at home.
The avatar mode lives on the experiment, not on individual states. If your design needs avatars to change mid-experiment (e.g., embodiment manipulation), use HIDE here and use AssignAvatarToParticipant inside your state-listening items. The wrapper avatars LUIDA spawns will render correctly only when this mode is HIDE.
Interaction with AssignAvatarToParticipant
If you use the runtime action AssignAvatarToParticipant("foo", 1) anywhere in your scene, the experiment's participantAvatarMode must be HIDE. Otherwise:
- With
DEFAULT: the participant renders with both their LUIDA standard avatar AND the assigned wrapper avatar simultaneously, occupying the same space. Looks broken. - With
UNRESTRICTED: same problem, but with their personal Cluster avatar visible behind the wrapper.
The console shows an inline warning when you select DEFAULT or UNRESTRICTED and your project has registered avatars (LUIDA's avatar manager sets a flag the console reads). Heed it.
Where the values are stored
Both fields are columns on the Experiment Prisma model:
allowedPlatforms: Platform[]— array of enum values.participantAvatarMode: AvatarMode— single enum value (HIDE/DEFAULT/UNRESTRICTED).
The Recruitment World fetches both via the questList and questInfo dispatch types; your experiment world reads them implicitly via the eligibility check.
Common pitfalls
- Checking only
VRwithout testing in CSEmulator. CSEmulator runs as a desktop environment. Tests will hit eligibility rejection unless you temporarily checkWINDOWS/MACOSfor development. - Leaving
DEFAULTon while usingAssignAvatarToParticipant. The double-avatar bug is visible immediately in any test session — fix by switching toHIDE. - Forgetting that
UNRESTRICTEDallows UGC avatars. Some Cluster UGC avatars are very large mesh-wise or use materials that interact unpredictably with low-light experimental scenes. If lighting matters, useHIDEorDEFAULT. - Restricting platforms after publishing. Tightening
allowedPlatformsafter launch means in-flight participants on now-excluded platforms get rejected on their next session. Usually fine, but flag it in your debrief.
Where to go next
- Creating an experiment — where you first set these fields.
- Sessions and balancing — the related runtime caps (
maxSessionCount, exclusion lists). AssignAvatarToParticipant— the runtime action that requiresHIDEmode.- Reference → Web Console API → checkJoinEligibility — what the platform check looks like on the wire.
Creating an experiment
Register a new study on the Web Console — basic info, world bindings, session limits, consent form. Capture the eID to wire into Unity.
Sessions & balancing
maxSessionCount, excluded sessions, excluded participants — cap how much data you collect, drop unusable runs, and balance between-subjects conditions cleanly.