Project layout
What lives where inside the LUIDA Unity template — Assets/_Experiment_, Assets/ClusterMetaverseLab, and the per-scene generated assets.
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 you clone or download the LUIDA template, you get a regular Unity project with a deliberate two-area split:
Assets/_Experiment_/— your experiment-specific assets. You edit here.Assets/ClusterMetaverseLab/LuidaExpTemplate/— the LUIDA package itself. You don't edit here.
Plus the usual Cluster Creator Kit and third-party folders that come with any Cluster world. This page is a guided tour.
Top-level structure
project-luida-bar/ ← the cloned repo root
├── Assets/
│ ├── _Experiment_/ ← YOUR assets (scenes, settings, scripts)
│ ├── ClusterMetaverseLab/ ← LUIDA package (don't edit)
│ │ └── LuidaExpTemplate/
│ │ ├── Editor/ ← editor windows + menus
│ │ ├── Runtime/ ← runtime prefabs + scripts
│ │ └── Doc/ ← source-of-truth markdown
│ ├── ClusterCreatorKit*/ ← Cluster's CCK
│ ├── KaomoLab/ ← CSCombiner + CSEmulator (purchased)
│ ├── VRM, VRMShaders/ ← VRM avatar support
│ └── ... other Unity packages
├── Packages/
├── ProjectSettings/
├── Tutorial_EN.md, Tutorial_JA.md
├── Documentation_JA.md
└── README.mdThe two areas that matter for day-to-day work are Assets/_Experiment_/ (where your work lives) and Assets/ClusterMetaverseLab/LuidaExpTemplate/ (which you read from but never modify).
Assets/_Experiment_/ — your experiment
This is the only folder you should edit by hand. The LUIDA template ships it pre-populated with template files; you fork it as you build.
Assets/_Experiment_/
├── Scenes/
│ └── <YourSceneName>.unity ← one .unity per experiment scene
├── Settings/
│ ├── ExpIdentifiers.js ← eID, token, endpoint, pNum, isTestMode
│ ├── StateList/
│ │ └── <SceneName>.asset ← ScriptableObject: ordered state list
│ └── ExperimentVariables/
│ └── <SceneName>.js ← within/between variables
├── Scripts/
│ ├── DataCollectors/
│ │ └── <SceneName>.js ← per-scene calculateData() implementation
│ └── CustomDataCollection/ ← reusable custom logic
└── (your custom prefabs, materials, etc.)Key points:
- One scene per experiment. Use
LUIDA › Scene › Create new scene(or Duplicate current scene) to add new ones — see Editor windows → Scene menu. - Per-scene generated assets. When you "activate the automation feature" on a scene, the LUIDA editor creates the matching
StateList/<SceneName>.assetandExperimentVariables/<SceneName>.js. These are referenced by name from your scene'sLUIDA-ExpManagersprefab. Settings/ExpIdentifiers.jsholds youreID, verify token, callExternal endpoint, andpNum. Gitignored by default because it contains the verify token. See Connect to Web Console.Scripts/DataCollectors/<SceneName>.jsis the per-scene data-calculator script. TheLUIDA-DataCollectorprefab references it via theScript Assetfield on theLuidaDataCollectorcomponent.
The _Experiment_ folder name is intentional — the leading underscore sorts it to the top of Unity's Project panel so it's the first thing you see. If you rename it, you'll have to update several hardcoded paths in the LUIDA editor scripts; don't.
Assets/ClusterMetaverseLab/LuidaExpTemplate/ — the LUIDA package
The package you're documenting. You read from it (especially Doc/) but you don't edit it — when LUIDA releases a new version, you'll want to overwrite this folder cleanly.
Assets/ClusterMetaverseLab/LuidaExpTemplate/
├── Editor/Scripts/ ← LUIDA editor windows
│ ├── LuidaConfigWindow.cs ← the 3-tab automation window
│ ├── ExperimentVariablesConfigTab.cs
│ ├── StateMachineConfigTab.cs
│ ├── ItemsManagerConfig/ ← State-listening items grid
│ ├── ExpIdentifierConfigTab.cs
│ ├── LuidaSceneMenuItems.cs ← LUIDA › Scene
│ ├── DataCollection/DataCollectorCreateMenu.cs ← GameObject › LUIDA › Data Collector
│ └── Questionnaire/ ← questionnaire prefab UI
├── Runtime/
│ ├── Prefabs/
│ │ ├── LUIDA-ExpManagers.prefab ← session + state machine + participants
│ │ ├── CustomDataCollection/LUIDA-DataCollector.prefab
│ │ └── ConditionManagement/ConditionManager.prefab
│ ├── Scripts/CSharp/ ← MonoBehaviours
│ ├── Scripts/CustomDataCollection/CustomDataCalculatorTemplate.js
│ └── ExpSettings/ExpIdentifiers.js ← template that gets copied to _Experiment_
└── Doc/ ← source-of-truth markdown
├── LUIDA-StateListeningItemScriptDoc.md ← actions reference (auto-extracted into /reference/actions)
├── LUIDA-DataCollectorScriptDoc.md ← data collector reference (folded into /reference/variables)
└── CCK-Types.d.ts ← typed reference for ClusterScript globalsYou'll dig into this folder when you want to know what a specific editor window does under the hood, or when you want to see the exact prefab structure of LUIDA-ExpManagers. For day-to-day experiment-building, you mostly stay in _Experiment_.
Third-party folders
The remaining top-level folders under Assets/ come from the Cluster ecosystem and avatar tooling:
ClusterCreatorKitTemplate/,ClusterCreatorKit*— Cluster's official CCK. DefinesMovable Item,Interact Item Trigger,On Receive Signal, etc.KaomoLab/— purchased third-party package containingCSCombiner(combines multiple scripts on one item) andCSEmulator(runs ClusterScript inside the Unity editor). See KaomoLab tools.VRM/,VRMShaders/— VRM avatar support, used when you bring researcher-supplied avatars in viaAssignAvatarToParticipant.TextMesh Pro/,MeshUtility/, etc. — standard Unity packages pulled in as dependencies.
None of these are LUIDA-specific; treat them as black-box dependencies.
Files at the repo root
README.md— short overview, pointer to this docs site.Tutorial_EN.md,Tutorial_JA.md— the source files an early form of Tutorial 1 (Priming) was lifted from. Now redundant with Tutorial 1 — Priming + Proteus Effect (without LUIDA automation) but kept until v1 launch.Tutorial_EN_with_automation_feature.md,Tutorial_JA_with_automation_feature.md— same, for Tutorial 3 (Stroop) → Tutorial 3 — Stroop Effect (Other sample).Documentation_JA.md— the original Japanese-language reference for the editor windows. Source for the Editor windows reference section in this docs site.
What to put in version control
A conservative .gitignore for an experiment fork:
- Track:
Assets/_Experiment_/Scenes/*.unity,Assets/_Experiment_/Settings/StateList/*.asset,Assets/_Experiment_/Settings/ExperimentVariables/*.js,Assets/_Experiment_/Scripts/, your custom prefabs and materials. - Don't track:
Assets/_Experiment_/Settings/ExpIdentifiers.js(contains the verify token), Unity'sLibrary/,Temp/,Logs/folders.
The LUIDA package itself (Assets/ClusterMetaverseLab/LuidaExpTemplate/) is normally tracked so collaborators all use the same version; only swap it out when you intentionally upgrade.
Where to go next
- Editor windows → Configure experiment automation (Variables) — the first thing you touch in a fresh scene.
- Connect to Web Console — wire
ExpIdentifiers.jsto a registered experiment. - Tutorial 0 — Hello LUIDA — a 30-minute end-to-end smoke test using everything in this folder.