Skip to content
Doink Oink edited this page Sep 10, 2025 · 19 revisions

Initial Mod Setup

First create your script file that be used to create and manage your config files. In this example we will name it ExampleModConfig.gd

  • While you can do this in your Main.gd script I recommend creating a separate file to keep it clutter free
  • Make sure to place extends Node at the top of the script

ExampleModConfig.gd

extends Node

func _ready():
    pass

mod.txt Autoload

Add your config file to the mod.txt file under the [Autoload] section. This allows the script to be ran as the game first loads so your config file can be created/loaded before anything accesses it.

  • Make sure the path has the correct folder structure to point to the script just like your Main.gd script

mod.txt

[Autoload]
ExampleConfig="res://ModConfigruationMenu/ExampleModConfig.gd"

Config Constants

There are 2 constants that should be defined at the top of your config script to make config creation and registration easier. They are:

  • MOD_ID - A unique identifier for your mod's configuration registration. This does not need to be the same as your mod.txt id
  • FILE_PATH - This is the file path that your config file(s) will be stored. It is very important that your config files be saved at "user://MCM/{MOD_ID}/"

ExampleModConfig.gd

extends Node

const MOD_ID = "ExampleMod"
const FILE_PATH = "user://MCM/ExampleMod"

func _ready():
    pass

Creating The Config File

In the _ready() function

  1. Create variable and store the ConfigFile class in it: var _config = ConfigFile.new()
  2. Using FileAccess check to see if the config file exists: if !FileAccess.file_exists(FILE_PATH + "/config.ini")
  3. Start setting your config values within your config variable: _config.set_value(...)
    • There is a very specific way these values need to be stored. We will go over this shortly
  4. After setting all your values we need to create the folder, using DirAccess, where the config files will be stored: `DirAccess.open("user://").make_dir(FILE_PATH)
  5. Save the config file to the system: `_config.save(FILE_PATH + "/config.ini")

The available config values

Saving your config file

MCM_Helper File

MCM_Helper.gd is the main file you as a mod author will be using to register your config file with MCM. It holds a handful of helper functions that's used within the mod itself but only 1 that you need to worry about.

ReigsterConfiguration

The ReigsterConfiguration

Referencing the MCM_Helper resource

In order for you to register your mod with MCM you must load the MCM_Helpers.tres file. To do this place this line at the top of your script below the extends Node line: var McmHelpers = preload("res://ModConfigurationMenu/Scripts/Doink Oink/MCM_Helpers.tres")

ExampleModConfig.gd should now look like this

extends Node

var McmHelpers = preload("res://ModConfigurationMenu/Scripts/Doink Oink/MCM_Helpers.tres")

func _ready():
    pass

Registering your mod and associated config files with MCM

Handling configuration updates by the player

Clone this wiki locally