03 — Mod-Ladepipeline und Manifest #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Teil der Map #1 · Type:
wayfinder:grilling· Blocked by: #3Wie findet, ordnet und laedt das Spiel Mods — inklusive sich selbst? Ordnerlayout, Manifest-Schema, Ladereihenfolge, Ueberschreiben.
Volle Fragestellung (kanonisch):
.scratch/rustkeep-1.0/issues/03-mod-ladepipeline.mdAufgeloest in
d2d5ae6. Kanonische Fassung:.scratch/rustkeep-1.0/issues/03-mod-ladepipeline.mdOrdnerlayout
Zwei Suchpfade:
mods/neben der Binary (enthaeltcore/) unddata_dir()/rustkeep/modsim Benutzerprofil, ermittelt ueber die Cratedirectories6.0.0 (nimmt macOS mit). Bei gleicher Mod-ID gewinnt das Profil, mit Warnzeile — auch gegenuebercore.coreliegt als echter Mod-Ordner auf der Platte, kein Sonderfall.include_str!entfaellt. Was nur fuer Fremdmods gilt, ist nie getestet.Manifest —
manifest.toml, Pflichtid(Namensraum-Praefix und Mod-ID, unabhaengig vom Ordnernamen),name,version,depends(nur Namen, keine Versionsbereiche). Ordner ohne Manifest ist kein Mod: Warnzeile, uebersprungen.TOML statt YAML:
serde_yamlist seit 25.03.2024 archiviert, der Forkserde_ymlebenfalls (Unsoundness, RUSTSEC-2025-0068). Fuer den Parser, der bei jedem Mod als erstes laeuft, ist das eine schlechtere Basis als das ohnehin vorhandenetoml.Ladereihenfolge
Spielerliste
load_order.tomlmit Manifest-IDs, selbstheilend: fehlt sie, wird sie erzeugt (corezuerst, Rest alphabetisch); unbekannter Ordner wird angehaengt und zurueckgeschrieben; Eintrag ohne Ordner ist Warnzeile.dependssortiert nicht, es prueft. Fehlende Abhaengigkeit oder falsche Position sind harte Startfehler im Klartext. Das ist der Preis dafuer, dass ein Mensch die Reihenfolge pflegt.Dateien im Mod
Jede
*.tomlausser dem Manifest wird eingelesen, jede darf jede Registry-Tabelle enthalten. Keine festen Dateinamen — das ist weniger Code, nicht mehr.IDs und Ueberschreiben
Auto-Praefix aus
manifest.id:id = "schwert"wird zumeinmod:schwert. Ueberschrieben wird ueberoverrides = "core:iron_sword"am Eintrag; der landet nur unter der ueberschriebenen ID, damit bestehende Verweise (Loottabellen,on_create, Questbelohnungen) weiterfunktionieren ohne Dublette. Zeigtoverridesins Leere: Warnzeile, Eintrag verworfen.Drei Phasen
dependspruefenFehlereinheit ist der einzelne Eintrag, nicht der Mod und nicht das Spiel. Kein Nachladen zur Laufzeit.
Folgen
manifest.version— faellt der Mod-Header, faellt das Feldinclude_str!undload_items()entfallen,mods/core/entsteht,directorieskommt inCargo.toml