ArmyViewsTests stellt alle zehn Glutpakt-Truppen und die Heldin in einer
Partie auf, Bilder von Aufstellung und Kampf mit alten Modellen und
Meshy-Figuren; Maßtabelle und Befund zu Größen und Lesbarkeit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Festungsgolem als Aufwertung der Schlackenwacht, deren Konzept als
Stilvorlage und Figurendatei, ersetzt die Phase-15-Skelettfigur,
68 Credits, Lane-Fassung inklusive. Stresstest 36 Basaltbastionen:
Mid 136,9 -> 125,5 fps, Karte 120,4 -> 126,4. Tests grün,
Fingerabdrücke unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sonnenpriester-Golem als Aufwertung des Herdhüters, dessen Konzept als
Stilvorlage und Figurendatei, Feuerbecken fest an der Hüfte, 68 Credits,
Lane-Fassung inklusive. Stresstest 36 Sonnenessen: Mid 137,1 -> 152,3
fps, Karte 110,6 -> 126,8. Tests grün, Fingerabdrücke unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Laufende Balliste ohne Arme: statisches Meshy-Modell aus Vorder- und
Rückansicht, Skelett und Clips der Phase-19-Figur per Messpunkten
angepasst (build_machine.py), starre Bindung mit Knochenbereichen.
54 Credits. Stresstest 36 Glasballisten gegen Phase 19: Mid gleich,
Karte 117,8 -> 132,8 fps. Tests grün, Fingerabdrücke unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Figur und Lanze getrennt von Meshy; build_figure legt die Lanze in die
rechte Hand und bindet sie an RightHand (props), Lanzenstoß aus dem Stand
(in_place). Ersetzungen gelten nach den Godot-Zuordnungen. HUD-Porträts
zeichnen Skelettfiguren als gebackenes Netz: mit GPU-Skinning blieben
Karten leer. 110 Credits. Stresstest 38 Funkenlanzen gegen Phase 18:
Mid 128,6 -> 147,6 fps, Karte 112,4 -> 128,0. Tests grün, Fingerabdrücke
unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Konzept aus Icon, Phase-4-Modell und Kohlenbeißer-Konzept als Stilvorlage,
Modell, Skelett und sieben Bibliotheks-Clips für 68 Credits; Figurendatei
vom Kohlenbeißer übernommen, Lane-Fassung inklusive. Bildwerkzeug und
Stresstest nehmen aufgewertete Truppen. Stresstest 35 Schlackenklauen:
Mid 152,5 -> 135,8 fps, Karte 116,7 -> 115,6. Tests grün, Fingerabdrücke
unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pilot für eine generierte Figur: der Kohlenbeißer g01 kommt als Meshy-Ergebnis
in den Port und ersetzt dort das Phase-4-Modell. Eine Figur genügt, um Pipeline,
Bild und Leistung zu bewerten; Anatomie, Gesichter und Haare bleiben
Künstler-Sculpts oder lizenzierte Packs (Vorgabe vom 1. Oktober).
- Meshy-Pipeline unter tools/meshy/: API-Client (meshy.py, Ledger, Schlüssel
nie geloggt) und Blender-Generator (build_figure.py) aus den unveränderten
Downloads in assets-source/meshy/g01/. Export über den Manifest-Eintrag
kohlenbeisser mit "replaces": "g01"; LuneUnitLibraryBuilder hängt die Figur
zusätzlich unter der Godot-ID ein.
- UV-Material AI_Kohlenbeisser (Familie authored): die Karten der Figur selbst,
Lava-Glut aus der Albedo-Alpha (Meshy 7.1 ohne Emission-Map) mit _Glow 1,25.
- Schatten ohne Normalen-Versatz (LuneShadowBias, _ShadowNormalScale 0): die
UV-Naht-Kopien tragen geknickte Normalen; URP ApplyShadowBias zog helle
Nähte durch den Schatten. Die Figur wirft nur mit Tiefen-Bias.
- GPU-Batched-Skinning (PlayerSettings.meshDeformation, LuneProjectSetup):
35 Meshy-Kohlenbeißer kosteten mit CPU-Skinning rund 1 ms Haupt- und
1,7 ms Render-Thread je Bild.
- LuneBenchmark: -luneBenchmarkRound und -luneBenchmarkArmy (Figuren-Stress).
LuneAssetPreview: LUNE_ONLY für Vorher/Nachher, Trefferframe aus der
Kontaktzeit des Manifests. FigureViewsTests (Explicit) für die vier
Spielmomente der Figur.
- Tests: EditMode 29/29, PlayMode 14/14 (6 Explicit), Verify 718/0,
Player-Selbsttest 30/30, Kerntests 457/457, Fingerabdrücke unverändert
(DCE95C96556F3A1A, 7B8E43AEFC0D60C5).
- Leistung (A/B im selben Fenster, 35x g01): Meshy -21 % Mid (109,7 zu 138,8)
und -13 % Karte (91,7 zu 105,6) gegenüber Phase-4. GPU-Skinning hebt Mid
um 7-27 % und entlastet Haupt- und Render-Thread. Standard-Partie ab Runde 21
ohne g01 im Bild: drei Varianten bis 6 %.
- Doku: U5-VISUAL (U5.5), PORT-QA, PORT-STATUS, KNOWN-BEHAVIOR-DIFFERENCES;
Bilder screenshots/u5.5/ und u5.5-gpu/, Rohdaten logs/u5.5/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Figuren (Einheiten, Monster, Völker, Helden) bekommen den Materialweg
der Welt; dazu Umgebungsverdeckung für die ganze Szene.
- Surface-Materialien für alle 146 Figurenmaterialien (142 neu unter
Materials/Units/, die LN_Boss_* gehörten schon zu den Gebäuden). Farbe,
Rauigkeit und Emission bleiben die Blender-Werte; Metalle werden
metallisch (vorher war keines der 414 Figurenmaterialien metallisch),
ein Randlicht hebt die Silhouetten im Draufblick vom Boden ab.
- Oberflächenstruktur je Materialfamilie im eigenen Raum der Figur, nur
in den HUD-Porträts. Im Feld (30-60 px hohe Figuren) war sie nicht zu
sehen und kostete rund 10 % Bildrate.
- Ringborkes 4k-Satz liegt am Schnittholz (RB_Cutwood), wohin er gehört;
U5.3 hatte ihn an die Rinde gebunden. Verwaistes RB_Bark.mat entfernt.
- SSAO über LuneProjectSetup: nach den opaken Objekten, halbe Auflösung,
Radius 0,35 m, Ausblendung ab 260 m. Standardmäßig an (Entscheidung des
Projektinhabers), in den Optionen abschaltbar, -luneSsao 0 für eine
Sitzung. Die Variante mit Tiefen-Normalen-Vorpass kostete 19-28 %.
- Shader: Steinreliefkarte nur noch für Gelände, Stein, Pflaster, Erde.
- Werkzeug: Übersichtsbilder mit LUNE_DRESS=1 eingekleidet wie im Spiel;
das Materialset wird nach der leeren Vorschauszene geladen (sie entlädt
unreferenzierte Assets).
- Tests: EditMode 29/29, PlayMode 14/14, Verify 718/0, Player-Selbsttest
30/30 (4 neue zur SSAO-Option), Fingerabdrücke unverändert
(DCE95C96556F3A1A, 7B8E43AEFC0D60C5).
- Leistung (A/B mit U5.3 im selben Lauf): Mid nah 177,7 -> 148,5 fps
(-16 %), Karte 127,8 -> 111,5 fps (-13 %); ohne SSAO -3,5 / -4,5 %.
- Doku: U5-VISUAL (U5.4), PORT-STATUS, PORT-QA; Bilder screenshots/u5.4/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fortsetzung des angefangenen U5.3-Stands vom 2. Oktober.
- Fünf neue Sätze aus bake_pbr.py (metal, cloth, hide, bone, wood) für
Türme, Ancients, Grotte und die Schlundkrone. Ringborkes Rinde (RB_Bark)
auf ihren eigenen UVs mit dem 4k-Satz (Rauigkeit zu ORM gepackt),
Normalen im Tangentenraum des Meshes. Aufnahmen aller drei Lanes.
- Befund: Seit U5 war die Welt halb so hell und ohne Grün (Mid-Lane
Helligkeit 0,27, Grün 0 %). Ursachen und Korrekturen:
- Die PBR-Albedos wurden über die Godot-Farben multipliziert (Rasen
etwa x0,05). Jetzt teilt der Shader jede Karte durch ihren Mittel-
wert; die Godot-Farbe bleibt der Durchschnitt, die Karte liefert
Struktur. Ebenso die Rauigkeit, wo das Material eine eigene hat.
- Normal- und ORM-Karten waren als sRGB-Farbe importiert. Jetzt
Normalkarte bzw. linear.
- bake_pbr.py verzerrte alle Muster 10:1 (Regenstreifen). Stein, Erde,
Laub, Wasser und die neuen Sätze ohne Maserung neu gebacken.
- Der Treffer-Flash ersetzte die Grundfarbe aller Materialplätze; im
Nahkampf waren die Armeen weiß und der Boss gelb. Jetzt Tönung der
eigenen Farbe je Platz, wenig Emission, 16 Stufen.
- Nebel 0,0085 verschleierte die Kartenansicht zu 35-50 %; jetzt 0,0045.
Ergebnis Mid-Lane: Helligkeit 0,41-0,44, Grün 31-39 % (U3: 0,45 / 27 %).
- Tests: EditMode 29/29, PlayMode 13/13, Verify 718/0, Kerntests .NET
457/457, Fingerabdrücke unverändert (DCE95C96556F3A1A, 7B8E43AEFC0D60C5).
- Leistung: A/B mit einem U5.2-Player unter gleicher Last, kein messbarer
Unterschied (91,4 gegen 93,8 fps Karte, 124,9 gegen 125,3 fps Mid).
- Messwerkzeug tools/port/png_stats.py; Doku U5-VISUAL (U5.3),
PORT-STATUS, PORT-QA; Bilder screenshots/u5.3/ als JPEG.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entscheidung des Projektinhabers vom 2. Oktober 2026: Weg 2 (Stufen)
statt Gleichziehen oder Drosseln. Der Lankorridor trägt die vollen
PBR-Sätze; Berge, Kluft und ferner Hintergrund behalten Farbe und
Steinschicht.
- LuneZones: Korridor von 22 m um eine Lane-Mittellinie, ein Gebäude
oder die Grotte. NearLane entscheidet die Stufe eines Weltknotens.
- Surface-Shader _Quality: 1 bindet Albedo, Normal und ORM triplanar;
0 lässt die neun Map-Samples weg und behält Farbe, Vertex-Tönung,
Steinschicht und Emission — das U2-Aussehen der Berge.
- LuneMaterialFactory: Spec.Quality, TerrainEdge.mat für die umgebenden
Berge; Randmaterialien binden keine PBR-Sätze.
- LuneWorldBuilder.ApplyTier: jeder Weltknoten jenseits des Korridors
bekommt _Quality 0 über einen MaterialPropertyBlock. Gebäude,
Einheiten, Wege, Wasser und der innere Boden bleiben Lane-Stufe.
- Nachweis: screenshots/u5/edge-mountains.png (Randstufe) und
lane-and-edge.png (Übergang Lane → Rand in einem Bild).
- Leistung (macOS-Player, 116 Einheiten): 133 fps Übersicht, 180 fps
Mid nah — auf dem Niveau des Slices, weil die Messfenster den
Korridor sehen. Die Ersparnis liegt in Weitwinkeln und am Rand.
- Tests: EditMode 29/29, PlayMode 13/13, Kerntests 457/457. Keine
Regeländerung.
- Dokumentation: U5-VISUAL (Entscheidung und Umsetzung), PORT-QA,
PORT-STATUS, KNOWN-BEHAVIOR-DIFFERENCES.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Mid-Lane steht auf Zielqualität (stilisierter Realismus). Die übrige
Karte bleibt auf dem U2-Stand, bis über den Weg entschieden ist.
- U5A: tools/blender/bake_pbr.py backt sechs nahtlose PBR-Sätze
(limestone, soil, bark, leaf, rock, water) mit Albedo, Normal aus dem
Höhenfeld (Sobel) und ORM (R AO, G Rauigkeit, B Metall), je 2k.
Torus-Mapping für Kantenfluss wie phase10/bake_bark.py.
- U5B: Luneraria/Surface trägt _AlbedoMap, _NormalMap, _OrmMap triplanar
über den Godot-Weltfarben; ORM steuert Rauigkeit, Metall und AO.
LuneMaterialFactory bindet je Oberfläche den passenden Satz, LN_Rock
den Felsensatz.
- U5C: Mid-Lane-Licht — Nebel (ExponentialSquared, Dichte 0,0085),
scharfe Schatten (Bias 0,02), Weißabgleich und Vignette, ACES und
Bloom leicht angehoben.
- U5D: Hit- und Angriffs-Flash über MaterialPropertyBlock (warm beim
Angriff, weißglühend beim Treffer), Turmblitze als dreipunktiger Funke
mit Breitenkurve und Farbverlauf. CaptureMidLane schreibt fünf
Nachweisbilder nach docs/port/screenshots/u5/.
- Leistung (macOS-Player, 116 Einheiten): 132 fps Übersicht, 182 fps Mid
nah — 20–25 % unter U3 durch PBR, Normals und Nebel. Mid-Lane bleibt
über 120 fps.
- Tests: EditMode 29/29, PlayMode 13/13, Kerntests 457/457. Keine
Regeländerung; Golden 51.221 Werte unverändert.
- Grenze eingehalten: keine prozeduralen Gesichter, Haare oder Anatomie.
Sculpts bleiben vorbehalten (Freigabe und Lizenzprüfung).
- Dokumentation: U5-VISUAL (Umsetzung, Nachweis, Entscheidungsvorlage
für die ganze Karte), PORT-QA (U5), PORT-STATUS, KNOWN-BEHAVIOR-
DIFFERENCES.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Beginn des Ports des G3-HUD (Referenz luneraria/g3, 1b540f2).
- Entscheidung UI Toolkit statt uGUI nach kurzer Bewertung und einer Probe:
Panel rendert im Batchmodus in eine 1920x1080-Textur (Skalierung wie Godot
canvas_items/expand, 1600x960), gefaste Verlaufsplatten, alle 50 Symbole,
Schriften aus den variablen Fonts der Referenz.
- Sichtmodell portiert (LuneHudModel, LuneLaneThreat, LuneStats) mit den
Privatsphäre-Regeln der Referenz: Gold, Entwurf, Rückgängig und neue
Buchungen nur für den eigenen Sitz; Lanes, Gebäude, Boss und Wellen aus
öffentlichem Zustand.
- Menschlicher Sitz in LuneMatchRunner/LuneMatchDriver: Bots planen die
übrigen fünf Sitze, die Planung wartet auf Bereit; Tempo 1x/2x/4x und Pause
nur im Kampf. Bot-Partien unverändert.
- Theme-Grundlagen: Farben und Zahlenformate, Platten (forged_style.gd),
Vektorsymbole (lune_glyphs.gd) mit Painter2D, statische SDF-Atlanten aus
den benannten Instanzen von Cantarell und Cinzel (OFL).
- Tests: EditMode 23/23 (12 neue: gleiches öffentliches Bild für alle Sitze,
fremde Entwürfe privat, private Boss-Lane-Wahl, Lane-Bedrohung, Bosszustände,
nächste Welle, Bereit-Sperre, Formate, menschlicher Sitz); PlayMode 3/3,
Fingerabdrücke der Bot-Partien unverändert (DCE95C96556F3A1A, 7B8E43AEFC0D60C5).
- Dokumentation: U3-UI (Bewertung, U3A), U5-VISUAL (Vorgaben des
Projektinhabers: stilisierter Realismus für die ganze Welt, erst in U5).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vollständiger, engineunabhängiger Regelkern (Luneraria.Core, ohne
UnityEngine): Partie mit sechs Plätzen und zwei Teams, private Planung mit
atomarer Übernahme, Gold, Käufe, Aufwertungen, Formation, drei Lanes mit
zwei Laneturmen und zwei Basistürmen je Team, Ancients, unbegrenzte Wellen,
Helden mit Stufen, Items und Talenten, Angriffschampions, Bossgrotte mit
Anspruch, Entsendung, Kopfgeld und dreirundiger Sperre, Bots und
Siegbedingung (nur Ancient-Fall). Serverautoritative Befehlsschnittstelle.
- Deterministisch: fester Takt, geordnete Maps, fortlaufende IDs, kein
Zufall, keine Uhr, keine Threads
- Tabellen einmal aus Godot erzeugt (tools/port/gen_content.py)
- Golden-Referenzen aus Godot (tools/godot-golden): 19 Szenarien,
120 Snapshots, 51.221 Werte, Abweichung 0 (Toleranzen dokumentiert)
- Tests: content 75, core 91, m2 73, golden 157, determinism 6 = 402/402
- Leistung (M5): Simulationsschritt 0,259 ms statt 1,587 ms in GDScript
- Referenzfehler R1 im Bot-Gedächtnis bewusst übernommen und dokumentiert
- Geplante Helden (Lucy, Ghaliga, Siegfried, Feena) im Datenmodell, inaktiv
- Doku unter docs/port (U1-RULES, PORT-STATUS, PORT-QA, U2 bis U5)
Unity-Editor-Lauf offen: Die Unity-Lizenz ist noch nicht aktiviert; gebaut
und getestet mit dem .NET 8 SDK auf Unitys Sprachstand (C# 9, .NET
Standard 2.1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>