Skip to content

DigitalHeaven Studio

DigitalHeaven Studio is a graphical application for browsing, editing, and building pallets. It provides the same build pipeline as the CLI in a visual interface with an asset browser, inspector, and real-time diagnostics.

DigitalHeaven Studio in View mode, showing the pallet list, asset browser, and inspector panels

On first launch, Studio shows a Welcome dialog to configure your workspace:

Welcome to DigitalHeaven Studio dialog with workspace root, source directory, and pallets directory fields

FieldDefaultDescription
Workspace RootDocuments/DigitalHeavenRoot directory for all DigitalHeaven data
Source Directory${WorkspaceRoot}/SourceWhere source pallets live
Pallets Directory${WorkspaceRoot}/PalletsWhere compiled .pallet files go

Click Initialize Workspace to create the directory structure and generate templated files (.gitignore, .gitattributes, convenience scripts, the Blender FBX conversion script, etc.). Click Skip if you already have an existing workspace and don’t want to re-generate these files.

This configuration is shared across all DigitalHeaven tools. Changing the workspace root in Studio also changes it for the CLI, game mods, and anything else that reads dh-config.jsonc.

If you build a pallet that contains .fbx models, Studio will prompt you to set a Blender path for FBX-to-GLB conversion. This is the same requirement as the CLI; see Setup: Creating Pallets for details.

Blender Required dialog showing the path selector for Blender

Studio has two modes, toggled with the Edit / View buttons in the top toolbar:

Edit and View mode toggle

  • Edit mode works with your source pallets in the Source/ directory. This is where you browse and organize your source files.
  • View mode works with built pallets in the Pallets/ directory. This is where you inspect compiled output.

The interface is split into three panels:

Source Pallets panel showing four pallets with names, versions, and IDs

Lists all pallets found in the current directory (source pallets in Edit mode, built pallets in View mode). Each entry shows the pallet’s display name, version, and full ID.

Click a pallet to select it and load its assets in the center panel. The folder icon opens the pallets directory in your file explorer, and the refresh icon rescans for changes.

Displays the contents of the selected pallet. Two view modes are available via the View dropdown:

  • Tree: shows the directory structure as a collapsible tree with folders and files
  • List: shows all assets in a flat list, sortable by name or size

A Filter assets search bar at the top lets you filter by filename.

Tree view shows the full directory hierarchy with expandable folders:

Edit mode showing the Mayu pallet in tree view with accessories, materials, models, and other directories

List view shows all assets flat, sortable by name or size:

Edit mode showing the Mayu pallet in list view, sorted by file size

The right panel has five tabs. Selecting a file switches to the tab that suits it: Components for an object or an avatar, Inspector for anything with a preview (images, models, materials, maps) or a player (audio), Raw Edit for any other text format (looks, sidecars, JSON, pallet.dh), and Inspector for everything else. Turn Auto-Switch Tab off in Preferences to keep the tab you chose.

TabShown forWhat it does
InspectorAlwaysMetadata, import settings, dependents, an avatar’s generated proportions, the audio player, and the preview drawer
Components.dh-obj, .dh-avatarSays where an object’s components are edited
Reactions.dh-avatarShows what the avatar’s reactions resolve to, with where each one was written
Raw EditAlwaysEdits a text file as text; read-only in View mode
DiagnosticsAlwaysThe build log

Inspector panel with a texture selected

Shows metadata for the selected asset: file path, size, checksum, MIME type, import settings, and a list of dependents (other assets that reference this file).

The Preview drawer at the bottom displays a visual preview of the selected asset. Clicking the pop-out button opens the preview in its own window. The preview window is locked by default (indicated by the lock icon), meaning it stays on the current asset even as you browse; unlock it to have it follow your selection.

The gear icon (⚙) in the preview header opens Preferences to the Preview category, where you can configure 3D model rendering:

SettingOptionsDescription
Display ModeShaded, Unlit, WireframeHow the model is rendered — lit with shading (default), flat base color only, or wireframe edges only
Wireframe OverlayOn / OffDraws dark wireframe edges on top of the shaded or unlit model
Lighting PresetDefault, Front, Top, Side, Rim, BottomDirection of the key light (only applies in Shaded mode)

Preview window showing a texture in a standalone pop-out

A map previews as its thumbnail: the <map>.thumbnail.png beside the source, or the .dh-mapthumb companion from the last build when there is no source picture.

A map’s dependents and dependencies include its geometry, material slots, look, sky image and object instances, so selecting a .dh-look lists every map that uses it.

An avatar (.dh-avatar) shows its Proportions: what its body generates for a game to use, read from its compiled pallet (the pallet you are viewing, or in Edit mode the last build of the pallet you are editing; a pallet that was never built says so). It lists:

RowWhat it is
Eye heightThe height the compiler measured and stamped into the avatar, and how it got it
SkullThe head’s main capsule, fitted from the mesh along the avatar’s forward: radius, height and center in avatar meters from the head bone
ProtrusionA second, thinner capsule for whatever sticks out ahead of the skull (a snout and jaw), or none for a round head
Outside bothHow many of the head’s counted vertices neither capsule holds, and the bones that move most of them
Skull centeringHow far the skull sits off the eyes’ midplane
Not countedThe head’s spring-driven vertices (ears, whiskers, swinging hair), which the fit leaves out
Fitted spring collidersEvery spring collider the compiler fitted to the body

Above them the head fit is drawn from the side, with the front, side and top views to choose from: the head’s vertices colored by the bone that moves each one most, the skull and protrusion capsules, the eyes’ midplane and a 100 mm bar. Hair that no spring chain swings counts as solid head, so it widens the skull. The capsules and the audit are the same ones a game integration fits (today BONELAB’s NPCs); Override beside each capsule is a placeholder until per-avatar overrides of generated values exist.

An audio file (.wav, .ogg, .mp3, .flac, .aif) shows a player: play and stop, its length and format, and its waveform, decoded by the engine’s own decoder, so a file that plays here plays in the engine. Under it, Used by lists every reaction in the workspace that names the file, in avatar definitions and platform settings files alike; click one to open the file that names it.

An object’s or an avatar’s components, part overrides and added records are edited in the Halcyon Studio, whose generated cards draw every component from its description, each departure ghosted against what it inherits. This tab says so; here the file is edited as raw text and built.

For a selected avatar, every event and tier with what it runs once the whole inherits chain resolves, then the same again under each platform settings file that has reactions. Each action names where it was written (own, inherited or platform, and the file; click it to open that file), and every clip has a ▶ button. An event the avatar is silent on stays in the list, dimmed; a tier answered by the event’s untiered reaction says every tier. This is the same resolution dh reactions prints, read from the saved files.

Opens any text format a pallet holds: every asset definition (.dh-avatar, .dh-obj, .dh-mat, .dh-tex, .dh-rig, .dh-map, .dh-look, .dh-vox, .dh-block), pallet.dh, the .dh-model, .dh-tex-settings and .dh-ids sidecars, and plain .json/.jsonc. In Edit mode, Save checks the text is valid JSONC before writing; in View mode it shows the compiled definition read-only. Other files show nothing here.

Shows the full build log with tagged entries: INFO for standard progress, NOTE for cache hits and optimization details, and warnings or errors if something goes wrong.

Diagnostics panel showing build output with asset discovery, FBX cache hits, and compiled pallet paths

The log covers the entire build pipeline: definition parsing, reference validation, texture processing, model conversion, asset bundling, and final packaging. Each compiled pallet’s output path is listed at the end.

In Edit mode, right-click in the asset browser and choose New Asset… to create a definition. Every definition kind is offered: Map, Material, Texture, Object, Avatar, Rig and Look. The file starts with its name, plus an empty components list for an object or avatar; a new map starts exactly as one made with the engine editor’s New Map.

The top toolbar has two build-related controls:

Build and Watch toolbar buttons

ButtonDescription
BuildCompile all pallets (same as dh build)
WatchToggle watch mode for auto-compilation on file changes (same as dh watch)

The status bar at the bottom shows the result of the last build: pallet count, warnings, errors, and whether watch mode is active. Build output is shown in the Diagnostics tab.

Right-clicking a single pallet in the pallet list and choosing Build compiles just that pallet, same as dh build <pallet>: its dependencies are compiled too, but pallets that merely depend on it are not.

DigitalHeaven logo, back/forward arrows

The back and forward arrows next to the DigitalHeaven logo in the top-left let you navigate through your browsing history, similar to a web browser.