KDataForge
Create and patch Satisfactory content with YAML packs, without writing C++.
KDataForge is a YAML-driven runtime content framework for Satisfactory. Put pack files under
<your-mod>/DataForge/**/*.yml to rebalance existing content, generate new classes and assets, or
ship integrations with other mods. Generated content has save-stable identity, and the in-game
editor can inspect live objects and export drafts. Packs can expose typed settings that players
change without touching YAML, and read them back through typed references and templates. In
multiplayer, every process loads its own pack set. KDataForge does not negotiate checksums or
stream applied operations; only pack configuration values are sent from the host to clients.
For Pack Authors
Section titled “For Pack Authors”If you want to rebalance a recipe, add an item, or ship a small content pack without touching C++, start with Getting Started. It builds the smallest possible pack and verifies that it loaded. Use Desktop Pack Manager to edit YAML, review diagnostics, and run a full pack check before starting the game. For existing KPatchwork pull-request policy checks, see Lint Your Pack. Continue with the Task Guides, including Item + Icon + Recipe + Tier-1 Unlock for the most common first content chain.
Once you know the pack shape, use Features to understand a capability and Reference for exact schema or API details. Property Types and Operations explain the codec every patch value uses. Recipes and Items cover two common document types. To let players tune your pack, see Pack Configuration, Templates and Typed References and the walkthrough Player-Configurable Balancing.
The Examples section contains complete multi-capability packs such as Balancing and End-to-End Pack. Use these when you want to see several document types wired together.
For Mod Developers / Contributors
Section titled “For Mod Developers / Contributors”If you are extending KDataForge, adding a native document handler, embedding it from another mod, or reviewing the pipeline, use Internals & Architecture. It is contributor material, not a prerequisite for authoring a pack.
Architecture walks the full data flow from filesystem scan to reflection-based property edits, and Module Structure maps the plugin’s runtime modules.
The Reference section contains the normative detail.
YAML Schema is the complete grammar, Handler Template
is a reference C++ implementation for a new handler, API Design
covers the public API surface for third-party mods, and Editor Integration
documents KDF.ApplyToAssets for applying YAML packs directly onto assets inside the Unreal Editor.
The Blueprint Config API is the surface for building a
pack settings screen, and Config Expressions is the
grammar of config: conditions.
Commands
Section titled “Commands”KDataForge exposes a small set of chat commands (typed in-game as /kdf ...) and console variables
for inspecting and controlling a running instance without editing files:
| Command | Where | Effect |
|---|---|---|
/kdf report | chat | Prints the load report: packs, applied documents, ops, warnings, errors |
/kdf reload | chat (host/server admin) | Restores KDF property baselines, rescans all pack files (including edited configuration values files: hot values apply, cold values report “restart required”), and re-applies the normal stage pipeline. See Smart reload |
KDF.Reload | console (host/server) | Same smart reload as /kdf reload; useful for dedicated-server consoles and launch automation |
/kdf editor | chat (host) | Toggles the in-game editor: browse content, edit properties live, undo/redo, and export changes to YAML |
KDF.Editor | console | Same as /kdf editor |
/kdf debug on|off | chat | Flips global debug logging (same switch as KDF.Debug). Bare /kdf debug toggles the current state |
KDF.Debug 1 | console (or launch arg -KDFDebug) | Global debug logging: one [KDF DEBUG] line per applied op, including editor edits. Narrower scopes: debug: true per document or in pack.yml |
KDF.ApplyToAssets [PathFilter] | console (UE editor builds only) | Applies loaded YAML directly onto editor assets and marks packages dirty. See Editor Integration |
/kdf config dump [pack] | chat | Lists the pack configuration fields with value, default and effective value. See Pack Configuration |
/kdf config set <pack>:<id> <value> | chat (host/server admin) | Sets a pending configuration value (lists take comma separated elements) |
/kdf config apply [pack] | chat (host/server admin) | Saves pending values and reloads when a hot field changed; reports keys that need a restart |
KDF.Config.Dump, KDF.Config.Set, KDF.Config.Apply | console | Console versions of the three commands above |
KDF.Template "<text>" [pack] | console | Expands {prefix:body} templates, see Templates |
KDF.Config.Expr "<expr>" [pack] | console | Evaluates a config: expression, see Config Expressions |
/kdf-reflection [options] | chat (host/server) | Exports reflected classes, structs, enums, defaults, functions, game settings, Blueprint mappings, and assets. Without options it uses the full profile. See Reflection Export |
KDF.DumpReflection [options] | console (host/server) | The same export with time-sliced game-thread work. Without options it writes no functions, asset indexes or flattened classes; pass --assets --functions --flattened for the full profile |
KDF.ValidateReflection [--out] | console | Runs acceptance checks against completed reflection output |
Quick Start
Section titled “Quick Start”Create <your-mod>/DataForge/pack.yml:
ref: MyTweaksname: My Tweaksversion: 1.0.0Then create <your-mod>/DataForge/my-tweaks.cdo.yml:
type: cdopatches: - target: /Game/FactoryGame/Recipes/Smelter/Recipe_IngotIron.Recipe_IngotIron_C properties: - path: mManufactoringDuration op: multiply value: 0.5Start the game. The recipe now smelts twice as fast. Use /kdf report in chat to inspect the load
report. After changing YAML, use /kdf reload for a smart live re-apply; restart when changing
frozen content registrations or other restart-bound state.
Prefer a UI? /kdf editor opens the in-game editor with live property editing and YAML export. For
local pack validation, use Desktop Pack Manager to catch static schema
errors before shipping.
