Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Custom Charakterportraits in DSA3
#1
Hi zusammen, ich hoffe, ich eröffne nicht unnötig einen neuen Thread - aber ich habe mich mal durch die Beiträge zu Custom Portraits durchgelesen und es scheint, als würde quasi alles abzielen auf das 
Ändern der Portraits in Sternenschweif bzw. Schick.
Gibt es ggf. die Möglichkeit, solche Änderungen in Schatten über Riva vorzunehmen?
Käsetoast!
Zitieren
#2
Hi Throgrim,

aus technischen Gründen sind Custom-Portraits nur in Schick möglich. In Schweif/Riva werden die Assets der Spieledaten für z.B Kinderportraits und kranke Helden benutzt.
Möglich ist das schon, aber der Aufwand wäre sehr hoch und der Nutzen eher gering.
Kannst du C? Ich such noch jemanden der einen Portraiteditor in den neuen Charaktergenerator implementiert.
Zitieren
#3
Hi Thorgrim, erst einmal eine gute Nachricht:

Ähnlich wie in Schick und Sternenschweif lassen sich die vorgegebenen Charakterbilder durch Modifikation der jeweiligen Bilddatei im jeweiligen Spielarchiv verändern.
Hier z. B. zu Schick: Da haben wir die HEADS.DAT bearbeitet und konnten so ein bestehendes Charakterbild ändern: 
[Heads.dat entpacken?] https://www.crystals-dsa-foren.de/showth...p?tid=6192

Riva hat ein etwas anderes Archivformat; dort liegen die Charakterbilder in der DATA/RIVA.ALF an folgender Stelle:

MODULECHARAC > CHEADS.NVF für die „normalen“ Bilder bzw.
MODULECHARAC > CHEADS2.NVF für die „verletzte“ Variante.

Neu ist, dass bei niedrigen LP auf eine andere Variante umgeschaltet wird, d. h. man könnte hier pro Held sogar zwei Bilder ändern.
Oder man nimmt für die „verletzte“ Variante zunächst die normale zum Testen.

Die CHEADS.NVF/CHEADS2.NVF kann man ähnlich wie die HEADS.DAT mit einem NVF-Tool lesen, in Bitmaps entpacken, bearbeiten und erneut packen.
Theoretisch sollte eine Version von Hendriks nltpack wieder eine funktionierende RIVA.ALF packen — damit hatte ich bisher nur wenig Glück und habe mir daher ein eigenes Tool für die RIVA-ALF-Archive geschrieben.
Gern schaue ich mir meine NVF-/ALF-Tools noch einmal an, um etwas Passendes für Riva und diesen Einsatzzweck zu erstellen.

Hier die aktuell nicht so rosige Nachricht:
Ich liege gerade mit Virusinfekt flach und habe nur begrenzte Kapazitäten.
Aber ich schaue mir das in den kommenden Tagen gern noch einmal genauer an, sobald mein Kopf nicht mehr in Watte ist.

Edit: Es ging doch ohne viel Reiberei — Schritt-für-Schritt

A) Vorbereitung & Backup
  1. rivaxtract aus Github Releases (unter Assets) herunterladen: https://github.com/cmsautter/RivaXtractCLI/releases
    Ich nehme einfach mal an, für Windows, dann wäre das der Direktlink: rivaxtract-0.1.0-win-x64.zip
  2. rivaxtract-0.1.0-win-x64.zip extrahieren.
  3. Riva-Ordner ausfindig machen und DATA/RIVA.ALF sichern (z. B. Kopie als RIVA.ALF.BAK).
  4. RIVA.ALF zusammen mit der extrahierten rivaxtract.exe in einen Arbeitsordner kopieren.

B) Dateien aus dem Archiv extrahieren
Öffne eine Eingabeaufforderung/Terminal im Arbeitsordner und führe Folgendes aus:
Code:
.\rivaxtract.exe read RIVA.ALF MODULECHARAC CHEADS.NVF -o CHEADS.NVF
.\rivaxtract.exe read RIVA.ALF MODULECHARAC CHEADS2.NVF -o CHEADS2.NVF

C) NVF entpacken, Bitmaps bearbeiten, wieder packen
  1. NVF_Packer aus dem alten Post herunterladen: https://www.crystals-dsa-foren.de/showth...#pid174354
    Bzw. hier der Direktlink: nvf_packer_v1_win_x64.zip.
  2. NVF_Packer extrahieren.
  3. CHEADS.NVF sowie optional CHEADS2.NVF in den Ordner input_nvf des extrahierten NVF_Packer kopieren.
  4. nvf_packer.exe ausführen. Die extrahierten Bitmaps liegen danach in output_bmp.
  5. Eines der Bitmaps der gewünschten Charakterklasse ersetzen/überschreiben. Jeweils für CHEADS_NVF bzw. CHEADS2_NVF.
  6. nvf_packer.exe erneut ausführen. Die neu gepackten Dateien liegt in recompressed als modifizierte CHEADS.NVF / CHEADS2.NVF.

D) Modifizierte Dateien ins Archiv schreiben
  1. Die modifizierten NVFs sinnvoll umbenennen, z. B. CHEADS_MOD.NVF und CHEADS2_MOD.NVF, und in den Ordner mit rivaxtract.exe kopieren.
  2. Im selben Ordner den folgenden Befehl ausführen — er fügt die neuen Dateien CHEADS_MOD.NVF und CHEADS2_MOD.NVF in das ALF-Archiv ein. Gegebenenfalls anpassen, falls nur eine Datei verändert wurde oder die Dateinamen abweichen:
Code:
.\rivaxtract.exe modify RIVA.ALF --out RIVA_MOD.ALF --set "MODULECHARAC/CHEADS.NVF=CHEADS_MOD.NVF" --set "MODULECHARAC/CHEADS2.NVF=CHEADS2_MOD.NVF"

Dadurch wird RIVA_MOD.ALF erzeugt, in dem die beiden Dateien entsprechend ersetzt wurden.

E) Austausch im Spielordner
  1. RIVA_MOD.ALF in den DATA-Ordner von Riva kopieren.
  2. Die alte RIVA.ALF löschen bzw. als RIVA.ALF.BAK (Backup) umbenennen (falls noch nicht geschehen).
  3. RIVA_MOD.ALF in RIVA.ALF umbenennen.

Wenn alles geklappt hat, ist das gewünschte Bild im Spiel ersetzt. Bei mir hat Thorgrim (nicht du, der andere) sein neues Aussehen jedenfalls klanglos akzeptiert.

[Bild: attachment.php?aid=7190]

Anmerkung: Wie Henne bereits bemerkte, lassen sich in Sternenschweif/Riva die Charakterbilder nicht mehr individuell pro Held festlegen. Stattdessen gibt es „Schablonen“, die für alle Helden in allen Spielständen gelten. Mit dem oben beschriebenen Vorgehen ersetzt man diese Schablone; dadurch wird das entsprechende Bild in allen bestehenden sowie neuen Spielständen geändert. Erst durch eine Neuinstallation (bzw. durch das Zurücksetzen der RIVA.ALF auf die gesicherte Variante) werden die Schablonen wieder auf die ursprünglichen Bilder zurückgesetzt. Daher nimmt man am besten ein Bild, das zur Charakterklasse passt, aber eher „hässlich“ ist bzw. das man in anderen Spielständen bisher vermieden hat. ;) Auch sollte diese Modifikation erst nach Installation aller offiziellen Patches vorgenommen werden (die aktuellen Versionen — Steam, GOG und Helden-Edition — sind bereits gepatcht), da andernfalls ein späterer Patch ggf. nicht mehr korrekt funktioniert.



Das neue RivaXtract-CLI-Tool, das ursprünglich ein 1:1-C#-Klon von Hendriks nltpack war, kann übrigens noch mehr: z. B. lassen sich mittels export-json bzw. export-views Sichten auf die im Archiv gepackten Daten erstellen und mit build wieder zusammenbauen. Das ist nützlich, wenn man mehr als nur ein paar Dateien modifizieren möchte.

Allerdings sollte man mit Links vertraut sein (standardmäßig werden Hardlinks erzeugt; Symlinks oder Kopien sind ebenfalls möglich) und den Aufbau der ALFs grundlegend verstehen: Module besitzen indizierte Slots; jeder Slot zeigt auf einen Eintrag in der Dateiliste des Archivs. Die Einträge der Dateiliste sind benannt. Doppelbenennungen, Mehrfachverweise sowie Dummy-Einträge (Modul-Slots ohne Dateiindex) sind möglich — und davon wird Gebrauch gemacht.

Daher bin ich von nltpack abgewichen: Die ALF-Struktur wird nun verbatim als JSON festgehalten (nicht mehr nur `.FN`/`.MOD` wie bei nltpack), und die Verlinkungen in die Dateiliste werden in den Views standardmäßig als Links exportiert.

Wichtig: Beim späteren Zusammenbauen sind nur die JSON-Dateien sowie die (nummerierten) Dateien in `objects` relevant. Für `MODULECHARAC>CHEADS.NVF` bzw. `MODULECHARAC>CHEADS2.NVF` könnte man also alternativ die `objects/00010.dat` bzw. `objects/00421.dat` modifizieren. Die genauen Zuordnungen lassen sich mittels der erzeugten Views nachvollziehen.


Angehängte Dateien Thumbnail(s)
   
Zitieren
#4
Leider kann ich obigen Beitrag (weil zu alt) nicht mehr bearbeiten:
Zum Selberpixeln der Bitmaps habe ich vergessen, die verwendete Palette beizufügen. Ich habe sie hier (gezippt) im Anhang abgelegt. Sie gilt sowohl für CHEADS.NVF als auch für CHEADS2.NVF; nicht zu verwendende Farben sind wie gehabt in Magenta markiert:

.zip   cheads_palette.zip (Größe: 448 Bytes / Downloads: 1)
 
Für eine Schritt-für-Schritt-Anleitung verweise ich auf meinen anderen Beitrag unter „Farbpalette & Bearbeitung“:
https://www.crystals-dsa-foren.de/showth...#pid174354

(09.11.2025, 12:42)HenneNWH schrieb: Ich such noch jemanden der einen Portraiteditor in den neuen Charaktergenerator implementiert.

Ich möchte die Initiative hier nicht tadeln, aber damit würdest du im Grunde ein simples Paint nachbauen. Geschickter fände ich, ggf. nur einen .BMP-Import zu erlauben und die Energie lieber in die Unterstützung von RGB-Bildern (ohne Palettierung) zu stecken; so wäre man nicht auf 32 Farben beschränkt. Das ist aber nur mein Senf dazu ;)
Zitieren
#5
Erstmal sorry für meine späte Rückmeldung! Und vielen Dank für eure Antworten.

@HenneNWH, in C bin ich leider nicht mehr fit. Pauschal könnte ich mir aber vorstellen, dass man mit AI relativ viel machen könnte? Ich nutze es jedenfalls auch entsprechend in der Arbeit für die Programmierung.

@cmfrydos, ich hoffe, dir gehts wieder besser!
Vielen Dank für die ausführliche Anleitung! Das klingt super, das werde ich auf jeden Fall in den kommenden Wochen ausprobieren und euch wissen lassen, wie es für mich geklappt hat. Meine Idee war, einige der Portraits der Rivaner Einwohner zu verwenden.. bin gespannt, ob ich es hinbekomme :)

Edit: Habe es jetzt eine Weile probiert, und im ersten Schritt konnte ich auch die Bilder im Spiel ändern, allerdings waren es nur Pixelhaufen. Vielleicht hatte ich doch etwas bei der Palette falsch gemacht.
Beim zweiten Versuch und nach genauem Darauf-Achten, dass ich alles in der Palette ausgewählt und unpassende Farben angepasst hatte, kann ich die BMPs nun nicht mehr in den recompressed-Ordner umwandeln lassen. Weißt du vielleicht, was das Problem ist?

"Unhandled exception. System.NotSupportedException: Only 8bpp uncompressed BMP is supported

at Riva_HDViewer.BMPDump.ReadPalettedBitmap(Byte[])
at nvfconf.Program.Main(String[])"
Käsetoast!
Zitieren
#6
Deine Vermutung mit der falschen Palette würde ich ebenfalls annehmen. Ich kann es gerade nicht genau sagen, aber es kann gut sein, dass die Bilder der Bewohner eine andere Palette verwenden, die nicht (immer) kompatibel ist.
Verwendest du GIMP? Wichtig ist, dort unter Image → Mode → Indexed genau die richtige Palette zu aktivieren, und nicht das automatische Entfernen nicht benutzter Farben eingeschalten zu lassen.
Beim Export am besten ohne Metadaten speichern.
Wie man den compressed mode aktiviert, weiß ich ehrlich gesagt nicht, aber die Fehlermeldung deutet darauf hin, dass ggbfs mit 24/32 Bit pro Pixel (RGB(A)) statt mit indizierten Farben exportiert wurde.
Nur die richtigen Farben der Palette zu benutzen reicht nicht. Das Bild muss tatsächlich indiziert (also mit 8 Bit pro Pixel) exportiert werden.

Falls du magst, kannst du mir die .BMP-Datei gerne schicken, dann schaue ich, was genau noch nicht passt.
Zitieren
#7
Ja, das ist vermutlich das Problem.

Ich habe es genauso gemacht in GIMP, allerdings habe ich beim Export nicht die Möglichkeit, bei RGB-Format etwas umzustellen. Das steht standardmäßig auf 24 Bit, obwohl ich die Palette verwendet habe.

Ich hänge mal eines der Bilder direkt in 32x32 px an, falls du es selbst versuchen möchtest.


.bmp   b32.bmp (Größe: 3,05 KB / Downloads: 0)
Käsetoast!
Zitieren




Benutzer, die gerade dieses Thema anschauen: