Wolfenstein Modloader Buy me a coffeeKaffee spendieren

Wiki / Research reportsForschungsberichte

TNC Retail: lose/external load paths (read-only findings only)

Partly solvedTeilweise gelöst Original page in the GitHub wikiOriginalseite im GitHub-Wiki

In plain wordsIn einfachen Worten

This report looks for ways Wolfenstein II: The New Colossus could load mod files placed as loose files instead of packed into its archives. Confirmed: the game detects a self-made DLC folder (dlc_4), but that folder still sits inside the game installation. Several settings with promising names exist, such as fs_pathDeclOverride and resource_loadLooseAssets, but none is proven to work in the retail game. The debug DLC search path and the overlay path known from other id games are not usable.

  • The game log shows 'found dlc id 4' and 'SearchDLC: found 4 dlcs' for a self-made DLC folder.
  • A decl reload command and an override manager exist, but the log shows 0 overrides loaded.
  • Candidates like fs_pathDeclOverride and resource_loadLooseAssets exist only as names and help texts; unconfirmed.
  • resource_dlcDbgSearchPath is rejected as 'Unknown command'; fs_overlaypath does not exist in this game.
  • It is not proven that a single loose file can override a base-game asset.

Dieser Bericht sucht Wege, wie Wolfenstein II: The New Colossus Mod-Dateien als lose Dateien statt in seinen Archiven laden könnte. Bestätigt ist: Das Spiel erkennt einen selbst gebauten DLC-Ordner (dlc_4), aber dieser liegt weiterhin in der Spielinstallation. Es gibt mehrere Einstellungen mit vielversprechenden Namen, etwa fs_pathDeclOverride und resource_loadLooseAssets, aber bei keiner ist belegt, dass sie in der Verkaufsversion funktioniert. Der Debug-Suchpfad für DLCs und der aus anderen id-Spielen bekannte Overlay-Pfad sind nicht nutzbar.

  • Das Spiel-Log zeigt 'found dlc id 4' und 'SearchDLC: found 4 dlcs' für einen selbst gebauten DLC-Ordner.
  • Ein Befehl zum Neuladen von Definitionen und ein Override-Manager existieren, laut Log wurden aber 0 Overrides geladen.
  • Kandidaten wie fs_pathDeclOverride und resource_loadLooseAssets gibt es nur als Namen und Hilfetexte; unbestätigt.
  • resource_dlcDbgSearchPath wird als 'Unknown command' abgelehnt; fs_overlaypath gibt es in diesem Spiel nicht.
  • Dass eine einzelne lose Datei ein Asset des Hauptspiels überschreibt, ist nicht belegt.

Technical detailsTechnische Details

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

Investigated: <Steam library>\steamapps\common\Wolfenstein.II.The.New.Colossus\NewColossus_x64vk.exe (58,062,032 B), existing Saved Game Logs, and the delivered DLC directories. No process started, no Steam file modified.

Confirmed

Own DLC is recognized from a separate DLC container — high confidence

The existing runtime log %USERPROFILE%\Saved Games\MachineGames\Wolfenstein II The New Colossus\base\qconsole.log proves:

found dlc id 4 at ../dlc//dlc_4
SearchDLC: found 4 dlcs

The EXE string pool contains matching '%s/dlcinfo.json' (VA 0x1426CF6E0), 'dlc' (0x1426CF6F0), '%s/base' (0x1426CF730), and packagemapspec.json (0x1426D0250). Delivered comparison format: dlc/dlc_1/dlcinfo.json contains {"dlcid": 1}; dlc/dlc_1/base/packagemapspec.json references chunk_20; under dlc_1/base/ there are among others .resources, .texdb, .bk2, .pack, and .cache.

Conclusion: dlc/dlc_4/base/ is a confirmed extension point outside the original base/*.resources container. However, it still lies under the Steam game installation, not in a freely selectable external mod folder. That a single scattered asset overrides a Base Resource entry is therefore not proven.

Decl-Reload command exists — high confidence, no external path derivable from it

The EXE has reloadDecls at VA 0x1426B8978; three strings before it show the help text reloads decl files that have changed (0x1426B8910). The log also repeatedly shows:

idDeclOverrideManager::OverrideLoadedDecls() 0 milliseconds to override 0 decls.

This confirms Reload and an Override Manager. The log simultaneously proves the negative case: in the observed starts, 0 Decl Overrides were loaded; no path/file format is confirmed from this.

Plausible candidates but not confirmed as a functioning external load path

Candidate Exact Finding Rating
fs_pathDeclOverride EXE VA 0x14297D8A8; associated help text (Read Only) Secondary Location for decl game files at 0x14297D960 Only directly named second path for Decl game files. Read Only and missing runtime value/start parameter mean: no proof that Retail can set or read from an external folder.
resource_loadLooseAssets EXE VA 0x1426CF2D0; separate text check for loose assets when satisfying file io from a resource file at 0x1426CEF70 Strong name/text indicator for Resource file I/O against loose assets; no runtime value, search root, or override priority proven.
com_loadlooseLanguages EXE VA 0x1426C2E98; further text if 1 loads the language files loosly at 0x1426C2FB8 Potentially only for language files. No proof on general assets or that the CVar is settable in Retail.
image_useLooseStreaming EXE VA 0x142664480; help text 0 = Use virtual texture atlas streaming, 1 = Use loose texture streaming (0x1426644A0). Existing dump: value "1". Confirms a streaming mode, not a freely selectable file search path or an asset override rule.

Refuted / negatively bounded

  • resource_dlcDbgSearchPath is present in the EXE string pool (VA 0x1426CF690, text Search path for dlcs at 0x1426CF478), but was rejected in the actual Retail log with Unknown command 'resource_dlcDbgSearchPath'. No external DLC search path in this build.
  • The targeted EXE self-test found no exact strings fs_game, fs_mod, fs_addon, modDir, gameDir, or fs_overlaypath in TNC. In particular, the known overlay path mechanism is missing.
  • The simultaneous runtime counter-evidence to a functioning Decl Override is OverrideLoadedDecls() ... override 0 decls.

Tests

  • python tools/probe_loadpaths.py --self-test → self-test: ok (checks among other things TNC-Strings resource_loadLooseAssets, fs_pathDeclOverride, DLC format, and the absence of fs_overlaypath).
  • python tools/probe_devmode.py --self-check → ALL INVARIANTS HOLD; Dev-mode/Shipping strings are present, but there is no evidence for an asset path. The log also reports +com_enableDeveloperMode as Unknown command; therefore, no modding path can be derived from it.