-
Notifications
You must be signed in to change notification settings - Fork 0
Getting Started.md
This page walks through the full first-mod workflow: installing OrcKit for testing, creating a loose folder mod, adding metadata, adding an autoload script, launching with mods, and packaging the result.
Copy these into the game folder:
OrcLoader.gd
override.cfg
mods/
Default Steam game path:
C:\Program Files (x86)\Steam\steamapps\common\Sir, We Have an Orc Problem Playtest
override.cfg must contain:
[autoload]
OrcKit="*res://OrcLoader.gd"Launch the game. If OrcKit is installed correctly, the main menu gets a Mods button.
Open Mods from the main menu and enable Developer Mode.
Developer Mode is important while building mods because it enables loose folder loading:
mods/MyDevMod/
Without Developer Mode, folder mods are hidden and only archive mods are loaded.
Developer Mode also adds verbose logging and compatibility reports, which are useful when you are testing hooks and overrides.
Create this folder:
<game folder>/mods/MyFirstMod/
Inside it:
MyFirstMod/
mod.txt
scripts/
my_first_mod.gd
[mod]
id="my_first_mod"
name="My First Mod"
version="1.0.0"
author="You"
priority=0
[autoload]
MyFirstMod="res://scripts/my_first_mod.gd"Field meanings:
-
idis the stable internal id. Use lowercase and underscores. -
nameis what users see in the Mods menu. -
versionhelps OrcKit choose between duplicate installs. -
authoris display-only. -
prioritycontrols load order. -
[autoload]tells OrcKit to create a node from your script.
extends Node
func _ready() -> void:
print("[MyFirstMod] loaded")Launch the game with your mod enabled. Check the game output for the print line.
extends Node
func _ready() -> void:
if not Engine.has_meta("RTVModLib"):
print("[MyFirstMod] OrcKit API is not available")
return
var modlib = Engine.get_meta("RTVModLib")
print("[MyFirstMod] OrcKit version: ", modlib.version())For hook registration, wait until frameworks_ready:
extends Node
func _ready() -> void:
var modlib = Engine.get_meta("RTVModLib")
if modlib._is_ready:
_install(modlib)
else:
modlib.frameworks_ready.connect(func(): _install(modlib))
func _install(modlib) -> void:
print("[MyFirstMod] OrcKit framework is ready")When the loose folder works, zip the contents of MyFirstMod, not the folder itself.
Correct:
mod.txt
scripts/my_first_mod.gd
Incorrect:
MyFirstMod/mod.txt
MyFirstMod/scripts/my_first_mod.gd
Rename the zip to:
MyFirstMod.vmz
Place it in:
<game folder>/mods/MyFirstMod.vmz
Disable or remove the loose folder when testing the packaged version, otherwise duplicate ids can hide one copy.
- The mod appears in the Mods menu.
- The display name is correct.
- The version is correct.
- The mod can be enabled and disabled.
- Autoload scripts run.
- Hook callbacks run after
frameworks_ready. - No
mod.txtparse warnings appear. - The packaged
.vmzbehaves like the loose folder. - The mod still works with an otherwise empty
modsfolder.
Developer Mode may be off for a loose folder mod, or mod.txt may be nested one folder too deep.
Check that the autoload path exists exactly as declared:
[autoload]
MyFirstMod="res://scripts/my_first_mod.gd"Open the .vmz with a zip tool and confirm mod.txt is at the top level.
If two mods share the same id, OrcKit keeps one. Remove old copies from mods/.
OrcKit developer wiki for Sir, We Have an Orc Problem Playtest mods. These pages document OrcKit 1.0.0.