The MDK project configuration is managed through .ini files, which handle various settings related to script generation, minification, and output paths. These files enable flexibility by distinguishing between project-specific configurations and machine-specific overrides.

Tip

MDK Hub users: You can edit most configuration settings visually through the Hub's configuration editor instead of manually editing .ini files.

File Overview

  1. [projectname].mdk.ini
    This file contains project-specific settings and should be checked into source control to maintain consistent configurations across different environments.

  2. [projectname].mdk.local.ini
    This file is specific to the local machine and is not meant to be checked into version control. It allows developers to apply local customizations (e.g., output paths) without affecting the project-wide settings.

Configuration Settings

[mdk]

This section applies to both .ini files. All settings can be defined in either file, with the local file (.mdk.local.ini) taking precedence over the project file for overrides.

type=programmableblock|mod

log=[file path]

trace=on|off

interactive=OpenHub|ShowNotification|DoNothing

namespaces=[comma-separated list]

minify=none|trim|stripcomments|lite|full

minifyextraoptions=none|nomembertrimming

ignores=[glob patterns]

donotclean=[glob patterns]

macros=[comma-separated list]

Branch-Specific Output Folders (mods)

Note

This applies to mod projects only.

By default a mod is packed into an output folder named after the project. You can override that folder name per git branch by adding [mdk-branch:<branchname>] sections to mdk.ini. Because the output folder is what determines a mod's Steam Workshop identity, this lets you publish a separate (e.g. alpha or test) Workshop item from a dedicated branch without ever touching your released mod — handy when you need to push a build to a dedicated server for testing. Promoting a tested change to the real mod is then just merging the branch.

When MDK packs a mod, it reads the current git branch and looks for a matching [mdk-branch:<branch>] section:

[mdk-branch:<branchname>]

Important

If you have defined any [mdk-branch:*] sections but MDK cannot determine the current branch (the project isn't in a git repository, or the repository is in a detached-HEAD state), the pack is aborted with an error. This is deliberate: it prevents an intended alpha build from silently being packed into — and published over — your released mod.

Local-Specific Settings

The following settings are typically defined in the .mdk.local.ini file to apply machine-specific configurations. These are not required to be shared across developers or environments, providing flexibility in setup.

output=auto|[specific path]

Note

Global path configuration: Instead of setting output per-project, you can configure a global default in MDK Hub's settings. This is especially useful on Linux where auto-detection isn't available.

binarypath=auto|[specific path]

Note

Command-line users: The command-line interface uses -gamebin as the parameter name, but in INI files, use binarypath. Both refer to the same setting (the Space Engineers Bin64 folder).


How the Files Work Together

Both .mdk.ini and .mdk.local.ini can contain the same settings, but they serve different purposes. Settings in .mdk.local.ini will always override those in .mdk.ini if both are defined.

Recommended organization (as used by MDK Hub):

mdk.ini (project settings - commit to source control):

mdk.local.ini (machine-specific settings - do NOT commit):


Footnotes:
1: %AppData% is a Windows macro that will resolve to a special folder on your computer. If you wish to find it, open a Windows Explorer and type it into the address bar and press enter.