LUIDA Docs
ComponentsUnity template

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.md

The 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>.asset and ExperimentVariables/<SceneName>.js. These are referenced by name from your scene's LUIDA-ExpManagers prefab.
  • Settings/ExpIdentifiers.js holds your eID, verify token, callExternal endpoint, and pNum. Gitignored by default because it contains the verify token. See Connect to Web Console.
  • Scripts/DataCollectors/<SceneName>.js is the per-scene data-calculator script. The LUIDA-DataCollector prefab references it via the Script Asset field on the LuidaDataCollector component.

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 globals

You'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. Defines Movable Item, Interact Item Trigger, On Receive Signal, etc.
  • KaomoLab/ — purchased third-party package containing CSCombiner (combines multiple scripts on one item) and CSEmulator (runs ClusterScript inside the Unity editor). See KaomoLab tools.
  • VRM/, VRMShaders/ — VRM avatar support, used when you bring researcher-supplied avatars in via AssignAvatarToParticipant.
  • 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

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's Library/, 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