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.
Layout
Section titled “Layout”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
.palletfiles- 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:
| Script | Command |
|---|---|
dh.bat / dh.sh | dh 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,
dhprobably 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.
Configuration: dh-config.jsonc
Section titled “Configuration: dh-config.jsonc”Lives in your workspace root. All properties are optional; omit them to use defaults.
| Property | Type | Default | Description |
|---|---|---|---|
workspaceRoot | string? | Documents/DigitalHeaven | Workspace root directory |
sourceDirectory | string? | {workspaceRoot}/Source | Source pallets location |
palletsDirectory | string? | {workspaceRoot}/Pallets | Compiled output location |
cacheDirectory | string? | {workspaceRoot}/.dh | Cache directory |
watchDebounceMs | int? | 1000 | Milliseconds to wait before auto-compiling |
additionalPalletPaths | string[] | [] | Extra paths to search for pallets (cross-pallet refs) |
blenderPath | string? | auto-detect | Path to Blender executable |
Example:
{ "watchDebounceMs": 500, "additionalPalletPaths": [ "D:/SharedPallets" ], "blenderPath": "C:/Program Files/Blender Foundation/Blender 4.0/blender.exe"}Environment Variables
Section titled “Environment Variables”| Variable | Description |
|---|---|
DH_WORKSPACE | Override 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. |
File Extensions
Section titled “File Extensions”Definition files use custom .dh-* extensions. Each type has its own:
| Asset Type | Extension | Type ID |
|---|---|---|
| Pallet manifest | pallet.dh | — |
| Avatar | .dh-avatar | dh.avatar |
| Object | .dh-obj | dh.object |
| Material | .dh-mat | dh.material |
| Texture | .dh-tex | dh.texture |
| Rig | .dh-rig | dh.rig |
See the Definition Types pages for what goes in each file.
File Format
Section titled “File Format”All definition files are JSONC, JSON with two extras:
- Comments:
// lineand/* block */ - Trailing commas: allowed in arrays and objects
{ // 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.