Skip to content

README.md

ESTONlA edited this page May 25, 2026 · 3 revisions

Texture Replacement Tutorial

This page shows how to make a simple OrcKit .vmz mod that replaces one vanilla texture:

res://enemies/orc_top_down_walking.png

The same idea works for other texture files. The important rule is that your mod package must contain the replacement at the exact same res:// path as the game file.

Final Mod Layout

Create a working folder like this:

OrcWalkingTexture/
  mod.txt
  enemies/
    orc_top_down_walking.png
  scripts/
    texture_mod.gd
  pack_vmz.ps1

When packed, the .vmz root must look like this:

mod.txt
enemies/orc_top_down_walking.png
scripts/texture_mod.gd

Do not package an extra parent folder. This is wrong:

OrcWalkingTexture/mod.txt
OrcWalkingTexture/enemies/orc_top_down_walking.png

That would become:

res://OrcWalkingTexture/enemies/orc_top_down_walking.png

and it will not replace:

res://enemies/orc_top_down_walking.png

Step 1: Create mod.txt

Put this file at:

OrcWalkingTexture/mod.txt
[mod]
id="orc_walking_texture"
name="Orc Walking Texture"
version="1.0.0"
author="YourName"
priority=0

[autoload]
OrcWalkingTexture="res://scripts/texture_mod.gd"

The [autoload] script is optional for a pure texture replacer, but it is useful because it proves your mod loaded.

If you do not want any code, remove the [autoload] section and skip the script file.

Step 2: Add the Replacement PNG

Put your new PNG here:

OrcWalkingTexture/enemies/orc_top_down_walking.png

The filename must be exactly:

orc_top_down_walking.png

The folder must be exactly:

enemies

Together, that becomes the runtime path:

res://enemies/orc_top_down_walking.png

Keep the replacement image compatible with the original. For animated sprite sheets, use the same frame layout, similar dimensions, and the same transparent background style unless you intentionally want to change those.

Step 3: Add Optional Mod Code

Put this file at:

OrcWalkingTexture/scripts/texture_mod.gd
extends Node

func _ready() -> void:
	print("[OrcWalkingTexture] loaded")
	var tex := load("res://enemies/orc_top_down_walking.png")
	if tex == null:
		push_warning("[OrcWalkingTexture] replacement texture did not load")
	else:
		print("[OrcWalkingTexture] replacement texture mounted")

This script does not replace the texture by itself. The replacement happens because the .vmz contains a file at the same resource path as the vanilla game texture. The script is just a simple load check.

Step 4: Pack the .vmz

Put this file at:

OrcWalkingTexture/pack_vmz.ps1
$ErrorActionPreference = "Stop"

$modRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
$outName = "OrcWalkingTexture.vmz"
$outPath = Join-Path $modRoot $outName
$tmpZip = Join-Path $modRoot "OrcWalkingTexture.zip"

if (Test-Path -LiteralPath $outPath) {
    Remove-Item -LiteralPath $outPath -Force
}

if (Test-Path -LiteralPath $tmpZip) {
    Remove-Item -LiteralPath $tmpZip -Force
}

$files = @(
    "mod.txt",
    "enemies/orc_top_down_walking.png",
    "scripts/texture_mod.gd"
)

foreach ($file in $files) {
    $full = Join-Path $modRoot $file
    if (-not (Test-Path -LiteralPath $full)) {
        throw "Missing required file: $file"
    }
}

Compress-Archive `
    -Path `
        (Join-Path $modRoot "mod.txt"), `
        (Join-Path $modRoot "enemies"), `
        (Join-Path $modRoot "scripts") `
    -DestinationPath $tmpZip `
    -Force

Rename-Item -LiteralPath $tmpZip -NewName $outName
Write-Host "Created $outPath"

Run it in PowerShell:

cd "C:\Path\To\OrcWalkingTexture"
.\pack_vmz.ps1

You should get:

OrcWalkingTexture.vmz

.vmz is zip-compatible. OrcKit treats it as a mod archive and mounts it into the game.

Step 5: Install the Mod

Copy the .vmz into the game mods folder:

C:\Program Files (x86)\Steam\steamapps\common\Sir, We Have an Orc Problem Playtest\mods\OrcWalkingTexture.vmz

Launch the game, open the OrcKit Mods menu, and make sure the mod is enabled.

If another mod also replaces the same texture, put this mod later/higher in load order so it wins.

Full Example Tree

OrcWalkingTexture/
  mod.txt
  pack_vmz.ps1
  enemies/
    orc_top_down_walking.png
  scripts/
    texture_mod.gd

Quick Test

After launching the game, check the Godot log for:

[OrcWalkingTexture] loaded
[OrcWalkingTexture] replacement texture mounted

If you see replacement texture did not load, the path inside the .vmz is wrong or the PNG is missing from the archive.

Common Mistakes

Wrong: extra folder inside the .vmz.

OrcWalkingTexture/enemies/orc_top_down_walking.png

Correct inside the .vmz:

enemies/orc_top_down_walking.png

Wrong: filename is close but not exact.

enemies/orc-top-down-walking.png
enemies/orc_top_down_walk.png

Correct:

enemies/orc_top_down_walking.png

Wrong: mod.txt is nested.

OrcWalkingTexture/mod.txt

Correct inside the .vmz:

mod.txt

Quick Checklist

  • Mod is packed as .vmz.
  • mod.txt is at the archive root.
  • File is named exactly orc_top_down_walking.png.
  • File is inside enemies/ at the archive root.
  • Runtime path is exactly res://enemies/orc_top_down_walking.png.
  • Optional script is at res://scripts/texture_mod.gd.
  • .vmz is placed in the game mods folder.
  • Mod is enabled in OrcKit.
  • Load order is higher/later than other mods replacing the same texture.

Clone this wiki locally