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>
50 lines
4.4 KiB
Markdown
50 lines
4.4 KiB
Markdown
# 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-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](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 | [U2-WORLD.md](U2-WORLD.md) |
|
||
| U3 · G3-HUD portieren | nächster Schritt | [U3-UI.md](U3-UI.md) |
|
||
| U4 · Netzwerk | nicht begonnen; M4-Umfang ist erfasst | [U4-NETWORK.md](U4-NETWORK.md) |
|
||
| U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) | nicht begonnen | [U5-VISUAL.md](U5-VISUAL.md) |
|
||
|
||
QA je Meilenstein: [PORT-QA.md](PORT-QA.md).
|
||
|
||
Bekannte Verhaltensunterschiede, auch die bewusst übernommenen Referenzfehler: [KNOWN-BEHAVIOR-DIFFERENCES.md](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.
|
||
- **Batch-Import der übrigen Assets** (58 Phase-4-Modelle, 5 Figuren, 7 Völker) ist nach dem Vertical Function Test jetzt an der Reihe.
|
||
|
||
## 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.
|
||
|
||
## 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), `tools/godot-golden/world_export.gd` (Weltbake).
|
||
- `tools/godot-golden/run_godot.sh` (Godot-Referenz).
|
||
- `tools/dotnet/Luneraria.Core.Bench` und `CoreBatch.Benchmark` (Leistung).
|