Skip to content

Platforms

DigitalHeaven supports multiple games through platform-specific mods, most of them built on the DigitalHeaven.Unity runtime library. Minecraft and Project Zomboid are the exceptions: neither is a Unity game, so each composites avatars rendered by a sidecar DigitalHeaven engine process instead. Garry’s Mod renders nothing of its own: it exports each avatar to a native Source playermodel. Resonite has no mod at all: the avatar is pushed into the session you host over Resonite’s own ResoniteLink, as native slots, meshes and materials.

Content DigitalHeaven cannot distribute, such as a game’s own assets or a paid avatar base, comes in through a recipe: what DigitalHeaven ships, which is public. You supply the ingredients, your own files, and the two make a local pallet under the platform’s shared ID. See Recipes and ingredients.

A platform ID is a reverse-DNS pallet ID, publisher first. It names the pallet that carries a platform’s content, such as imported sounds or blocks, and it is what a voxel’s platform field holds. Every platform also has one or more built-in aliases, short names that read as the ID. The docs use the alias; the ID is what is stored.

PlatformPlatform IDBuilt-in aliases
Unitycom.unity.unityunity
VRChatcom.vrchat.vrchatvrchat
Schedule Icom.tvgs.scheduleonescheduleone
Risk of Rain 2com.hopoogames.riskofrain2riskofrain2, ror2
Liar’s Barcom.curveanimation.liarsbarliarsbar
MegaBonkcom.vedinad.megabonkmegabonk
Minecraftcom.mojang.minecraftminecraft
ULTRAKILLcom.newblood.ultrakillultrakill
BONELABcom.stresslevelzero.bonelabbonelab
Project Zomboidcom.theindiestone.projectzomboidzomboid, projectzomboid
Source (the engine, shared by every Source game)com.valvesoftware.sourcesource
Garry’s Modcom.facepunch.gmodgmod
POSTAL 2com.runningwithscissors.postal2postal2
Resonitecom.yellowdogman.resoniteresonite
PEAK (mod project, no page yet)com.landcrab.peakpeak
Lethal Company (mod project, no page yet)com.zeekerss.lethalcompanylethalcompany
Half-Life 2 (imported content, no page)com.valvesoftware.hl2hl2
Counter-Strike: Source (imported content, no page)com.valvesoftware.cstrikecss, cstrike
Day of Defeat: Source (imported content, no page)com.valvesoftware.doddods, dod
Half-Life 2: Deathmatch (imported content, no page)com.valvesoftware.hl2mphl2dm, hl2mp
Team Fortress 2 (imported content, no page)com.valvesoftware.tftf2, tf
Counter-Strike 2 (imported maps)com.valvesoftware.cs2cs2
Deadlock (imported maps)com.valvesoftware.deadlockdeadlock
s&box (imported maps)com.facepunch.sboxsbox
Teardown (voxel source, no page)com.tuxedolabs.teardownteardown
MagicaVoxel (voxel source, no page)com.ephtracy.magicavoxelmagicavoxel

Anywhere a platform is named, the ID or an alias works, matched without regard to case: the pallet folder platforms/<name>/, a block under platforms in dh-config.jsonc, a voxel’s platform. DigitalHeaven normalizes the name to the ID, so a .dh-vox written with minecraft is stored as com.mojang.minecraft. A name that is not in the table passes through unchanged, so a modded game or a neutral tool still works under an ID of its own. Aliases are built in; a pallet or a workspace cannot define one.

A platform’s pallet folder may be spelled with the ID or with any of its aliases, and a pallet may even use both. Files that sit in only one of the folders are all read. When the same file exists under two spellings (platforms/bonelab/avatars/mayu.jsonc and platforms/com.stresslevelzero.bonelab/avatars/mayu.jsonc), the ID’s copy is read and a warning names both paths, so a stale copy never decides silently. Delete one. In dh-config.jsonc, when a platform’s block is keyed by both spellings, the ID’s block is read.

Engine and game layers. source is the Source engine, not a game: it holds settings that apply to every Source target, and each game’s own platform layers over it. For the Source export, in the workspace’s platforms block and in an avatar’s platforms/<name>/<avatar>.jsonc alike, the order is built-in default, then source, then gmod, then the user’s force, each layer overriding only what it states. Garry’s Mod is the one Source game so far.

Each game’s badge names what DigitalHeaven runs on there: a Unity mod on Mono or IL2CPP, a Java mod (with Lua for Project Zomboid’s menus), a native Source playermodel for Garry’s Mod, or a live link into a running Resonite session. Its color is a tier, read from the two tables on this page. Count every Core Features row, and every Multiplayer Features row for the games in that table: a green cell scores 1, an amber cell ½ and a red cell 0. A game that scores at least a third of its rows is Excellent (green), at least a fifth Good (blue), and below that Basic (amber). Changing a cell can change a tier, so update the badge here, in the sidebar and on the game’s page together.

For ULTRAKILL, avatar replacement covers the first-person arms (revolvers, the Spawner Arm, the Feedbacker and the Knuckleblaster) and the whole body V1 shows in mirrors and portals.

FeatureSchedule I Unity MonoRisk of Rain 2 Unity MonoLiar’s Bar Unity MonoMegaBonk Unity IL2CPPMinecraft JavaULTRAKILL Unity MonoBONELAB Unity IL2CPPProject Zomboid Java + LuaGarry’s Mod SourcePOSTAL 2 Unreal Engine 2Resonite Live link
OverlayYesWIPWIPUnstableNoWIPUntestedNoNoNoNo
Avatar replacementYesWIPWIPYesYesWIPYesYesYesPrototypePartial
Spring bonesYesNoNoWIPYesNoYesYesJigglebonesNoPartial
Spring collidersUntestedNoNoUntestedYesNoUntestedYesNoNoNo
Avatars as spawnable NPCs and ragdollsNoNoNoNoNoNoExperimentalNoYesNoNo
Paper doll (your avatar in a corner of the view)NoNoNoNoYesNoYesNoNoNoNo
World mirror (placed in front of you)NoNoNoNoNoNoUntestedNoNoNoNo
Eye look and blinkNative targetsIdleIdleIdleIdleIdleUntestedIdleNative targetsNoPartial
Mouth (visemes) to voices and speak clipsNoNoNoNoNoNoUntestedNoNoNot checkedNo
Reaction soundsNoNoNoNoNoNoYesNoNoNoNo
DH maps as playable levelsYes, voxels untestedNoNoNoNoNoUntestedNoNoNoNo
DigitalHeaven noclipYesNoNoNoNoNoNoNoNoNoNo

Every Unity mod runs the DigitalHeaven eye look and blink, which has not yet had an in-game check. Idle means the eyes wander and blink on their own, since the game offers no look target; Native targets means the game’s own look-at (Schedule I’s gaze system) steers them. ULTRAKILL’s runs on the mirror avatar. BONELAB’s looks at the other players’ heads and at its own reflection in a game mirror, whose eyes and blinks follow the body’s. BONELAB is also the one Unity mod whose avatars move their mouths, to LabFusion voices, an opt-in single-player microphone and dh.speakSound clips. Minecraft and Project Zomboid render through the engine, whose avatar service runs the same eye look and blink; neither mod sends it a look target yet, so their eyes idle. Garry’s Mod runs the same eye brain in its native module, on players and NPCs, with an NPC’s own view target (its enemy, or what it looks at) steering it; without the module, its avatars still blink on Source’s own blink.

Schedule I’s map visits also stream a map’s voxel volumes (Minecraft worlds and .vox models), drawn and solid around the player; that part has not been checked in a game yet. BONELAB’s levels leave voxel volumes out.

Avatars as NPCs come in a Friendly and a Hostile entry per avatar on Garry’s Mod, which builds them on a stock citizen. BONELAB (experimental) lists each avatar once and chooses the disposition, the base NPC and the body mode in the spawn gun’s info pane, remembered per entry; the default Ford body, tested usable in game, has the avatar’s bones ride Ford’s own rig, scaled to the avatar’s height, with Ford’s joints moved onto the avatar’s and its colliders fitted to the mesh, as community NPC mods do.

BONELAB can also offer a [Player rig] body per avatar, a development body that is off by default: a second player rig wearing the avatar, walked on the thumbstick by DigitalHeaven’s own NPC brain (Core’s NpcBrain, which the engine can host later). Every BONELAB body mode takes the game’s own wounds where it is hit (untested in game); like stock BONELAB, the player’s own body takes none.

Garry’s Mod exports avatars on Windows and on Linux (the x86-64 branch, compiling with the game’s Windows studiomdl under Proton’s Wine; the Linux module has exported end to end outside the game but not yet inside it). Seeing other players’ avatars needs no module, on any OS.

Minecraft, Project Zomboid and Garry’s Mod have no DigitalHeaven overlay. Each picks its avatar from a menu built in the game’s own UI instead: Minecraft’s DigitalHeaven screen, a DigitalHeaven tab in Project Zomboid’s character window, and a DigitalHeaven window on Garry’s Mod’s C menu, whose Manage tab lists every workspace avatar with its export. Garry’s Mod’s spring bones are Source jigglebones, translated from the avatar’s spring settings at export; jigglebones have no colliders. Minecraft and Project Zomboid collide spring chains with the colliders they list through the engine’s own solver. Schedule I, MegaBonk and BONELAB collide through the shared Unity spring component, which calls the same Core push; none has been checked in a game yet. Resonite’s avatar replacement is a push: the avatar arrives as a world object you equip and save yourself, and a later push updates it in place. Its spring bones are Resonite’s own DynamicBoneChains, which have no angle limits, and its eyes are Resonite’s own, set up by its avatar creator. VRChat has no column because it is an editor export rather than a runtime: its spring bones and spring colliders become PhysBones when the pallet is imported.

MegaBonk and ULTRAKILL are single-player and excluded from this table. BONELAB’s multiplayer comes from the community Fusion mod, which DigitalHeaven reads by reflection: players with the same pallets see each other’s DH avatars, a DH avatar with visemes follows its player’s Fusion voice with Fusion’s jaw flap kept off it, DH NPCs and DH maps load by barcode, DH players on one local network see each other’s servers on LabFusion’s Enter Code page, and a feature-by-feature table is on BONELAB (none of it played in a lobby yet). Project Zomboid is single-player only: it replaces the local client’s own rendering, so there is no server-visible avatar to sync. Minecraft learns who wears what from a LAN world or Fabric server running the mod, or from your own friends file, and draws the other players as those avatars when their pallets are in your workspace (see Minecraft). Garry’s Mod transfers each player’s exported model instead of a pallet, through the server, so the other players need neither the pallet nor DigitalHeaven’s native module (see Garry’s Mod).

FeatureSchedule I Unity MonoRisk of Rain 2 Unity MonoLiar’s Bar Unity MonoGarry’s Mod SourceMinecraft Java
Avatar syncYesWIPNoYesYes
Pallet transfersYesNoNoExported modelNo
NPC replacementYesNoNoNoNo
Lobby expansionYesNoNoNoNo