champions-of-luneraria/docs/port/U5-VISUAL.md
Martin Stickelbroeck 26065f1c0e Doku: Commit-ID U5.4 in PORT-QA, U5-VISUAL und PORT-STATUS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:07:29 +02:00

25 KiB
Raw Blame History

U5 · Visuelle Neuausrichtung

Stand: 7. Oktober 2026 · Vertical Slice fertig (2c1686b), Kartenqualität entschieden und umgesetzt (Weg 2 Stufen = 7fa038a), U5.3 Gebäude, Boss und Ringborke auf PBR, Bildfehler aus U5 behoben (siehe U5.3).

U5 ist die eigentliche Begründung für den Unity-Wechsel. Ziel ist stilisierter Realismus wie Dota 2 und aktuelle MOBAs: PBR-Oberflächen, ausgeformte Details, glaubwürdige Proportionen. Die Silhouetten bleiben klar und aus der Draufsicht auch bei über 100 Einheiten lesbar.

Vorgaben des Projektinhabers (1. Oktober 2026)

  • Reihenfolge unverändert: erst U3 (HUD) und U4 (Netzwerk), dann U5. Die Modelle werden nicht vorgezogen.
  • Stil: stilisierter Realismus wie Dota 2 und aktuelle MOBAs. Dazu gehören PBR-Oberflächen, ausgeformte Details und glaubwürdige Proportionen. Die Silhouetten bleiben klar und aus der Draufsicht auch bei über 100 Einheiten lesbar.
  • Umfang: Einheiten, Gebäude und Umgebung, also die ganze Welt, nicht nur eine repräsentative Gruppe.
  • Weg: Die Quelle bleiben Blender-Generatoren im Repository mit reproduzierbarem FBX-Export und den U2A-Prüfungen. Dazu kommen gebackene PBR-Texturen (Albedo, Normal, Rauigkeit/Metall, AO).
  • Grenze: Figuren mit handmodellierter Anatomie, Gesichtern und Haaren entstehen nicht prozedural. Sie brauchen Sculpts von Künstlern oder lizenzierte Asset-Bibliotheken. Downloads dafür gibt es nur nach Freigabe und Lizenzprüfung.

Vertical Slice

Eine repräsentative Mid-Lane, auf Zielqualität gebracht:

  • beide Teamrichtungen, zwei Türme, mindestens ein Ancient sichtbar,
  • Fluss/Wasser, Vegetation, Felsen,
  • mehrere normale Einheiten, ein Held, ein Angriffschampion,
  • die Bossgrotte in sichtbarer Nähe, Kampf-VFX.

Nur diese Zone trägt die Zielqualität:

  • Terrain, Wege, PBR-Materialien, Vegetation,
  • Beleuchtung, Schatten, Himmel, Nebel, Wasser,
  • Decals, Partikel, VFX, Color Grading.

Umsetzung

U5A · Gebackene PBR-Texturen

tools/blender/bake_pbr.py (Aufruf sh tools/blender/bake_pbr.sh) backt sechs nahtlose Sätze in Blender 5.2 (Cycles, 1 Sample, Emission des Musters; Torus-Mapping für Kantenfluss):

Satz Verwendung
limestone Kluft-Stein, Pflaster, Klippen
soil Erdreich, Wege
bark Rinde, Baumstämme
leaf Laub, Vegetation
rock Felsen, geschichteter Stein
water Flusswellen

Jeder Satz liegt in Assets/Luneraria/Art/Textures/:

  • <name>-albedo-2k.png — Grundfarbe
  • <name>-normal-2k.png — Tangentialraum-Normal aus dem Höhenfeld (Sobel)
  • <name>-orm-2k.png — R AO, G Rauigkeit, B Metall (Unity-ORM)

U5B · Surface-Shader und Materialien

Luneraria/Surface trägt seit U5 die PBR-Karten:

  • _AlbedoMap, _NormalMap, _OrmMap triplanar wie der Steinsatz,
  • ORM steuert Rauigkeit, Metall und AO der PBR-Auswertung,
  • die Welt-Modi (Terrain, Stein, Pflaster, Erde, Rinde, Laub, Wasser) behalten ihr Godot-Aussehen auf dem PBR-Satz,
  • weiße Kontur-Höhenrelief (_Relief) bleibt als zusätzliche Schicht.

LuneMaterialFactory bindet je Oberfläche den passenden Satz (PbrForMode), LN_Rock den Felsensatz.

U5C · Mid-Lane Umgebung und Licht

  • Nebel: ExponentialSquared, Dichte 0,0085, Farbe 6a7f96 — Luftfeuchte des Tals.
  • Schatten: Bias 0,02, NormalBias 0,35, Nahebene 0,2 — scharfe Kanten an Türmen und Felsen.
  • Post: ACES, Bloom 0,62 / Threshold 1,15, Kontrast 14, Sättigung 16, Weißabgleich +8/−4, Vignette 0,18.
  • Himmel: prozedural, Tint 2a3d58, Atmosphäre 0,8, Reflexionen aus dem Himmel.

U5D · Kampf-VFX und Nachweis

  • Trefferblitz (LuneUnitView.HitFlashGlow): der Kern-HitFlash (0,18 s) und der Angriffs-Flash färben die Figur über einen MaterialPropertyBlock (warm beim Angriff, weißglühend beim Treffer); die geteilten Team-Materialien bleiben unangetastet.
  • Turmblitze (LuneMatchView.SyncBolts): dreipunktiger Funke mit Bogen zur Kamera, Breitenkurve (Mündung → Kern → Spitze), Farbverlauf der Teamfarbe, Überblendung über 0,25 s.

Nachweis

Beleg Ort
Mid-Lane Übersicht, Türme, Ancient, Grotte, Weitwinkel screenshots/u5/mid-lane-*.png
Godot G3 Vorher ../saumwacht-godot/docs/luneraria/screenshots/g3/vorher-1920x1080/
Godot G3 Zwischenstand ../saumwacht-godot/docs/luneraria/screenshots/g3/zwischenstand-1920x1080/
U3 Motive (HUD über der Karte) screenshots/u3/motive-1920x1080/
U2 Weltbilder (Vor-U5-Materialien) screenshots/u2b/
Leistung logs/u5/player-benchmark-macos.json
U5.3: alle drei Lanes, Rand, Weitwinkel (Editor) screenshots/u5.3/*-lane-*.jpg, edge-mountains.jpg, lane-and-edge.jpg
U5.3: Kampf mit Einheiten, Held und Boss (14 Schlüsselmomente des Vertical Function Test) screenshots/u5.3/01-…14-*.jpg; dieselben Momente vor U5: screenshots/u2a-batch/
U5.3: die 14 G3-Motive mit HUD screenshots/u5.3/motive/

Die Kamera der u5/mid-lane-*-Bilder folgt der Lage der G3-Motive (Turm, Ancient, Grotte); die Beleuchtung ist bewusst eigenständig gestimmt, nicht pixelgleich nachgebaut.

Leistung

Player (macOS, Mono, Release; Apple M5, Metal; 1920 × 1080 im Fenster, VSync aus): Seed 9 in Runde 21, Spieltempo 1×, gemessen ab 10 s Kampf mit LuneBenchmark.

Ansicht Einheiten fps (Mittel) Bildzeit Median p95 Sim Views UI Hauptthread
ganze Karte (Zoom 64) 116 132 5,11 ms 19,38 ms 0,116 0,257 0,088 3,15 / 4,31 ms
Mid-Lane nah (Zoom 22) 63 182 4,22 ms 12,90 ms 0,056 0,365 0,077 2,70 / 3,57 ms

Gegenüber U3 (169 / 218 fps) kostet der PBR-Satz mit Normals, ORM und Nebel etwa 20–25 % Bildrate. Die Mid-Lane bleibt über 120 fps; die Karte über 100 fps. Metal liefert weiter keine GPU-Zeitstempel. Der nächste Hebel sind LOD und Material-Atlanten (U2-Folgerung), nicht die Dreiecke.

Rohdaten: logs/u5/player-benchmark-macos.json. Befehle siehe U2-WORLD.md.

Abnahme U5 (Vertical Slice)

Vorgabe Stand
Stil stilisierter Realismus (PBR, Details, Proportionen, klare Silhouetten) erfüllt im Slice: PBR-Sätze, Normal- und ORM-Maps, Hit- und Angriffs-Flash, Turmfunke
Blender-Generatoren + reproduzierbarer Export + U2A-Prüfungen erfüllt: bake_pbr.py (nahtlos, Torus-Mapping), bestehende FBX-Pipeline unverändert
Gebackene PBR-Texturen (Albedo, Normal, Rauigkeit/Metall, AO) erfüllt: 6 Sätze × Albedo/Normal/ORM
Umfang Einheiten, Gebäude, Umgebung Slice bringt die Mid-Lane (Terrain, Wege, PBR, Vegetation, Licht, Nebel, Wasser, VFX) auf Zielqualität; die übrige Karte behält den U2-Stand
Grenze: keine prozeduralen Gesichter/Haare/Anatomie eingehalten — die Figuren behalten ihre Generatoren-Modelle; Sculpts bleiben vorbehalten
Vertical Slice: beide Richtungen, zwei Türme, Ancient, Fluss, Vegetation, Felsen, Einheiten, Held, Champion, Grotte, Kampf-VFX erfüllt (siehe screenshots/u5/)
Vorher/Nachher gegenüber Godot G3 erfüllt: u5/ neben g3/vorher-* und g3/zwischenstand-*; Kamera bewusst vergleichbar, Licht eigenständig
Leistung gemessen erfüllt (133 / 180 fps mit Stufen)
Erst danach über die ganze Karte entscheiden entschieden: Weg 2 (Stufen), umgesetzt

Entscheidung für die ganze Karte: Weg 2 (Stufen)

Am 2. Oktober 2026 fiel die Entscheidung des Projektinhabers: Zielqualität entlang der Lanes, einfachere Randzonen. Die Alternativen „Gleichziehen“ (PBR überall) und „Drosseln“ (PBR aus ab einer Schwelle) sind damit abgelehnt; „Drosseln“ bleibt als spätere Einstellung denkbar, ist aber nicht vorgesehen.

Umsetzung

Baustein Ort Inhalt
LuneZones Assets/Luneraria/Editor/World/LuneZones.cs Korridor um die Lanes (22 m um eine Mittellinie, ein Gebäude oder die Grotte). NearLane entscheidet die Stufe eines Punkts
_Quality Assets/Luneraria/Shaders/LuneSurface.shader 1 = Lane-Stufe (Albedo, Normal, ORM triplanar), 0 = Randstufe (Farbe + Steinschicht, keine PBR-Maps, flaches PBR wie U2)
Materialstufen LuneMaterialFactory Spec.Quality; Randmaterialien binden keine PBR-Sätze. TerrainEdge.mat trägt die umgebenden Berge
Szenenaufbau LuneWorldBuilder.ApplyTier Jeder Weltknoten jenseits des Korridors bekommt _Quality 0 über einen MaterialPropertyBlock; der innere Boden bleibt Lane-Stufe, die Berge TerrainEdge
Nachweis screenshots/u5/edge-mountains.png, lane-and-edge.png Randstufe (Berge) und der Übergang Lane → Rand in einem Bild

Gebäude (Türme, Ancients, Grotte), Einheiten, Wege, Wasser und der innere Boden bleiben unverrückt auf Zielqualität. Die Randstufe spart die neun triplanaren Map-Samples (Albedo, Normal, ORM) und behält Farbe, Vertex-Tönung, Steinschicht und Emission — also das U2-Aussehen der Berge.

Leistung mit Stufen

Ansicht Einheiten fps (Mittel) Bildzeit Median p95 Sim Views UI
ganze Karte (Zoom 64) 116 133 5,05 ms 19,33 ms 0,119 0,249 0,086
Mid-Lane nah (Zoom 22) 63 180 4,21 ms 13,17 ms 0,055 0.353 0,078

Die Zahlen liegen auf dem Niveau des Slices (132 / 182 fps): die beiden Messfenster sehen den Korridor, also die Lane-Stufe. Die Ersparnis der Randstufe zeigt sich in Weitwinkeln und am Rand (siehe lane-and-edge.png), nicht in diesen Fenstern. Für die übrige Karte ist Weg 2 die Vorgabe: hohe Qualität wo gespielt wird, einfache Materialien in den Bergen und an der Kluft.

Rohdaten: logs/u5/player-benchmark-stufen.json (Vergleich Slice: logs/u5/player-benchmark-macos.json).

Bekannte Grenzen

  • Stufen statt flächiger Zielqualität: Der Korridor um die Lanes (22 m) trägt die vollen PBR-Sätze; Berge, Kluft und ferner Hintergrund behalten Farbe + Steinschicht. Die Grenze ist bewusst hart (MaterialPropertyBlock je Knoten), kein weicher Verlauf.
  • Figuren behalten die prozeduralen Generatoren-Modelle. Anatomie, Gesichter und Haare brauchen Künstler-Sculpts oder lizenzierte Bibliotheken (Freigabe und Lizenzprüfung vorbehalten).
  • Decals und Partikel (Staub, Trefferfunken, Fußspuren) sind nicht Teil des Slice; der Hit- und Angriffs-Flash sowie der Turmfunke tragen die Kampflesbarkeit.
  • LOD und Draw Calls sind nicht gemessen (Development-Player/Profiler); die U2-Folgerung bleibt offen.
  • Water Refraction / SSR ist nicht gesetzt; der Fluss arbeitet mit Normals, Rauigkeit und Fresnel.
  • Godot G3 hat ein eigenes Lichtkonzept; die Bilder sind lagevergleichbar, nicht beleuchtungsgleich.
  • Einheitenmodelle sind noch nicht auf Zielqualität; sie folgen erst, wenn die Umgebung steht.

U5.3 · Gebäude, Boss, Ringborke und Bildbefund

Stand 7. Oktober 2026, Zweig luneraria/u5.3 (07fa457).

Umfang

  • Fünf neue PBR-Sätze aus bake_pbr.py: metal, cloth, hide, bone, wood.
    • Gebunden an LN_Metal_*, LN_Cloth_Team, LN_Wood (Türme, Ancients, Grotte) und LN_Boss_* (Schlundkrone).
    • Die 70 Einheitenmodelle tragen ihre importierten Materialien und sind nicht betroffen.
  • Ringborke-Rinde (RB_Bark) auf ihren eigenen UVs mit dem 4k-Satz aus der U2-Übergabe. Die Rauigkeitskarte wird zu ORM gepackt (ringborke-cut-orm-4k.png), die Normalen liegen im Tangentenraum des Meshes. Das ist der Pilot für Figuren mit eigenen Texturen.
  • Aufnahmen aller drei Lanes, dazu zum ersten Mal Kampfbilder mit Einheiten. Die U5-Bilder zeigten keine Einheiten, weil sie im Editor ohne laufende Partie entstanden.

Befund: U5 war halb so hell und ohne Grün

Beim Weiterbauen fiel auf: Seit U5 war die Welt dunkel und graublau. Gemessen mit tools/port/png_stats.py; Werte zwischen 0 und 1, Grün ist der Anteil der Pixel mit grünem Farbton:

Bild Helligkeit Sättigung Grün
Godot G3, Kampf Mid (g3/zwischenstand-1920x1080/09, Feldausschnitt) 0,50 0,51 27 %
U3, Kampf Mid (u3/motive-1920x1080/09, Feldausschnitt) 0,45 0,33 27 %
U5.2, Mid-Lane Übersicht (u5/mid-lane-overview.png) 0,27 0,22 0 %
U5.2, Mid-Lane Türme 0,22 0,13 2 %
U5.2, Mid-Lane Weitwinkel 0,34 0,26 0 %
U5.3, Mid-Lane Übersicht 0,41 0,31 31 %
U5.3, Mid-Lane Türme 0,44 0,36 39 %
U5.3, Mid-Lane Weitwinkel 0,40 0,24 29 %

Im Spieltest vom 7. Oktober (Stand U5.2, u3/spieltest/) waren zusätzlich die Armeen im Nahkampf weiß und der Boss gelb.

Ursachen und Korrekturen:

Befund Korrektur
Doppelte Einfärbung. Der Shader multiplizierte die Godot-Farben mit den farbigen PBR-Albedos. Deren Mittel liegt linear bei 0,03–0,4; der Rasen wurde mit etwa 0,05 multipliziert und war fast schwarz. Was man sah, war vor allem die Nebelfarbe Der Shader teilt jede Albedo durch ihren gemessenen Mittelwert (_AlbedoMean). Die Godot-Farbe bleibt der Durchschnitt, die Karte liefert nur Struktur. Rauigkeit wird ebenso um den Materialwert verteilt (_OrmMean), wo das Material eine eigene Rauigkeit hat. Der Fluss hat wieder die Godot-Farben
Datenkarten als Farbe importiert. Normal- und ORM-Karten liefen durch die sRGB-Umrechnung. Normalen kippten, Verdeckung wurde dunkler, Rauigkeit glänzender LuneMaterialFactory.Map: Normalkarten importieren als Normalkarte, ORM linear, Albedo als sRGB. Die Einstellungen stehen in den .meta-Dateien
Regenstreifen. bake_pbr.py verzerrte jedes Muster 10:1 (zwei Torus-Radien); Stein, Erde, Laub und Wasser zeigten senkrechte Striche Sätze ohne Maserung mit einem Radius (isotropic(), flächengleich, gleiche mittlere Strukturgröße): limestone, soil, leaf, water, metal, cloth, hide, bone neu gebacken. Rinde, Holz und Gesteinsschichten behalten ihre Maserung
Treffer-Flash bleichte. U5D setzte für alle Materialien einer Figur dieselbe fast weiße Grundfarbe und eine starke Emission. Im Nahkampf greift fast jede Figur an oder wird getroffen; die Armeen waren weiß, der Boss gelb, seine Kristalle verloren die Teamfarbe Ein Block je Materialplatz: Der Flash tönt die eigene Grundfarbe zu 30 % und legt 0,15 auf die eigene Emission. 16 Stufen; unveränderte Stufen überspringen die Blöcke
Nebel verschleierte die Karte. Dichte 0,0085 legte in der Kartenansicht (Zoom 64–70, 70–90 m) 35–50 % Nebelfarbe über alles. Das widerspricht der Vorgabe „aus der Draufsicht auch bei über 100 Einheiten lesbar“ Dichte 0,0045, dort 10–15 %. Farbe und Art unverändert
Ringborke-Rinde im Weltmodus. Der angefangene Stand nutzte den Rindenmodus mit Weltkoordinaten-Riefen; die wären über die laufende Figur gewandert. Die Normalen hingen an einem festen Hilfsvektor RB_Bark im Grundmodus ohne Vertexfarben, Normalen im Mikktspace des Meshes (Tangenten im Shader)

Kampfbilder gegenüber dem Stand vor U5 (u2a-batch/, dieselben Momente):

Moment vor U5 U5.3
02 Runde 1, Kampf Mid 0,43 / 0,34 / 36 % 0,42 / 0,33 / 36 %
06 Held kämpft 0,44 / 0,34 / 33 % 0,43 / 0,35 / 33 %
11 Welle 21, Übersicht 0,39 / 0,33 / 34 % 0,41 / 0,17 / 22 %

Werte jeweils Helligkeit / Sättigung / Grün. In der Übersicht kostet der verbliebene Nebel Sättigung; die Nähe ist auf dem Stand vor U5, jetzt mit PBR-Struktur.

Prüfung

Test Ergebnis
EditMode 29/29
PlayMode 13/13 (5 Werkzeuge Explicit), Verify A–I 718/0
Fingerabdrücke Seed 2 DCE95C96556F3A1A, Seed 9 ab Runde 21 7B8E43AEFC0D60C5, unverändert
Kern unverändert, die Darstellung liest nur; Kerntests .NET 457/457

Ein PlayMode-Lauf am 7. Oktober fiel aus der Zeit: Bei einer Rechnerlast um 21 erreichte die Seed-2-Partie des Vertical Function Test in seiner Grenze von 900 s nur 2.429 von 12.690 Schritten, ein Vergleich war so nicht möglich. Seed 9 stimmte im selben Lauf. Der wiederholte Lauf war vollständig grün (313 s).

Leistung

Am 7. Oktober lief der Mac mit mehr Hintergrundlast als am 2. Oktober (iOS-Simulatoren, Last um 9). Deshalb ist U5.3 abwechselnd mit einem U5.2-Player (1b31f9b) unter denselben Bedingungen gemessen, je drei Läufe:

Ansicht fps U5.2 / U5.3 Hauptthread U5.2 / U5.3 Render-Thread U5.2 / U5.3 Views U5.2 / U5.3
ganze Karte (Zoom 64), 116 Einheiten 93,8 / 91,4 3,92 / 3,94 ms 5,39 / 5,41 ms 0,32 / 0,34 ms
Mid-Lane nah (Zoom 22), 63 Einheiten 125,3 / 124,9 3,42 / 3,11 ms 4,30 / 3,97 ms 0,42 / 0,36 ms

Kein messbarer Unterschied; die Abweichungen liegen in der Streuung der Läufe. Die Treffer-Flashes kosten in der Mid-Lane weniger als in U5.2, weil unveränderte Stufen keine Blöcke setzen. Eine erste Runde vor dieser Einsparung ergab ebenfalls Gleichstand (U5.2 115/161, U5.3 117/162 fps). Die absoluten Werte liegen unter denen vom 2. Oktober (133/180 fps), weil der Rechner stärker belastet war; die Last schwankte auch zwischen den Runden.

Rohdaten: logs/u5.3/player-benchmark-u52-run*.json und player-benchmark-u53-run*.json.

Bilder

  • screenshots/u5.3/ als JPEG (Qualität 90), um das Repository klein zu halten.
  • Editor-Aufnahmen: mid-lane-*, top-lane-*, bot-lane-*, edge-mountains, lane-and-edge.
  • Kampfbilder: 01-runde1-aufmarsch bis 14-welle-ende.
  • Die 14 G3-Motive mit HUD: motive/.
  • Die U5-Bilder in screenshots/u5/ bleiben als Stand vor dem Befund.

Bekannte Grenzen U5.3

  • Einheitenmodelle (70) behalten ihre importierten Materialien. U5.3 bringt Gebäude, Boss und Ringborkes Rinde auf PBR. Ringborkes übrige Materialplätze (Moos, Blätter, Schnittholz …) sind unverändert.
  • Sättigung liegt mit 0,31–0,36 in der Nähe auf U3-Niveau, unter Godot G3 (0,51). ACES-Tonemapping und Nebel nehmen Farbe; eine Farbabstimmung wäre eine Entscheidung zum Look, kein Fehler.
  • Randstufe unverändert (Farbe + Steinschicht).
  • Decals, Partikel, LOD weiter offen.

U5.4 · Figuren

Stand 9. Oktober 2026, Zweig luneraria/u5.4 (4883d95). SSAO ist standardmäßig an (Entscheidung des Projektinhabers vom 9. Oktober). Die Farbsättigung bleibt unverändert.

Eine erste Schlussprüfung in der Nacht scheiterte: Der Mac schlief mit geschlossenem Deckel und ließ Unity nur in kurzen Wachphasen laufen. Die EditMode-Suite brauchte so 26 statt 1 Minute, die Messungen waren unbrauchbar. Die Prüfung unten lief am Morgen mit offenem Deckel.

Umfang

  • Surface-Materialien für alle Figuren. Die Modelle der Einheiten (45), Monster (10), Völker (7) und Helden (7) haben 146 Materialnamen. Davon sind 142 neu unter Materials/Units/; die vier LN_Boss_* der Schlundkrone gehörten schon zu den Gebäuden. LuneMaterialSet.Dress setzt sie im Spiel, in den HUD-Porträts und in den Übersichtsbildern ein.
    • Farbe, Rauigkeit (1 − Glätte) und Emission bleiben die importierten Werte aus Blender.
    • Metalle (Gold, Bronze, Eisen, Messing …) werden metallisch (0,7), die bemalten Platten des Nietenkonvents leicht (0,2). Vorher waren alle 414 importierten Figurenmaterialien nicht-metallisch.
    • Randlicht (Fresnel, Stärke 0,35, kühles Himmelslicht, mit dem Hauptlicht skaliert) hebt die Silhouetten im Draufblick vom Boden ab.
    • Oberflächenstruktur: der Satz der Materialfamilie (Metall, Stoff, Haut, Knochen, Holz, Rinde, Laub, Stein) im eigenen Raum der Figur, eine Wiederholung je Meter, damit sie nicht über die laufende Figur wandert. Zuordnung in LuneMaterialFactory.UnitFamily (Fraktionspaletten nach Rolle, sonst Stichworte im Namen).
    • Die Struktur ist nur in den HUD-Porträts an (400 px, LunePortraits.ShowDetail). Im Feld sind die Figuren 30–60 px hoch; dort ist sie nicht zu sehen, kostete aber rund 10 % Bildrate.
  • Ringborke: Der 4k-Satz aus Phase 11 (bake_cutwood.py) gehört zum Schnittholz (RB_Cutwood) und liegt jetzt dort auf den eigenen UVs, auch im Feld. U5.3 hatte ihn an die Rinde (RB_Bark) gebunden; das verwaiste Materials/Buildings/RB_Bark.mat ist entfernt.
  • Umgebungsverdeckung (SSAO) als URP-Renderer-Feature über LuneProjectSetup: Kontaktschatten von Figuren und Gebäuden, dunklere Fugen an Plaza-Rand, Säulen und Turmfüßen.
    • Einstellungen: Radius 0,35 m, Stärke 1,2, Ausblendung erst ab 260 m (Kartenansicht), Tiefe nach den opaken Objekten, halbe Auflösung.
    • In den Optionen (F1) abschaltbar („Umgebungsverdeckung (SSAO)“, gespeichert; Bild screenshots/u5.4/optionen-ssao.jpg); -luneSsao 0 gilt für eine Sitzung. Das Umschalten wirkt nur im Player, im Editor bleibt das Projekt-Asset unverändert. Der Player-Selbsttest schaltet die Option zweimal um.
    • URP passt dazu die Variantenfilter im Pipeline-Asset und zwei Ressourceneinträge in den globalen Einstellungen an; beides ist nötig, damit der Player die SSAO-Varianten enthält.
  • Shader: Die Steinreliefkarte wird nur noch für Gelände, Stein, Pflaster und Erde gelesen. Glatte Oberflächen (Figuren, Bauteile, Requisiten) sparen drei Texturzugriffe.

Befund im Werkzeug

LuneAssetPreview.RenderSheets zeigte die Figuren mit den importierten Materialien. Neu kleidet LUNE_DRESS=1 sie wie das Spiel, LUNE_EVIDENCE wählt den Ordner. Dabei gefunden: Das Öffnen der leeren Vorschauszene entlädt zuvor geladene, unreferenzierte Assets. Das Materialset muss deshalb nach der Szene geladen werden, sonst bleibt der Verweis leer und nichts wird eingekleidet.

Prüfung

Test Ergebnis
EditMode 29/29
PlayMode 14/14 (5 Werkzeuge Explicit), Verify A–I 718/0
Fingerabdrücke Seed 2 DCE95C96556F3A1A, Seed 9 ab Runde 21 7B8E43AEFC0D60C5, unverändert
Player-Selbsttest 30/30 (26 aus dem U4-Nachtrag, 4 neue zur SSAO-Option), logs/u5.4/player-smoke.json
Kern unverändert, die Darstellung liest nur

Leistung

Endstand, 9. Oktober, Deckel offen, Akkubetrieb ohne Stromsparmodus. U5.3-Player (07e5365), U5.4 und U5.4 mit -luneSsao 0 wurden abwechselnd gemessen, je drei Läufe; Mittel der Bildrate:

Ansicht U5.3 U5.4 U5.4 ohne SSAO
Mid-Lane nah (Zoom 22), 63 Einheiten 177,7 148,5 (−16 %) 171,5 (−3,5 %)
ganze Karte (Zoom 64), 116 Einheiten 127,8 111,5 (−13 %) 122,0 (−4,5 %)

Die Figurenmaterialien mit Metall und Randlicht kosten 3–5 %, die SSAO weitere 9–13 %. Haupt- und Render-Thread bleiben gleich (2,4–3,1 bzw. 3,4–4,7 ms); die Mehrkosten liegen auf der GPU (Warten beim Present). Rohdaten: logs/u5.4/player-benchmark-u53-run*.json, -u54-run*.json, -u54-nossao-run*.json.

Zwischenstände (8. Oktober)

Gemessen mit offenem Deckel und höherer Grundlast, U5.3-Player gegen den jeweiligen U5.4-Stand; Bildrate Mid-Lane nah / Kartenansicht:

U5.4-Stand U5.3 U5.4 Kosten
Struktur im Feld an, SSAO mit Tiefen-Normalen-Vorpass, volle Auflösung 131,8 / 98,5 106,6 / 71,4 −19 / −28 %
Struktur an, SSAO nach den opaken Objekten, volle Auflösung 135,5 / 98,5 107,2 / 80,5 −21 / −18 %
Struktur an, SSAO aus 133,5 / 98,0 119,2 / 88,0 −11 / −10 %
Struktur im Feld aus, SSAO nach den opaken Objekten, halbe Auflösung 135,2 / 99,0 111,0 / 86,4 −18 / −13 %

Der Vorpass für Tiefe und Normalen zeichnet alle Geometrie ein zweites Mal (Figuren im Mittel 35.000 Dreiecke, 116 im Bild); darum wurde er verworfen. Danach kamen noch die Steinkarte nur wo nötig und die halbe SSAO-Auflösung hinzu (Endstand oben).

Bilder

screenshots/u5.4/ als JPEG:

  • Übersichtsbilder je Gruppe, eingekleidet wie im Spiel (Units.jpg, Characters.jpg, Enemies.jpg, Peoples.jpg, Buildings.jpg, …); die Bilder ohne Einkleidung liegen in u2a-batch/.
  • Editor-Aufnahmen der drei Lanes, Rand und Weitwinkel.
  • Die 14 Kampfmomente des Vertical Function Test (01-runde1-aufmarsch … 14-welle-ende).
  • Die 14 G3-Motive mit HUD (motive/); die großen Porträts zeigen die Oberflächenstruktur.
  • Die Optionen mit dem neuen Schalter (optionen-ssao.jpg).

Wirkung im Kampf, gegenüber U5.3 (07-boss-auf-der-lane, 06-held-kaempft): Metalle glänzen, die dunklen Basalt-Einheiten haben eine helle Kante. Unter und zwischen den Figuren liegen Kontaktschatten. Die Kristalle des Bosses leuchten unverändert.

Grenze der SSAO-Variante: Sie wirkt nach den opaken Objekten auf das fertige Bild. In engen Fugen dunkelt sie deshalb auch leuchtende Teile ein wenig ab; in den Kampfbildern ist das nicht zu sehen.

Geometrie

Ein Probelauf in Blender mit Fasen (Bevel 1,2 cm, 2 Segmente, ab 35°) und gewichteten Normalen am Basaltgolem g01 änderte das Bild kaum (+6 % Dreiecke). Die Modelle sind schon fein. Stilisierter Realismus der Figuren über Material und Licht hinaus braucht neue Formen: Sculpts von Künstlern oder lizenzierte Bibliotheken (Vorgabe vom 1. Oktober, Freigabe und Lizenzprüfung durch den Projektinhaber).