champions-of-luneraria/docs/port/PORT-STATUS.md
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

5.2 KiB
Raw Blame History

Port-Status · Champions of Luneraria in Unity

Stand: 1. Oktober 2026.

Referenz ist der Godot-Stand luneraria/g3 (1b540f2) in ../saumwacht-godot; er wird nicht mehr verändert. Engine: Unity 6.3 LTS (6000.3.20f1), Renderer URP. HDRP ist ausgeschlossen, bis ein Vergleich mit einer echten Szene etwas anderes nahelegt.

Zielplattformen sind Fedora 44 und Windows 11; macOS ist die Entwicklungsplattform.

Meilenstein Zustand Nachweis
U1 · C#-Simulation fertig (Referenzmeilenstein, luneraria/u1 = 4d6ed17): 402/402 Prüfungen, Golden-Parität mit Godot U1-RULES.md
U1.5 · Unity-Integrationsprüfung fertig: Kern im Unity-Editor 402/402 (Release und Debug), Golden bitgleich nach expliziter float32-Rundung in Vec2, Editor-Benchmark U1.5-UNITY.md
U2 · Unity-Spielwelt fertig: U2A Blender→FBX-Pipeline (9 Assets geprüft), U2B G1-Karte mit Materialsystem, U2C fester Takt und Ansichten (bildratenunabhängig nachgewiesen), U2D vollständige Bot-Partien sichtbar und gleich dem Kern; danach Batch-Import aller 86 Modelle, Einheiten mit eigenen Modellen U2-WORLD.md
U3 · G3-HUD portieren nächster Schritt U3-UI.md
U4 · Netzwerk nicht begonnen; M4-Umfang ist erfasst U4-NETWORK.md
U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) nicht begonnen U5-VISUAL.md

QA je Meilenstein: PORT-QA.md.

Bekannte Verhaltensunterschiede, auch die bewusst übernommenen Referenzfehler: KNOWN-BEHAVIOR-DIFFERENCES.md.

Offene Voraussetzungen

  • Build-Module für die Zielplattformen fehlen: Windows Build Support (Mono) und Linux Build Support (Mono), optional Linux IL2CPP und Linux Dedicated Server. Installation nur nach Freigabe (Details in U1.5-UNITY.md).
  • Kerntests und Player auf Windows 11 und Fedora 44 stehen deshalb aus; gemessen ist bisher der macOS-Player.

Entscheidungen

  • Regelkern ohne Unity (Luneraria.Core, noEngineReferences). Unity wird Adapter und Präsentation.
  • Verhaltensgleichheit statt Bitgleichheit. Verglichen wird mit dokumentierten Toleranzen; gemessen wurde auf dem Mac trotzdem Abweichung 0, in .NET 8 und im Unity-Editor.
  • Explizite float32-Rundung in Vec2 (U1.5). Unitys Mono rechnet float32-Zwischenwerte doppelt genau. Das änderte in einem Szenario eine Zielentscheidung, deshalb ist eine Toleranz hier nicht begründbar. Die Casts erzwingen Godots float32-Semantik auf jeder Laufzeit; Regeln und .NET-Ergebnisse bleiben unverändert.
  • Tabellen einmal aus Godot erzeugt (tools/port/gen_content.py); danach ist ContentData.cs die gepflegte Quelle.
  • Referenzfehler R1 im Bot-Gedächtnis ist bewusst übernommen (Parität) und für eine spätere Bot-Phase vorgemerkt.
  • Geplante Helden (Lucy, Ghaliga, Siegfried, Feena) stehen im Datenmodell, sind aber inaktiv, bis eine Heldenphase ihre Regeln umsetzt.
  • Assets: Blender-Quellen und Generatoren sind die Quelle. Ein zentraler, reproduzierbarer Blender-Export erzeugt FBX für Unity; GLB nur, wo keine bessere Quelle existiert (U2A).
  • Prozedurale Welt gebacken (U2B): Gelände und Vegetation der G1-Karte hängen an Godots Rauschen und Zufallsgenerator; ein Godot-Werkzeug backt die Welt aus dem Referenzgenerator, Unity baut daraus die Szene. U5 bekommt eine neue Weltquelle.
  • Koordinaten: Unity = (−x, Höhe, y) der Kartenpunkte; FBX-Pipeline, Welt und Kamera nutzen dieselbe Umrechnung, das Bild entspricht Godots.
  • Host-Schleife (U2C): fester Takt mit Akkumulator; die Bildrate bestimmt nur die Zahl der Schritte je Bild. Nachweis über Fingerabdrücke der Partie.
  • Modelle direkt in Git (1. Oktober 2026): Auch die Modelle des Batch-Imports liegen wie die U2A-Modelle im Repository, ohne Git LFS. Keine Datei ist größer als 40 MB; das Repository wächst auf etwa 240 MB.
  • Projektort außerhalb von iCloud Drive (1. Oktober 2026): Der Arbeitsordner TowerDefense zieht von ~/Documents/Projekte nach ~/Developer. iCloud Drive synchronisierte ~/Documents und legte Konfliktkopien an, die einen Player unbrauchbar machten (U2-WORLD.md, Batch-Import). Der Schutz in LunePlayerBuild bleibt.

Arbeitsweise

  • Ein Zweig je Meilenstein: luneraria/u1, luneraria/u1.5, luneraria/u2, … Nach jedem Meilenstein kommen Tests, Bild, Leistung, bekannte Unterschiede und ein Commit.
  • Werkzeuge:
    • tools/run_core_tests.sh (Kern mit .NET).
    • Unity Test Runner: EditMode (Kern, Integration, Bildraten-Logik) und PlayMode (Szene bei echten Bildraten, Vertical Function Test).
    • CoreBatch, LuneAssetVerifier, LuneWorldBuilder, LuneWorldCapture, LunePlayerBuild im Batchmodus.
    • tools/blender/export_fbx.sh (Assets) mit dem Manifest aus tools/blender/make_manifest.py, tools/godot-golden/world_export.gd (Weltbake).
    • LUNE_EVIDENCE=<Ordner> leitet die Nachweise der PlayMode-Tests nach docs/port/logs/<Ordner> und docs/port/screenshots/<Ordner> um; ohne die Variable schreiben sie in die Ordner ihres Meilensteins.
    • tools/godot-golden/run_godot.sh (Godot-Referenz).
    • tools/dotnet/Luneraria.Core.Bench und CoreBatch.Benchmark (Leistung).