Frostdev

KilnWikiDev kit

The dev kit

Kiln.Sdk, project templates, the kiln command, a linter, analyzers, a VS Code extension, a debugger and game-id constants.

Works today 3 min read Updated

Part For
Kiln.Sdk the MSBuild SDK for mod projects
Templates a working project for each kind of mod
The kiln command new, build, cook, deploy, run, reload, test, debug, lint, pack, logs, catalog
Lint and analyzers checks on your JSON and your C#
VS Code extension schemas, lint, game ids, tests, logs, a debugger, Impact assembly
Catalogs the game’s ids from your own install
Testing tests that run inside the server
Debugging breakpoints in a running server, logs, crash reports

Use the SDK/MDK download matching your Kiln runtime (the SDK packages, the kiln command and the VS Code extension are under Mod authors on the download page), or build it from source. The folder holding its .nupkg files is the local package “feed”; pass it to kiln new with --feed <folder> or set $KILN_FEED.

Kiln.Sdk

Use the full version from your MDK pack (0.2.0-dev.22 for this release); local packs have their own version.

<Project Sdk="Kiln.Sdk/0.2.0-dev.22">
  <PropertyGroup>
    <KilnModId>my-mod</KilnModId>
    <Version>1.0.0</Version>
    <KilnServices>Players;Chat</KilnServices>
  </PropertyGroup>
  <ItemGroup>
    <KilnDependency Include="sample-lib" Version="^1.2" />
  </ItemGroup>
</Project>

It targets .NET 10 and references Kiln’s API and your services without copying them. NuGet dependencies are copied next to your mod. Without a kiln.mod.json, the build writes one from the properties; with one, it checks it.

Property Sets
KilnModId, KilnModName, Version, Description, Authors identity
KilnSide, KilnClients where it runs, what players need
KilnServices the services you use, and Testing
KilnServer your test server’s folder
KilnTestsAutoRun run tests at server start and after reloads
KilnModFolders data folders to ship; default content;assets;skills;quests;blocks;icons;impact;audio;vfx;models
KilnAnalyzers, KilnGameIds analyzers, game-id constants

Items: KilnDependency, KilnLoadBefore, KilnLoadAfter, KilnIncompatible.

The kiln command drives the targets, which also work alone: dotnet build -t:KilnDeploy, -p:KilnReload=true, -t:KilnPack.

Templates

kiln new <template> <Name>, or dotnet new kiln-<template>. The dev.22 CLI lists 23 templates with kiln new --list.

Template Gives you Side, clients
mod a code mod; tests=true adds tests server, none
datapack content/*.json edits server, none
items new items and recipes, with icons both, mod
creature a creature clone with level, scale and spawning both, kiln
ability an ability; impact=true adds a program both, none
ui a game UI overlay client, mod
model a glTF model and its recipe both, mod
body a creature with its own skinned body, animations, AI and attack both, mod
sound sounds, cues and their recipe both, mod
talents a talent tree both, mod
native a C++ mod both
test a separate test mod; target=<mod> depends on it server, none
service a native + managed service, inside Kiln’s source

New in 0.2.0-dev.20: block-first templates item-blocks, world-blocks, creature-blocks, npc, cosmetic, building-material, ability-blocks, quest; UI blocks with kiln new ui MyUi --set blocks=true. They supply typed blocks and/or blocks/*.json, so keep the form you need. The items and creature templates remain available for clone-based changes no block expresses. Confirm options with kiln new --list from the installed MDK; older dev.19 installations lack these additions. Building blocks

Run kiln cook before the first build of model, sound and ability with Impact. kiln build does it when a recipe is out of date.

dotnet new makes new GUIDs each time. Recreate a project under the same name and a world that saw the first keeps its items as placeholders. Use a fresh world or another name.

If you rebuild Kiln’s packages without changing their version, clear ~/.nuget/packages/kiln.* first.

Enshrouded is a trademark of Keen Games GmbH. Kiln is unofficial.