Skip to content

Workspace

Your DigitalHeaven workspace (default: Documents/DigitalHeaven) contains source pallets, compiled output, configuration, and cache data. It’s shared across all tools — Studio, CLI, and game mods.

  • DirectoryDigitalHeaven/
    • DirectorySource/ Your source pallets live here
      • Directoryio.mltn/
        • Directoryavatars/
          • Directorymltn-mayu/ Pallet ID: io.mltn.avatars.mltn-mayu
            • pallet.dh Pallet manifest
            • mltn-mayu.dh-avatar Avatar definition
            • Directorytextures/
              • base-color-1001.png
              • base-color-1002.png
            • Directorymaterials/
              • mltn-mayu-body.dh-mat
              • mltn-mayu-head.dh-mat
            • Directoryaccessories/
              • Directoryround-glasses/
                • round-glasses.dh-obj
                • model.fbx
      • Directorytech.azuki/
        • Directoryavatars/
          • Directorymayu/ Pallet ID: tech.azuki.avatars.mayu
            • pallet.dh
            • mayu-tora.db-avatar
            • Directorymodels/
              • body-tora.fbx
            • Directoryrigs/
              • tora.dh-rig
            • Directorytextures/
              • tora-base-color-1001.png
              • tora-base-color-1002.png
            • Directorymaterials/
              • mayu-body.dh-mat
              • mayu-head.dh-mat
    • DirectoryPallets/ Compiled .pallet files
      • io.mltn.avatars.mltn-mayu.pallet
      • tech.azuki.avatars.mayu.pallet
    • DirectoryScripts/ User-editable scripts
      • fbx_to_glb.py FBX→GLB conversion script (yours to customize)
    • Directory.dh/ Compiler data and cache
      • Directoryfbx-cache/ Cached GLB conversions of FBX source files
      • Directoryreceived/ Pallets received from other players via transfers
      • Directorytemp/ Temporary build artifacts
    • Directory.vscode/ Workspace settings
    • dh-config.jsonc Main configuration
    • dh-studio.jsonc Studio preferences
    • dh-friends.jsonc Friend list for pallet sharing
    • .gitignore
    • .gitattributes LFS tracking for binary assets

The workspace also includes a convenience script:

ScriptCommand
dh.bat / dh.shdh interactive

This launches the interactive menu, where you can build, watch, validate, and more. See CLI: Interactive Mode for details.

If the script doesn’t work, dh probably isn’t in your PATH. See the Setup page.

Pallets are organized by reverse-DNS ID: io.mltn.avatars.mltn-mayu lives at Source/io.mltn/avatars/mltn-mayu/. See Pallets & Assets for details.

Lives in your workspace root. All properties are optional; omit them to use defaults.

PropertyTypeDefaultDescription
workspaceRootstring?Documents/DigitalHeavenWorkspace root directory
sourceDirectorystring?{workspaceRoot}/SourceSource pallets location
palletsDirectorystring?{workspaceRoot}/PalletsCompiled output location
cacheDirectorystring?{workspaceRoot}/.dhCache directory
watchDebounceMsint?1000Milliseconds to wait before auto-compiling
additionalPalletPathsstring[][]Extra paths to search for pallets (cross-pallet refs)
blenderPathstring?auto-detectPath to Blender executable

Example:

dh-config.jsonc
{
"watchDebounceMs": 500,
"additionalPalletPaths": [
"D:/SharedPallets"
],
"blenderPath": "C:/Program Files/Blender Foundation/Blender 4.0/blender.exe"
}
VariableDescription
DH_WORKSPACEOverride the workspace root directory. Takes priority over workspaceRoot in dh-config.jsonc. Useful for Proton/Wine where Documents resolves to the Wine prefix instead of the real user directory.

Definition files use custom .dh-* extensions. Each type has its own:

Asset TypeExtensionType ID
Pallet manifestpallet.dh
Avatar.dh-avatardh.avatar
Object.dh-objdh.object
Material.dh-matdh.material
Texture.dh-texdh.texture
Rig.dh-rigdh.rig

See the Definition Types pages for what goes in each file.

All definition files are JSONC, JSON with two extras:

  • Comments: // line and /* block */
  • Trailing commas: allowed in arrays and objects
avatar.dh-avatar
{
// This is fine
"name": "My Avatar",
"tags": [
"custom",
"v2", // trailing comma OK
],
}

Parsed with System.Text.Json. Relaxed on formatting, strict on validation. The compiler catches errors at build time with file paths, line numbers, and helpful messages.