5.4 KiB
5.4 KiB
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) |
| 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) |
| Offen | Windows-/Linux-Player (Build-Module); Leistungsspitzen (Batch-Import inzwischen erledigt, siehe unten) |
| Commits | luneraria/u2: U2A 49cb4af, U2B 8a72cb1, U2C 3871b3e, U2D 323cc3a |
Batch-Import aller Modelle (nach U2D)
| Punkt | Ergebnis |
|---|---|
| Tests | Blender-Pipeline 1.616/1.616 und Unity-Verifier 1.247/1.247 (86 Modelle); zwei Exportläufe byteidentisch. Test Runner EditMode 11/11, PlayMode 2/2 mit allen Modellen |
| Parität | Vertical Function Test mit allen Modellen: Seed 2 DCE95C96556F3A1A (12.690 Schritte), Seed 9 ab Runde 21 7B8E43AEFC0D60C5 (4.195 Schritte), beide gleich dem Kern; Szene bei 30, 60, 120 fps und unbegrenzt gleich |
| Bild | screenshots/u2a-batch/<Gruppe>.png (Kontaktbögen aller Modelle), screenshots/u2a-batch/01-… bis 14-… (Partie mit allen Modellen) |
| Leistung | macOS-Player mit allen Modellen, 116 Einheiten: 158–160 fps (Mid-Lane 205–207). Hauptthread 2,5 ms, Render-Thread 3,2 ms, etwa doppelt so viel wie mit dem Platzhalter. Present-Ausreißer kürzer (p95 18 statt 24 ms). Player 228 MB |
| Befund | Projekt liegt in iCloud Drive; Konfliktkopien im Build-Cache machten den Player unbrauchbar. LunePlayerBuild fängt das ab (U2-WORLD.md) |
| Bekannte Unterschiede | keine Verhaltensunterschiede; starre Figuren ohne Godots prozedurale Gliederbewegung |
| Offen | Draw Calls messen (U5); Windows-/Linux-Player (Build-Module) |
| Commit | luneraria/u2: Batch-Import 3ca38a8 (Modelle direkt in Git) |
U3 bis U5
U3 (G3-HUD portieren) ist der nächste Schritt; U4 und U5 sind noch nicht begonnen.