Windowkill Modding

READ BEFORE CONTINUING

To support the modding community, I've provided the game's full source code in the files.
You may not distribute the game in its compiled or uncompiled forms.
The source code for the game is provided only for creating mods.
Do not distribute any mods that contain malware or advertisements.

Before getting started, make sure you have a clean install of the game.

To get started with modding, you need to join the "modding" branch on Steam, or download the "modding" zip on itch.io
On Steam, right-click the game -> Properties -> Betas -> Beta Participation: modding - modding

Once installed, a couple new folders should be made accessible to you in the game's install location.
On Steam, right-click the game -> Properties -> Manage -> Browse local files

The /source folder contains two folders, /godot-bin and /windowkill. /godot-bin holds the binary files for the custom version of Godot used to make the game. /windowkill holds the game's raw source code.
This includes a git repository of the project. Each update will include a new commit, so that modders can see exactly what changed between versions.

If needed, the source code for the modified version of Godot used for the game can be found here
Running /source/godot-bin/godot.windows.editor.x86_64.exe will start the custom Godot editor (the .console version will open a console window with it). From here, you can drag in the windowkill/project.godot file, or "scan" and select the /windowkill folder. Then open the project.

note: you may see some errors upon loading the project for the first time. These can be ignored. To be safe, you should reload the editor after loading.
You should always reload the editor after loading a new version of Windowkill for the first time.

To start creating a mod, add a new folder named mods_unpacked in the /windowkill folder, then add a new folder in /mods_unpacked with the name of your mod.

note: it is best practice to create a mods_unpacked folder somewhere safe on your computer, and create a system link to that folder inside the /windowkill folder. This prevents the possibility of losing work if the source gets overwritten.

Once done, you can refer to the guides on the Godot Mod Loader Wiki, particularly the following pages:

The in-game mod manager will load the file at /icon.png (or /icon.jpg or /icon.jpeg) for the icon, the base resolution is 96x96 pixels. (This can be a different image from the one you upload as a workshop icon)

note: Windowkill was programmed entirely by one person (me (torcado)) without any intention of it being seen by anyone else. For that reason, many areas of the game are not convenient for modders. If there are is anything you feel is necessary or important to be changed in the base game, feel free to make a suggestion in the Windowkill Discord!

Uploading mods and custom assets to the steam workshop

If you haven't already, you'll need to join the "modding" branch on steam.

When running the game through Steam, a new "workshop utility" launch option is available. Select this and continue. (this must be done through steam, it will not work if opened directly)
Follow the instructions on the screen. You can drag-and-drop the .zip and icon files into the window.

When creating a zip of a custom asset, the name of the asset type must be the topmost folder in the zip.
When creating a zip of a mod, mods_unpacked must be the topmost folder in the zip.

Managing mods and custom assets in-game

Once you have any mods placed in the /mods folder or custom assets in their respective /custom folder (or subscribed to on the Steam Workshop), they will show up in the "mods" menu in-game.

Mods can be enabled/disabled with the toggle button on the right. You can also access any mod's install folder/workshop page, and config options.

Mod Configuration

Mod developers can create a set of configuration options for a mod via its manifest. Read more about how to do this here: https://github.com/GodotModding/godot-mod-loader/wiki/Mod-Configs

The in-game mod menu will show a gear icon next to any mod with an established manifest configuration. Clicking this gear will show a dropdown of all the options with controls to change them (such as toggle buttons for booleans, sliders for numbers, etc.)

note: shift-clicking the gear icon will open the mod's configuration json file directly.

Config options are updated immediately, and stored to disk after a delay. Mod developers can check for the ModLoader.current_config_changed signal to update their mod as the player makes adjustments.