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>
Vollständige Bot-Partien sichtbar in Unity, gleich der Partie des Kerns
(Vertical Function Test vor dem vollständigen Asset-Import).
- VerticalFunctionTests (PlayMode): Seed 2 von Runde 1 bis zum Fall des
Blau-Ancient (9 Runden; Türme fallen ab Runde 7, Grottenboss in Runde 8
gewonnen und in Runde 9 auf der Bot-Lane eingesetzt, bis zu 4 Helden) und
Seed 9 ab Runde 21 mit der Fixture des Golden-Szenarios high_wave_21 (bis zu
125 Einheiten, 6 Helden, Fall des Rot-Ancient). Beide Fingerabdrücke gleich
dem Kernlauf; 14 Bilder der Schlüsselmomente.
- macOS-Player-Build (LunePlayerBuild) und LuneBenchmark: 1080p, VSync aus,
116 Einheiten: 161-199 fps, Hauptthread 1,3 ms, Simulation unter 0,1 ms;
Ausreißer beim Present (p95 18-26 ms) analysiert und für U5 vorgemerkt.
- Dokumentation: U2-WORLD (U2D, Abnahme), PORT-STATUS, PORT-QA,
KNOWN-BEHAVIOR-DIFFERENCES (U2 ändert kein Verhalten), README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reproduzierbarer Export aus den Blender-Quellen der Godot-Referenz nach FBX,
geprüft auf beiden Seiten; sechs repräsentative Assets vollständig in Unity
verifiziert (normale Einheit g01, Einheit mit Skelett Funkenlanze, Turm
Grenzwacht, Ancient, Schlundkrone, Vegetation/Kartenrequisiten), dazu Bastion,
Kernwacht und Bossgrotte für die Szene.
- tools/blender: Manifest mit Exportregeln je Asset, Exportskript mit Prüfungen
(Einheiten, Maßstab, Achsen, Vorderseite, Mesh-Namen, Dreiecke, Materialslots,
Normalen, Tangenten, Vertexfarben, Maße, Root Bone, Bone-Namen, Clips, Blend
Shapes) gegen die Manifeste der Godot-GLBs, FBX-Rundreise, byteidentische
Ausgabe (feste Uhrzeit, PYTHONHASHSEED).
- Regeln wie beim GLB-Export: HIGH-RES-Modifikatoren weglassen, logische Namen,
Skin-Teile zusammenfügen; 180°-Drehung, damit die Vorderseite nach Unitys
Achsen-Bake auf +Z liegt (Unity = (-x, y, z) der Godot-Koordinaten).
- Unity: Importregeln (Postprocessor), Verifier gegen das Blender-Protokoll,
Vorschaubilder; URP-Asset, Linear-Farbraum, URP-Settings nach
Assets/Luneraria/Settings/Rendering.
- Ergebnis: 176/176 Blender-Prüfungen, 128/128 Unity-Prüfungen, Dreiecke gleich
den Godot-GLBs, Maße auf 0,05 mm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Projekt mit Unity 6.3 LTS (6000.3.20f1, Personal) geöffnet: ProjectSettings,
.meta-Dateien, URP-Global-Settings, packages-lock.json.
- Manifest auf die benötigten Pakete zurückgeführt; Unity hatte beim ersten
Öffnen Vorlagenpakete ergänzt (Purchasing, Analytics, Collab, XR, 2D, Navigation).
- Test Runner: Die U1-Suiten laufen unverändert als EditMode-Tests; mit
LUNE_TEST_REPORT schreiben .NET und Unity dasselbe JSON-Protokoll (SuiteReport).
- Golden-Vergleich zusätzlich je Fachbereich (Gold, HP, Positionen, Türme,
Ancients, Wellen, Helden, Boss, Gewinner, ...). Nur Bericht; Testwerte und
Prüfungsanzahl unverändert.
- Diagnose: FloatProbe (Kern-Arithmetik gegen Godot-Bits und Auswertungsart der
Laufzeit), DivergenceTrace und tools/port/trace_diff.py (erster abweichender
Schritt), CoreBenchmark für .NET und Editor, CoreBatch als -executeMethod-Einstieg.
- .NET-Harness baut nach tools/out/, weil Unity Temp/ beim Beenden löscht.
- .gitignore ignoriert nur noch die csproj/sln im Projektwurzelverzeichnis;
die Projektdateien des .NET-Harness fehlten deshalb in U1 und kommen jetzt dazu.
Stand dieses Commits im Unity-Editor (Mono): 4 von 5 Suiten grün; golden
152/157, weil Mono float32-Zwischenwerte doppelt genau rechnet (Teil 2/2).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>