Wolfenstein Modloader Buy me a coffeeKaffee spendieren

In plain wordsIn einfachen Worten

A WolfSDK mod is a folder with a mod.json file. This page explains every field the Loader and Studio read: id and name are required, spiel picks the game (tno or tnc), priority sets the load order, assets lists the changed game files and cvars lists settings sent at game start. A change either sets single values inside a decl by dotted paths or replaces a whole file. The page also lists the error messages, how to check a mod before applying it, and how the apps' format differs from the schema of the SDK packages.

  • Only id and name are required; without spiel a mod counts as a The New Order mod, and the apps read spiel, not game.
  • Mods are applied lowest priority first (default 100); if two mods set the same value the higher one wins and a conflict is reported, and two mods writing the same texture are refused.
  • set can only change paths that already exist in the decl; new fields need a whole-file replacement with file.
  • Confirmed in game: set on a The New Colossus decl (the 30-round pistol magazine) and file on an encrypted config (Sandbox Tools god mode and infinite ammo).
  • Not yet confirmed in game: cvars sent through default.cfg in The New Colossus or through start arguments and +toggle in The New Order.

Eine WolfSDK-Mod ist ein Ordner mit einer Datei mod.json. Diese Seite erklärt jedes Feld, das Loader und Studio lesen: id und name sind Pflicht, spiel wählt das Spiel (tno oder tnc), priority legt die Reihenfolge fest, assets listet die geänderten Spieldateien und cvars die Einstellungen, die beim Spielstart gesendet werden. Eine Änderung setzt entweder einzelne Werte in einer Decl über Pfade mit Punkten oder ersetzt eine ganze Datei. Dazu kommen die Fehlermeldungen, die Prüfung einer Mod vor dem Anwenden und der Unterschied zum Schema der SDK-Pakete.

  • Nur id und name sind Pflicht; ohne spiel gilt eine Mod als Mod für The New Order, und die Apps lesen spiel, nicht game.
  • Mods werden mit der niedrigsten Priorität zuerst angewendet (Standard 100); setzen zwei Mods denselben Wert, gewinnt die höhere und ein Konflikt wird gemeldet, zwei Mods für dieselbe Textur werden abgelehnt.
  • set kann nur Pfade ändern, die es in der Decl schon gibt; neue Felder brauchen einen Ersatz der ganzen Datei mit file.
  • Im Spiel bestätigt: set auf eine Decl von The New Colossus (das Pistolenmagazin mit 30 Schuss) und file auf eine verschlüsselte Konfigurationsdatei (God-Mode und unendliche Munition aus Sandbox Tools).
  • Im Spiel noch nicht bestätigt: cvars über default.cfg in The New Colossus oder über Startargumente und +toggle in The New Order.

Technical detailsTechnische Details

Der technische Teil ist auf Englisch – so, wie er im Wiki steht. Unterstrichene Begriffe haben eine Erklärung auf Deutsch.

🇬🇧 English · 🇩🇪 Deutsch

Mod-Format: eine mod.json von Hand schreiben

Diese Seite beschreibt die mod.json, die WolfSDK Loader und WolfSDK Studio 0.2.0 lesen, Feld für Feld, so wie modloader/wolfsdk/mod.py sie prüft. Die Beispiele sind echte Dateien aus den Mods der 0.2.0-Pakete. Wer eine Mod ohne JSON bauen will, nimmt das WolfSDK Studio. Welche Decls und Pfade es gibt: Modding Guide (Englisch).

Keywords: Mod-Format, mod.json, Manifest, Dateiformat einer Mod, Mod von Hand schreiben, mod format, write a mod by hand

Wie schreibe ich eine Mod von Hand?

  1. Leg im Ordner mods neben WolfSDK.cmd einen Ordner an, z. B. mods\meine_mod (Open folder auf der Seite Mods öffnet ihn).
  2. Leg eine mod.json hinein (Felder unten). Dateien, auf die sie zeigt, kommen in denselben Ordner, z. B. mods\meine_mod\decls\x.decl.
  3. Auf der Seite Mods auf Reload klicken, die Mod anhaken, dann Check (oder Check mod set auf der Seite Overview).
  4. Apply mods, Start game.

Ein Gerüst über die Kommandozeile, im entpackten Ordner:

python\python.exe -m wolfsdk new-mod meine.mod --name "Meine Mod"

Das schreibt mods\meine_mod\mod.json mit einem Beispiel-set. Der Loader liest jeden Ordner in mods mit einer mod.json; eine kaputte wird mit ! unter Checks & messages aufgeführt.

Keywords: wie schreibe ich eine Mod, Mod schreiben, Mod erstellen, neue Mod, eigene Mod, Mod-Ordner, new-mod, write a mod

Alle Felder der mod.json im Überblick

Feld Pflicht Standard Bedeutung
id ja – eindeutige ID, z. B. example.big_magazine
name ja – Name auf der Seite Mods
version nein "0.0.0" auf der Seite Mods angezeigt
author nein "" wer sie gemacht hat
description nein "" was sie tut und was getestet ist
priority nein 100 ganze Zahl; niedrig zuerst, höher gewinnt
spiel nein "tno" das Spiel: "tno" oder "tnc"
assets nein {} Änderungen, Schlüssel typ:name, mit set/file
cvars nein {} Cvars, die beim Spielstart gesendet werden

Andere Schlüssel werden ignoriert. Das Studio schreibt "studio": {"version": 1} in die Mods, die es erstellt.

Keywords: Felder der mod.json, alle Felder, Schlüssel, Aufbau, Referenz, mod.json fields, keys

mod.json-Felder id und name

id und name sind die einzigen Pflichtfelder; beide müssen nicht-leerer Text sein.

  • id kennzeichnet die Mod. Der Loader merkt sich angehakte Mods über ihre id, also halte sie zwischen Versionen stabil. Zwei Mods mit derselben id: Die zweite wird mit „Duplicate mod id“ übersprungen. Die mitgelieferten Mods nutzen IDs mit Punkt wie example.big_magazine, wolfsdk.tnc_photo_mode oder studio.sandbox_tools.
  • name ist das, was die Seite Mods anzeigt.

version, author und description sind optionaler Text. Die Seite Mods zeigt Name, Version, Priorität und die Zahl der Assets.

Keywords: id, name, Mod-ID, Mod-Name, Pflichtfelder, Duplicate mod id, version, author, description, required fields

mod.json-Feld spiel: für welches Spiel eine Mod ist

spiel ist "tno" (The New Order) oder "tnc" (The New Colossus). Ohne das Feld ist eine Mod eine The New Order-Mod. Jeder andere Wert ist ein Fehler („'spiel' must be 'tno' or 'tnc'“).

Die beiden Spiele teilen weder Asset-Namen noch Archivformat. Der Loader zeigt und wendet nur die Mods des Spiels an, das oben rechts gewählt ist.

Achtung: Die Apps lesen spiel, nicht game. Eine mod.json mit nur "game": "tnc" gilt als The New Order-Mod und erscheint bei The New Colossus nicht. Die SDK-Pakete nutzen game (siehe Vergleich unten).

Keywords: spiel, game, tno, tnc, welches Spiel, New Order, New Colossus, Mod erscheint nicht, Mod wird nicht angezeigt, which game

mod.json-Feld priority: Reihenfolge und Konflikte

priority ist eine ganze Zahl, Standard 100. Mods werden nach priority, dann id angewendet, die niedrigste zuerst. Jede Mod arbeitet auf dem Ergebnis der vorherigen.

  • Zwei Mods ändern verschiedene Werte derselben Decl: Beide wirken.
  • Zwei Mods setzen mit set denselben Wert: Die höhere priority gewinnt, ein Konflikt wird gemeldet.
  • Zwei Mods ersetzen dasselbe Asset mit file: Die höhere priority gewinnt, als Konflikt gemeldet.
  • Zwei Mods schreiben dieselbe Textur (Asset image oder texdb): abgelehnt, bevor etwas geschrieben wird („They can't be used together - please tick only one of them“).

Konflikte blockieren das Anwenden nicht; sie stehen unter Checks & messages.

Keywords: priority, Priorität, Reihenfolge, Ladereihenfolge, Konflikt, zwei Mods, überschreiben, höchste gewinnt, load order, conflict

mod.json-Feld assets: welche Spiel-Assets eine Mod ändert

assets ist ein Objekt. Jeder Schlüssel benennt ein Asset als typ:name, getrennt am ersten Doppelpunkt, z. B. weapon:weapon/handgun_base, material:models/weapons/handgun/handgun_hg oder cfile:snapdemo.cfg. Jeder Wert ist ein Objekt mit set, file oder beidem.

Regeln, die der Loader prüft:

  • Ein Schlüssel ohne Doppelpunkt ist ein Fehler („asset key must look like 'type:name'“).
  • Ein Eintrag ohne set und ohne file ist ein Fehler.
  • Das Asset muss im gewählten Spiel existieren („asset does not exist in the game“).
  • Retail-Namen sind klein geschrieben. Schreib ein Asset überall gleich; zwei Schreibweisen werden abgelehnt („the same asset is spelled differently“).

"assets": {} ist erlaubt, für eine Mod, die nur Cvars setzt.

Keywords: assets, Asset-Schlüssel, typ:name, Asset-Name, Asset-ID, asset key

Asset-Änderung set: einzelne Werte einer Decl ändern

set ordnet Pfaden mit Punkten in einer Decl neue Werte zu. Nur diese Werte ändern sich; Kommentare, Einrückung und alles andere bleiben.

"damage:damage/tungsten/mg60": {
  "set": {
    "edit.damageParms.minDamage": 22.0,
    "edit.damageParms.maxDamage": 30.0
  }
}
  • Ein Pfad muss in der Decl schon existieren, sonst „unknown path(s)“. set kann keine neuen Felder anlegen; dafür file nehmen.
  • true/false werden als true/false geschrieben. Zahlen werden so geschrieben, wie sie angegeben sind: 30.0 bleibt 30.0, 30 bleibt 30.
  • Text bekommt Anführungszeichen, wenn der Originalwert welche hatte. Blockwerte wie virtualmapping brauchen ihre Klammern: "{ 0.015625, 0.015625, 0.000000, 0.062500 }".
  • Eine als Text angegebene Zahl ("0.00") wird genau so geschrieben.

Keywords: set, Pfad, Wert ändern, Decl-Pfad, Zahlenformat, edit value

Asset-Änderung file: ein ganzes Asset ersetzen

file ist ein Pfad relativ zum Mod-Ordner. Seine Bytes ersetzen das Asset vollständig. Aus der mitgelieferten Mod cheats_gamemode:

"gamemodesp:gamemode/campaign": { "file": "assets/gamemodesp__gamemode_campaign.decl" }
  • Der Pfad muss im Mod-Ordner bleiben („points outside the mod folder“), und die Datei muss existieren („file is missing“).
  • Mit set und file auf einem Asset kommt zuerst file, dann set darauf.
  • Die Bytes werden geschrieben, wie sie sind. The New Colossus-cfile-Einträge (verschlüsselte Configs wie snapdemo.cfg) müssen für ihren Namen verschlüsselt sein: Lass sie von der Text-Ersetzung des Studios speichern. Reiner Text funktioniert dort nicht.
  • Lieber set: Eine file-Mod kollidiert mit jeder anderen Mod auf diesem Asset.

Keywords: file, Datei ersetzen, ganze Datei, Asset ersetzen, cfile, verschlüsselt, replace asset

mod.json-Feld cvars: Einstellungen beim Spielstart

cvars ordnet Cvar-Namen je einen Wert zu (Text, Zahl oder true/false; Listen und Objekte werden abgelehnt). Sie werden bei jedem Spielstart mit Start game oder Spielen.cmd gesendet und gewinnen gegen dieselbe Cvar auf Cheats & QoL.

  • The New Order: Startargumente; Cheat-Cvars zusätzlich als +toggle, damit der Cheat-Reset beim Start sie nicht löscht.
  • The New Colossus: Cvars, die die Retail-Konsole annimmt, gehen als Startargumente, der Rest in die default.cfg des Spiels; Revert entfernt sie. Namen, die keine The New Colossus-Cvars sind, werden übersprungen. Ersetzt eine andere angehakte Mod cfile:default.cfg, bleiben diese Cvars weg, mit Meldung.

Schreib Werte als Text ("1"): Der Loader macht aus jedem Wert Text, und aus true würde True.

Keywords: cvars, Cvar, Konsolenvariablen, Einstellungen, Startparameter, default.cfg, +toggle, settings

Beispiel: die kleinste Mod (Big Pistol Magazine)

Die mitgelieferte Mod example_big_magazine für The New Order, vollständig:

{
  "id": "example.big_magazine",
  "name": "Big Pistol Magazine (Example)",
  "version": "1.0.0",
  "author": "wolfsdk",
  "description": "Raises the pistol magazine from 20 to 66. ...",
  "priority": 100,
  "assets": {
    "weapon:weapon/handgun_base": {
      "set": { "edit.validAmmoClips.item[0].clipSize": 66 }
    }
  }
}

Kein spiel, also eine The New Order-Mod. Ein set auf einen Pfad; der Rest der Waffen-Decl bleibt unberührt.

Keywords: Beispiel, mod.json Beispiel, Vorlage, Beispiel-Mod, kleinste Mod, großes Magazin, clipSize, example, template

Beispiel: eine Werte-Mod für The New Colossus (Invulnerable)

Aus der mitgelieferten Mod tnc_erste (2 ihrer 7 Assets gezeigt):

{
  "id": "wolfsdk.tnc_erste",
  "name": "Invulnerable (TNC)",
  "version": "1.0.0",
  "priority": 100,
  "spiel": "tnc",
  "assets": {
    "table:playerdamage/normal": { "set": { "min": "0.0", "max": "0.0" } },
    "table:playerdamage/hard":   { "set": { "min": "0.00", "max": "0.00" } }
  }
}

"spiel": "tnc" macht sie zu einer The New Colossus-Mod. Die Werte sind Text, damit jeder genau die Länge des Originalwerts behält.

Keywords: Beispiel, The New Colossus Mod, TNC-Mod, spiel tnc, unverwundbar, playerdamage, table, example, TNC mod

Beispiel: eine Mod nur mit Cvars (Hidden Menu Options)

Die mitgelieferte Mod tnc_hidden_options ändert gar kein Asset (Beschreibung gekürzt):

{
  "id": "wolfsdk.tnc_hidden_options",
  "name": "Hidden Menu Options",
  "version": "1.0.0",
  "author": "wolfsdk",
  "description": "Turns on menu options the retail game hides: ...",
  "priority": 100,
  "spiel": "tnc",
  "cvars": {
    "menu_showOptionForDevMenu": "1",
    "menu_showOptionForSASMenu": "1",
    "menu_allowMeinLeben": "1",
    "g_setting_photomode": "1"
  },
  "assets": {}
}

Die Konsole lehnt diese Entwickler-Cvars ab, also schreibt der Loader sie in default.cfg. Im Spiel noch nicht bestätigt.

Keywords: Beispiel, nur Cvars, Cvar-Mod, Menüoptionen, Hidden Menu Options, default.cfg, example, cvars only

Beispiel: eine Mod, die ganze Dateien ersetzt (Photo Mode)

Die mitgelieferte Mod tnc_photo_mode (Beschreibung gekürzt):

{
  "id": "wolfsdk.tnc_photo_mode",
  "name": "Photo Mode",
  "version": "1.0.0",
  "author": "wolfsdk",
  "description": "One key freezes the game for screenshots: ...",
  "priority": 100,
  "spiel": "tnc",
  "assets": {
    "cfile:default_snap.cfg": { "file": "assets/default_snap_cfg.bin" }
  }
}

assets/default_snap_cfg.bin ist die verschlüsselte Form der unbenutzten SnapMap-Config default_snap.cfg. Im Spiel: bind F8 "resourceExec default_snap.cfg -s". Im Spiel noch nicht bestätigt.

Keywords: Beispiel, Datei ersetzen, cfile, Photo Mode, Fotomodus, resourceExec, bin-Datei, example, file replacement

Wie finde ich Asset-Namen und änderbare Pfade?

Mit der Kommandozeile im entpackten Ordner (für The New Colossus --title tnc dazu):

python\python.exe -m wolfsdk --title tnc list --type weapon --grep pistol
python\python.exe -m wolfsdk --title tnc cat weapon:<name>
python\python.exe -m wolfsdk --title tnc paths weapon:<name>

list zeigt Asset-Namen, cat gibt ein Asset aus, paths listet die Pfade, die set ändern kann, mit ihren aktuellen Werten. types listet die Asset-Typen. Im WolfSDK Studio kannst du Texturen und Texte durchsuchen und direkt ersetzen. Pfade für Waffen, Skins und Gegner mit Beispielen: Modding Guide (Englisch).

Keywords: Asset finden, Asset-Namen, Pfade finden, list, cat, paths, types, Kommandozeile, CLI, Decl-Pfade, find asset, command line

Wie prüfe ich eine Mod vor dem Anwenden?

  • Im Loader: Check auf der Seite Mods oder Check mod set auf der Seite Overview.
  • Auf der Kommandozeile: python\python.exe -m wolfsdk check

Die Prüfung baut jede Änderung im Speicher und prüft Asset-Namen, Decl-Pfade, Konflikte und die geplanten Schreibvorgänge. Sie schreibt nichts. Ergebnisse und Fehler erscheinen unter Checks & messages.

Anwenden beginnt jedes Mal bei den Originaldateien und schreibt den ganzen angehakten Satz, deshalb lässt ein fehlgeschlagenes Anwenden das Spiel im Original: Schlägt es fehl, werden die vorher angewendeten Mods zurückgesetzt, und der Loader sagt das.

Keywords: Mod prüfen, mod.json prüfen, testen, Probelauf, Check, Check mod set, wolfsdk check, check mod, validate mod.json, dry run

mod.json-Fehler beim Einlesen einer Mod

Diese erscheinen nach Reload mit ! unter Checks & messages; die Mod wird nicht aufgeführt:

  • invalid JSON (...): Ein Komma, Anführungszeichen oder eine Klammer stimmt nicht.
  • field 'id' is missing / field 'name' is missing oder must be a non-empty string.
  • 'spiel' must be 'tno' or 'tnc'.
  • 'priority' must be a whole number.
  • 'assets' must be an object, asset key must look like 'type:name', ... has neither 'file' nor 'set', ... .set must be an object.
  • ... .file points outside the mod folder.
  • 'cvars' must be an object, cvar '...' needs a single value (text, number or true/false).
  • Duplicate mod id.

Keywords: Fehler in mod.json, Fehlermeldung, invalid JSON, Feld fehlt, kaputte Mod, Mod lädt nicht, mod.json error, error message

mod.json-Fehler beim Prüfen oder Anwenden

Diese kommen von Check, Check mod set oder Apply mods:

  • asset does not exist in the game (...): falscher Name, oder die Mod ist für das andere Spiel (spiel).
  • unknown path(s): ...: Der set-Pfad steht nicht in dieser Decl. Vielleicht steht er in der Eltern-Decl (inherit); paths zeigt, was existiert.
  • file is missing: ...: Die file-Datei liegt nicht im Mod-Ordner.
  • ... change the same textures ... please tick only one of them: zwei Textur-Mods für dasselbe Asset.
  • the same asset is spelled differently: Schreib den Asset-Schlüssel in jeder Mod gleich.
  • Not enough disk space: Platz auf dem Laufwerk des Spiels freimachen und erneut anwenden.

Keywords: Fehler beim Anwenden, Fehler beim Prüfen, asset does not exist, unknown path, file is missing, gleiche Texturen, Speicherplatz, apply error

mod.json der Apps im Vergleich zum SDK-Schema

Die SDK-Pakete (pip, npm, cargo, go) nutzen eine andere mod.json, festgelegt in spec/mod.schema.json im Repository:

Apps (Loader, Studio) SDK-Schema
Spiel nur spiel game; spiel als alter Alias
id Pflicht nicht im Schema
name Pflicht optional (Ordnername)
Standard-priority 100 0
gleiche Priorität nach id sortiert Eingabereihenfolge
Asset-Einträge auf oberster Ebene ignoriert angenommen, wenn assets fehlt
cvars, author gelesen nicht im Schema
Schlüssel außer set/file in einem Asset ignoriert nicht erlaubt

Beide wenden zuerst file an, dann set darauf. Das SDK und seine eigene Kommandozeile wolfsdk -g: Modding Guide, Teil für Programmierer (Englisch).

Keywords: SDK-Schema, mod.schema.json, game oder spiel, Unterschied, SDK mod.json, Kompatibilität, SDK schema

Eine mod.json, die in den Apps und im SDK funktioniert

Schreib sie so, dass beide sie gleich lesen:

  • id und name (die Apps brauchen beide; das SDK nimmt zusätzliche Schlüssel an).
  • spiel für das Spiel; das SDK liest es als alten Namen von game. Schreibst du auch game, gib ihm denselben Wert.
  • priority ausschreiben, weil die Standardwerte verschieden sind (100 gegen 0).
  • Alles unter assets, jeder Eintrag nur mit set und/oder file.
  • cvars wirken nur in den Apps.

Keywords: kompatible mod.json, beide Formate, SDK und Loader, portable Mod, game und spiel, kompatibel, compatible mod.json

Welche Teile des Mod-Formats sind im Spiel bestätigt?

  • Mods anwenden und zurücksetzen mit Backups: Im Spiel bestätigt.
  • set auf einer The New Colossus-Decl: Im Spiel bestätigt (das 30-Schuss-Magazin der Explosive Pistol).
  • file auf einer The New Colossus-cfile: Im Spiel bestätigt (Sandbox Tools: Gottmodus und unendlich Munition).
  • cvars in The New Colossus über default.cfg und in The New Order über Startargumente und +toggle: Im Spiel noch nicht bestätigt.
  • The New Order: Gepatchte Archive laden ohne Fehler (gemessen, Modding Limits §4); was die meisten einzelnen Wertänderungen im Spiel bewirken, ist Im Spiel noch nicht bestätigt.

Keywords: im Spiel bestätigt, getestet, Status, funktioniert set, funktioniert file, funktionieren cvars, confirmed in game, tested