Datapacks and Codex
Import reflection archives, bind game data, compare versions, and inspect classes.
Capture game data
Section titled “Capture game data”Start a Satisfactory world with KDataForge installed. In the game console, run:
KDF.DumpReflection --assets --functions --flattenedThe exporter writes a timestamped .kdfdata archive under
FactoryGame/KMods/ReflectionExport by default. It contains reflected classes, properties, and
other metadata from that game and mod set. Import the archive through Datapacks → Import or
drop one .kdfdata file onto the desktop window. The app inspects it before installing a
content-addressed game-data resource. Only .kdfdata is a reflection datapack; a ContentLib/
folder follows the separate ContentLib Import
workflow.
What the editor can do with the archive depends on what the export contains:
| Archive part | Used for |
|---|---|
| Classes, properties, defaults | Class pickers, path: completion, value checks, class hover cards |
Functions (--functions) | Completion, signature help and checks for template function calls |
Asset index (--assets) | {dataasset:} and {asset:} completion |
Settings index (indexes/settings.json) | session:, ags: and option: completion, hover cards and the setting.* checks |
Reload classification (kdf.reload) and cold-property catalog | The cold and newActors tags on properties and the restart warnings |
Archives that lack a part still import; the features that need it stay off instead of guessing.
Bind an archive
Section titled “Bind an archive”Imported archives are available in Datapacks. Browse classes and properties, filter the library, and select Bind to project. Review the binding diagnostics before accepting. A project can also use Schema only under Settings → Datapacks. Automatic Vanilla opts into a bundled Vanilla archive if the build includes a complete verified export; new projects do not silently select it.
An explicit binding is saved as [datapack].pluginId in project settings. Disabling that resource
keeps the binding intact but leaves validation schema-only until it is re-enabled or changed.
Missing or partial engine metadata appears as limited or unknown. It is not proof that a class or
property does not exist. The app reads installed archives up to its 512 MiB validation limit;
larger source archives may be deflated during import without changing entry content.
If the Reflection Diff module is enabled, choose Compare on an installed archive to compare classes, properties, structs, and enums with another archive. Unknown metadata stays unknown instead of being treated as a removal.
Explore in Codex
Section titled “Explore in Codex”Open Codex to search reflected classes. Filter by source mod, class kind, abstract/concrete state, or family, and switch between hierarchy and flat views. Select a class for its properties, parent chain, textures, raw metadata, and source path. When Catalog Usage is enabled, scan saved project YAML to see where a class path is referenced. An incomplete project scan is marked limited. Class paths from Codex can be inserted through the editors’ catalog picker.
Start a document from a class
Section titled “Start a document from a class”Select a class in the Datapacks class browser or in Codex and choose CDO patch or Subclass. Class info offers the same two actions. The dialog prefills every property the class sets itself with its exported value, so you start from the class’s real state:
- CDO patch writes a
type: cdodocument whosetargetis the class. Use it to change the class in place. - Subclass writes a generated class whose
parentis the class. The document type follows the ancestry:buildingfor building descriptors, thenresource,item,unlock,recipe,schematicandresearch, andclassfor everything else, such asBuild_*actors.
Choose the pack and the file path inside it. The preview shows the exact YAML before anything is
written. Set by class lists the values the class overrides; All adds every inherited
property that supports set. Select a row to edit its YAML value; editing a value includes it.
Display texts of a subclass get their own localization key in the pack namespace, while a CDO
patch keeps the original key so existing translations still apply.
Some values are not part of the export and stay empty: string table texts (LOCTABLE), instanced
subobjects such as the mUnlocks of a schematic, and values the exporter left blank. Enter them
yourself or leave them out. The editor only creates new files; an existing file or an unsaved
buffer at the same path is never overwritten.
The archive describes the game state at export time. Re-export and rebind after changing the installed game or mod set when completion and class defaults matter.
