Commit graph

23 commits

Author SHA1 Message Date
Martin Stickelbroeck
2e05cbe08f Merge luneraria/u5.5 in H1: Sylvara und das vollständige Glutpakt
Konflikte nur in erzeugten Dateien (Szene, Material- und Figurenbibliothek,
Verifier-Protokoll), im Export-Manifest (Sylvara-Eintrag ergänzt) und im
Port-Status. Szene neu gebaut; EditMode 30/30, PlayMode 15/15, Verify 718/0,
Fingerabdruck DCE95C96556F3A1A unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:03:14 +02:00
Martin Stickelbroeck
dd78c8dbfe U5.5 Feinschliff: aufrechte Haltung, kleinere Bastion und Balliste
calm in figure.json dämpft Kopf, Hals, Wirbelsäule und Hüfte in Leerlauf
und Gang für die sechs Figuren ohne echten Kopf (Gang 34 -> 11 Grad
Neigung beim Herdhüter); Basaltbastion skaliert 0,84, Glasballiste auf
1,9 m Länge. Tests grün, Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:43:56 +02:00
Martin Stickelbroeck
9e253f4a19 U5.5 Basaltbastion: zehnte Meshy-Figur (g04), Glutpakt vollständig
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>
2026-10-10 18:07:02 +02:00
Martin Stickelbroeck
805f5754c9 H1 Sylvara: Figur, Skin-System, Oberfläche, Nachweise
Meshy-Figur Sylvara (20.709 Dreiecke, Lane-Fassung 4.999) mit zwei Sicheln
als eigene Modelle, Clips leap/ultimate, 116 Credits. Skin-System: hero_skin
als kosmetische Planungswahl, Blutmond als Varianten-Skin (skin_variant.py,
AI_*_Blutmond, Dress mit Skin). Heldenfenster mit Reiter Ultimate & Skin,
Befehlsplatz der Heldenkarte, Mondring. Ultimate zündet nicht im Sprungschritt.
Kern 500/500, EditMode 30/30, PlayMode 15/15, Verify 718/0, Selbsttest 30/30,
Fingerabdrücke unverändert; Balance 50 % wie Ringborke/Funkenlanze; Leistung
gleich der Funkenlanze-Heldin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:06:58 +02:00
Martin Stickelbroeck
02c8839285 U5.5 Sonnenesse: neunte Meshy-Figur (g10)
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>
2026-10-10 17:18:14 +02:00
Martin Stickelbroeck
60992f1091 H1A Sylvara: Kernregeln, Ultimate-Auslöser, Netz, Bot-Profil, Prüfsuite
Sylvara (held_sylvara) als vierter Held nach der Referenz: Mondsprung,
Sichelwurf, Mondsicheltanz mit in der Planung gewählter Auslöseregel,
Mondschleier-Schild, Talente Mondsilber/Sichelsturm und Neumond/Vollmond.
Befehl ultimate_rule, HeroState.Ultimate und UnitDef.UltimateRule im Netz,
Sprung-/Ultimate-Zähler in den Flag-Bits des Kampf-Frames. Bot-Profil
assassine außerhalb der Seed-Rotation. Golden 0 Abweichungen, h1 35/35.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 17:12:02 +02:00
Martin Stickelbroeck
024937ce4a U5.5 Herdhüter: achte Meshy-Figur (g09)
Herdofen-Golem mit fester Feuerschale an der Hüfte, Zauberbewegungen
(Feuerzauber, aufgeladener Zauber), Farbangleich nur für das Gold,
68 Credits, Lane-Fassung inklusive. Stresstest 36 Herdhüter: Mid
163,5 -> 156,8 fps, Karte 123,4 -> 131,3. Tests grün, Fingerabdrücke
unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:46:01 +02:00
Martin Stickelbroeck
eb8a537d54 U5.5 Kraterrufer: siebte Meshy-Figur (g08)
Kraterschalen-Golem als Aufwertung des Aschenwerfers, dessen Konzept als
Stilvorlage und Figurendatei, 68 Credits, Lane-Fassung inklusive.
Stresstest 36 Kraterrufer: Mid 171,3 -> 155,1 fps, Karte 123,5 -> 136,2.
Tests grün, Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:05:27 +02:00
Martin Stickelbroeck
91ea297a1c U5.5 Aschenwerfer: sechste Meshy-Figur (g07)
Mörserkessel-Golem über das Auto-Rigging, Würfe als Angriffe (über die
Schulter, geduckter Schwungwurf), Lane-Fassung inklusive, 68 Credits.
Stresstest 36 Aschenwerfer: Mid 165,0 -> 147,1 fps, Karte 124,1 -> 126,8.
Tests grün, Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:11:03 +02:00
Martin Stickelbroeck
aa77d0e7fb U5.5 Glasballiste: fünfte Meshy-Figur (g06) als Maschine
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>
2026-10-10 13:46:56 +02:00
Martin Stickelbroeck
eddf49dc88 U5.5 Funkenlanze: vierte Meshy-Figur (g05 und Heldin)
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>
2026-10-10 13:19:24 +02:00
Martin Stickelbroeck
4e2b6bc637 U5.5 Schlackenwacht: dritte Meshy-Figur (g03)
Schildplatten-Golem aus Icon, Phase-4-Bild und Kohlenbeißer-Konzept als
Stilvorlage, 68 Credits, Lane-Fassung inklusive. FigureViewsTests erkennt
Grund- und Aufwertungstruppen selbst. Stresstest 35 Schlackenwachten:
Mid 161,9 -> 148,5 fps, Karte unverändert 124,5. Tests grün,
Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:29:30 +02:00
Martin Stickelbroeck
714d0c697c U5.5 Schlackenklaue: zweite Meshy-Figur (g02)
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>
2026-10-09 16:44:03 +02:00
Martin Stickelbroeck
f0d1e9388c U5.5 Lane-Fassung: LOD für den Meshy-Kohlenbeißer
Lane-Kopie mit 4.998 statt 20.714 Dreiecken aus dem Generator (Nähte
verschweißt, Collapse, Skin-Gewichte bleiben), LODGroup aus den Namen,
Wechsel unter rund 10 % Bildhöhe; Porträts erzwingen die volle Fassung.
Stresstest 35 Kohlenbeißer: Mid 109,8 -> 120,2 fps, Karte 93,9 -> 103,8
(starr 133,3 / 106,4). Tests grün, Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:17:28 +02:00
Martin Stickelbroeck
c386206876 U5.5-pilot Figuren: Meshy-Kohlenbeißer, Lava-Glut, GPU-Skinning
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>
2026-10-09 14:14:59 +02:00
Martin Stickelbroeck
07fa4572e0 U5.3: Gebäude, Boss und Ringborke auf PBR; Bildfehler aus U5 behoben
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>
2026-10-07 19:34:02 +02:00
Martin Stickelbroeck
2c1686b837 U5 Vertical Slice: PBR-Sätze, Surface-Shader, Mid-Lane, Kampf-VFX
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>
2026-10-02 17:10:10 +02:00
Martin Stickelbroeck
4744a47114 U2 Exporter: pfadneutraler FBX-Kopf (Version 11)
Blenders FBX-Schreiber trug den absoluten Pfad der geöffneten .blend-Datei
in den Dateikopf ein (ApplicationNativeFile, z. B. /Users/martin/Documents/…).
Die Bytes hingen damit vom Ort des Checkouts ab; nach dem Umzug nach
~/Developer galt die byteidentische Reproduzierbarkeit für die eingecheckten
Dateien nicht mehr.

Ab Version 11 steht dort der relative Quellpfad aus dem Manifest (Generatoren:
leer). Geprüft an der Grenzwacht: zwei Läufe byteidentisch, kein absoluter Pfad,
Prüfprotokoll gleich bis auf Version und Größe. Die eingecheckten FBX-Dateien
bleiben Version 10 bis zum nächsten Gesamtexport (spätestens U5); Inhalt
unverändert. Dokumentiert in U2-WORLD.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:57:13 +02:00
Martin Stickelbroeck
3ca38a8443 U2 Batch Asset Import
Alle 86 Modelle der Godot-Referenz laufen durch die Blender→FBX-Pipeline
(nach bestandenem Vertical Function Test); jede Einheit zeigt ihr eigenes
Modell.

- Exportmanifest aus den Godot-Manifesten (tools/blender/make_manifest.py):
  Units, Enemies, Props, Characters, Peoples, Buildings, Environment; die
  drei Vergleichs-GLBs als Aliase. Neu in der Pipeline: Tangenten berechnet
  Unity mit MikkTSpace, Generatoren laufen in einer temporären Kopie, die
  Grüne Kluft wird wie das GLB zusammengefasst, Texturen kommen mit.
  1.616 Blender- und 1.247 Unity-Prüfungen grün, zwei Exportläufe
  byteidentisch; Kontaktbögen je Gruppe.
- Einheitenbibliothek nach Godots AssetLibrary: 70 Einträge der
  Einheitengruppen, Figuren mit Skelett ersetzen das starre Modell ihrer ID.
  Starre Modelle werden zur Laufzeit je Material zusammengefasst; Controller
  werden an Ort und Stelle aktualisiert.
- Tests mit allen Modellen: EditMode 11/11, PlayMode 2/2. Vertical Function
  Test Seed 2 DCE95C96556F3A1A und Seed 9 ab Runde 21 7B8E43AEFC0D60C5,
  beide gleich dem Kern (Nachweise mit LUNE_EVIDENCE=u2a-batch; die Belege
  von U2C und U2D bleiben unverändert).
- macOS-Player mit allen Modellen: 158-160 fps in der Übersicht
  (116 Einheiten), 205-207 fps auf der Mid-Lane; Haupt- und Render-Thread
  etwa doppelt so lang wie mit dem Platzhalter, Present-Ausreißer kürzer.
- Befund iCloud Drive: Konfliktkopien ("Name 2.ext") im Build-Cache ließen
  den Build die Einheitenbibliothek mit altem Feldlayout schreiben; der
  Player meldete sharedassets0.assets als beschädigt. LunePlayerBuild
  entfernt solche Kopien vor dem Build und bricht ab, wenn während des
  Builds neue entstehen. Bereits committete Kopien: Controller-Duplikate und
  World/Generated 2.meta entfernt, drei U2D-Benchmarkläufe als -run1 bis
  -run3 benannt.
- Dokumentation: U2-WORLD (Batch-Import), PORT-STATUS (Entscheidungen:
  Modelle direkt in Git, Projektort außerhalb von iCloud Drive), PORT-QA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 19:10:35 +02:00
Martin Stickelbroeck
8a72cb165a U2B World Geometry
G1-Karte in Unity (Assets/Luneraria/Scenes/G1_Map.unity), reproduzierbar
gebaut aus dem Godot-Weltgenerator (gebacken), den FBX-Modellen aus U2A und der
Karte des C#-Kerns.

- tools/godot-golden/world_export.gd: backt Gelände (Raster, Farben, Lauf- und
  Standhöhen), Lanebeläge, Plattform, Brücke, Randsteine, Basen, Landmarken,
  Vegetation, Adern, Grottentreppen, Aufstellungsbereiche und Licht. Braucht
  einen echten Renderer (HEADLESS=0); prüft auf Headless-Einheitstransformationen.
- LuneWorldBuilder: Meshes (GUID-stabil), Szene, Licht, Himmel, Post-Processing,
  16 Türme, 2 Ancients und die Grotte aus LuneMap mit Teammaterialien.
- Materialsystem: Luneraria/Surface (Gelände, Kluft-Oberflächen, Fluss, Adern,
  Kristall, G2-Werte mit Teamvarianten und Vertex-AO) und Luneraria/Pad;
  LuneMaterialSet.Dress wie Godots dress.
- View-Assembly: LuneSpace (Unity = (-x, h, y)), LuneGround, LuneCameraMath,
  LuneBuildingView (Zustände intakt bis Ruine).
- Vergleichsbilder mit den Kameraeinstellungen der Godot-G2-Aufnahmen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 16:01:25 +02:00
Martin Stickelbroeck
49cb4af407 U2A Blender/FBX Pipeline
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>
2026-09-30 15:41:24 +02:00
Martin Stickelbroeck
44d3bcdee9 U1.5 Unity Core Integration (1/2): Unity-Projekt, Test Runner, Diagnose
- 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>
2026-09-30 15:19:08 +02:00
Martin Stickelbroeck
4d6ed17dca U1: Regelkern in C#, verhaltensgleich zur Godot-Referenz
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>
2026-09-30 14:31:18 +02:00