feat: echte Charakter-Portraits statt Buchstaben-Platzhalter im Modal #18
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DasAoD/sfguildsv2!18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/character-portraits"
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?
Zusammenfassung
Ersetzt den Buchstaben-Platzhalter im Charakter-Modal durch ein aus Sprite-Ebenen zusammengesetztes Portrait (Gesicht/Haare/Bart/Augen/Nase/Mund/Augenbrauen/Ohren/Extra), gerendert per
<canvas>im Browser.Herkunft der Daten/Logik
portraits/{gender}/{race}{gender}sprites— die HD-Variante ohne_sd-Suffix, siehe Bugfix unten).sfportrait.12hp.desPortraitMaker-full-1.74.min.jsrekonstruiert — ein Community-Tool, das dieselben Spiel-Assets für einen manuellen Portrait-Builder nutzt. Offset-Map + Rahmengrafik (portrait_border.webp, als der echte In-Game-Rahmen verifiziert, nicht eines der dekorativen Zusatz-Frames der Seite) sind lokal vendored, damit nichts von der Verfügbarkeit dieser Seite abhängt.Wichtige Bugfixes während der Entwicklung
Gefunden per direktem Referenzvergleich: die Kompositions-Klasse von sfportrait.12hp.de wurde live im Browser importiert und mit identischen Test-Parametern aufgerufen, um Soll-Ergebnisse zum Vergleich zu erzeugen.
_sd-Bundles (1024×1024-Atlanten) sind halb so groß wie die für die Offset-Map kalibrierten HD-Bundles (2048×2048) — führte dazu, dass periphere Elemente (Ohren, Hörner, Haar-Accessoires) weit neben dem Kopf landeten. Alle Portraits neu aus den HD-Bundles geripped.Nach beiden Fixes stimmen 6 stichprobenartig getestete Rasse/Klasse-Kombinationen (Mensch, Dämon, Dunkelelf, Goblin, Ork, Elf) visuell überein mit dem Referenz-Rendering von sfportrait.12hp.de.
Bekannte Lücke
Dämon-Hörner (
horn-demon_horn_*.png) sind trotz GUID-Fix nicht in den geripten Bundles auffindbar, obwohl sfportrait sie erfolgreich lädt (Quelle noch ungeklärt — evtl. ein weiteres, noch nicht identifiziertes Bundle). Portraits von Dämonen mit Hörnern zeigen daher aktuell keine Hörner, degradieren aber sauber (kein Fehler, nur fehlendes Detail).Änderungen
cli/cron_character_sync.php: speichert jetzt die Portrait-Rohdaten (Gender, Haare, Bart, Augen, ...) aus der sf-api mitpublic/assets/js/portrait.js: neuer Compositor — Ebenen-Auflösung per Datei-Manifest statt starrer Namenskonstruktion (Dateinamen sind nicht über alle Rassen einheitlich, z.B. hat Ork bei Augenbrauen keine Farbgruppen-Ziffer)guild.js/guild.css/guild.php: Canvas statt Platzhalter im Modal,portrait.jsvorguild.jseingebundenincludes/template.php: JS-Cache-Version gebumpt (betrifft auch die vorherigen PRs dieser Session, die noch nicht gebumpt war)Test
Verifiziert per direktem Bild-Vergleich gegen sfportrait.12hp.de-Referenz-Renderings für 6 Rasse/Klasse-Kombinationen (siehe oben). Noch nicht gegen echte Gildencharaktere getestet — das ist für eine Folge-Session geplant, sobald das hier live ist.
Ersetzt den Buchstaben-Platzhalter im Charakter-Modal durch ein aus Sprite-Ebenen zusammengesetztes Portrait (Gesicht/Haare/Bart/Augen/...), gerendert per Canvas im Browser. Herkunft der Daten/Logik: - Sprite-Grafiken direkt aus den Unity-Asset-Bundles des Spiels geripped (portraits/{gender}/{race}{gender}sprites, HD-Variante ohne "_sd"-Suffix — die SD-Variante hat nur die halbe Auflösung, was zu Fehlplatzierungen führte, siehe unten). - Ebenen-Reihenfolge, Farbgruppen-Sonderfälle (z.B. Bartfarbe bei Dämonen an Hornfarbe gekoppelt) und Sprite-Offsets aus sfportrait.12hp.de's PortraitMaker-full-1.74.min.js rekonstruiert (Community-Tool, das dieselben Spiel-Assets für einen manuellen Portrait-Builder nutzt) — Offset-Map + Rahmengrafik (portrait_border.webp, bestätigt als der echte In-Game-Rahmen) von dort übernommen und lokal vorgehalten, damit nichts von der Verfügbarkeit dieser Seite abhängt. - Klassen-zu-Gesicht-Zuordnung (9 Klassen ohne eigenes Gesicht nutzen das einer Basisklasse, z.B. Nekromant/Pestdoktor -> Magier-Gesicht) aus derselben Quelle, gegen die sf-api-Klassenreihenfolge verifiziert. Wichtige Bugfixes während der Entwicklung (per Referenzvergleich gegen sfportrait.12hp.de gefunden, dessen Kompositions-Klasse dafür direkt im Browser importiert und mit identischen Test-Parametern aufgerufen wurde): - Sprite-Auflösung: SD-Bundles (1024x1024-Atlanten) sind halb so groß wie die für die Offset-Map kalibrierten HD-Bundles (2048x2048) -> alle Portraits neu aus den HD-Bundles geripped. - Mehrseitige Texturen (manche Rassen haben 2 Atlas-Seiten): statt vager Bounds-Heuristik wird jetzt über die tatsächliche Textur-GUID-Referenz im Sprite-Asset aufgelöst, welche Seite ein Sprite enthält. Bekannte Lücke: Dämon-Hörner (horn-demon_horn_*.png) sind trotzdem nicht auffindbar in den geripten Bundles, obwohl sfportrait sie erfolgreich lädt — Ursache noch ungeklärt, Portraits ohne Hörner degradieren aber sauber. - cli/cron_character_sync.php speichert jetzt die Portrait-Rohdaten mit - public/assets/js/portrait.js: neuer Compositor (Layer-Auflösung per Datei-Manifest statt starrer Namenskonstruktion, da Dateinamen nicht über alle Rassen einheitlich sind) - guild.js/guild.css/guild.php: Canvas statt Platzhalter im Modal - 1844 Portrait-Sprites + Offset-Map + Rahmengrafik vendored