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>
47 lines
4 KiB
Markdown
47 lines
4 KiB
Markdown
# Port-QA
|
||
|
||
Je Meilenstein: Tests, Bild, Leistung, bekannte Unterschiede, Commit.
|
||
|
||
## U1 · C#-Simulation
|
||
|
||
| Punkt | Ergebnis |
|
||
| --- | --- |
|
||
| Tests | `content` 75/75, `core` 91/91, `m2` 73/73, `golden` 157/157, `determinism` 6/6 = **402/402**; dreimal in getrennten Prozessen; Protokoll `logs/u1/core-tests.json` |
|
||
| Golden-Parität | 19 Szenarien, 120 Snapshots, 51.221 Werte; größte Abweichung 0 in allen Kategorien (Toleranzen siehe U1-RULES.md) |
|
||
| Bild | `screenshots/u1/replay-start_three_lanes-t10.png`, `replay-boss_cycle-marching.png`, `replay-grotto_contested-t15.png`: Godot-Positionen (Punkte) und C#-Positionen (Ringe) decken sich (31/31, 35/35, 15/15) |
|
||
| Leistung (Mac M5) | Simulationsschritt bei 120 Einheiten: Godot 1,587 ms, C#/.NET 8 0,259 ms; Bot-Partien pro Runde: 648 ms zu 36 ms (`logs/u1/sim-bench-*.json`) |
|
||
| Bekannte Unterschiede | technische Repräsentation (Klassen statt Dictionaries, stabile Sortierung, 32-Bit-int, kein ungenutzter Zufallsgenerator); Referenzfehler R1 bewusst übernommen |
|
||
| Offen | erledigt in U1.5: Lauf im Unity-Editor, Mono-Leistung. Weiter offen: Kerntests auf Windows 11 und Fedora 44 |
|
||
| Commit | Zweig `luneraria/u1` (`4d6ed17`) |
|
||
|
||
Hinweis: Die Projektdateien des .NET-Harness (`tools/dotnet/*/*.csproj`) fehlten im U1-Commit, weil `.gitignore` alle `*.csproj` ausschloss. Sie sind seit U1.5 eingecheckt.
|
||
|
||
## U1.5 · Unity-Integrationsprüfung
|
||
|
||
| Punkt | Ergebnis |
|
||
| --- | --- |
|
||
| Umgebung | Unity 6000.3.20f1 (6.3 LTS), Personal-Lizenz, URP 17.3.0, Editor-Mono 6.13.0, Standalone-Backend Mono, API-Level .NET Standard 2.1 |
|
||
| Tests | Unity Test Runner (EditMode): 402/402 in Release und Debug, dazu 2 Integrationstests; .NET 8 weiter 402/402. Protokolle `logs/u1_5/editmode-results-*.xml`, `core-tests-*.json` |
|
||
| Golden in Unity | 51.221 Werte, Abweichung 0 in allen Kategorien und Bereichen (Gold, HP, Positionen, Türme, Ancients, Wellen, Helden, Boss, Gewinner, …) |
|
||
| Float-Befund | Mono rechnet float32-Zwischenwerte doppelt genau. Das beeinflusste eine Zielentscheidung (`mirror_match` Runde 7: +4,8 s Kampfdauer). Behoben durch explizite Rundung in `Vec2`; .NET-Ergebnisse byteidentisch zu vorher |
|
||
| Bild | keines; U1.5 hat keine sichtbare Szene. Nachweis sind der Schritt-Trace (`tools/port/trace_diff.py`) und die Float-Probe (`logs/u1_5/float-probe-*.json`) |
|
||
| Leistung (Editor-Benchmark) | Schritt mit 120 Einheiten: Editor Release 0,51 ms, Debug 1,00 ms; .NET 8 0,24–0,26 ms; Godot 1,60 ms (`logs/u1_5/sim-bench-*.json`) |
|
||
| Bekannte Unterschiede | R1 bewusst übernommen; F1 (Mono-Float) behoben ([KNOWN-BEHAVIOR-DIFFERENCES.md](KNOWN-BEHAVIOR-DIFFERENCES.md)) |
|
||
| Offen | IL2CPP- und Player-Läufe unter Windows 11 und Fedora 44 (Build-Module fehlen, Installation nach Freigabe) |
|
||
| Commit | Zweig `luneraria/u1.5` |
|
||
|
||
## U2 · Unity-Spielwelt
|
||
|
||
| Punkt | Ergebnis |
|
||
| --- | --- |
|
||
| Tests | Blender-Pipeline 176/176 und Unity-Verifier 128/128 (9 Assets). Test Runner EditMode 11/11: Kern 402 Prüfungen, 2 Integrationstests, 4 Bildratentests. PlayMode 2/2: Szene bei echten Bildraten, Vertical Function Test |
|
||
| Parität | Bot-Partie Seed 2 (9 Runden) und Seed 9 ab Runde 21 in der sichtbaren Szene mit demselben Fingerabdruck wie der reine Kern; ebenso bei 30, 60, 120 fps, unbegrenzt, mit Rucklern und bei 8× Tempo |
|
||
| Bild | `screenshots/u2a/` (Assets), `u2b/` (Karte mit Godot-Kameraeinstellungen; Vergleich mit `g2/nachher`), `u2d/` (14 Schlüsselmomente der Partien) |
|
||
| Leistung | macOS-Player (M5, 1080p, VSync aus) mit 116 Einheiten: 161–199 fps; Hauptthread 1,3 ms, Render-Thread 1,3 ms, Simulation unter 0,1 ms. Ausreißer beim Present (p95 18–26 ms) offen für U5 |
|
||
| Bekannte Unterschiede | keine Verhaltensunterschiede. Darstellung vereinfacht: Platzhaltermodelle für Einheiten, Materialien, Effekte, Debug-Anzeige statt HUD ([U2-WORLD.md](U2-WORLD.md)) |
|
||
| Offen | Batch-Import der übrigen Assets; Windows-/Linux-Player (Build-Module); Leistungsspitzen |
|
||
| Commits | `luneraria/u2`: U2A `49cb4af`, U2B `8a72cb1`, U2C, U2D |
|
||
|
||
## U3 bis U5
|
||
|
||
U3 (G3-HUD portieren) ist der nächste Schritt; U4 und U5 sind noch nicht begonnen.
|