Befund: Unitys Mono 6.13 rechnet float32-Zwischenwerte doppelt genau (ECMA-335 I.12.1.3). Der erste Editor-Lauf fand 5 von 157 Golden- Abweichungen: Blickrichtung bis 1,6e-3 rad; in mirror_match Runde 7 verliert eine Einheit in Schritt 599 ihr Ziel, und der Kampf dauert 4,8 s länger. Eine Toleranz ist dafür nicht begründbar. Maßnahme: Vec2 rundet jeden Zwischenwert explizit auf float32 (conv.r4). Keine Regeländerung, R1 unverändert. .NET 8: 402/402, Golden 0, Trace byteidentisch zu vorher. Unity-Editor (Release und Debug): 402/402, Golden bitgleich in allen Bereichen, Float-Probe 4000/4000. - CoreIntegrationTests: keine Engine-Referenzen im Kern, Float-Arithmetik wie Godot. - docs/port/U1.5-UNITY.md: Versionen, Lizenz, Pakete, Tests, Golden je Bereich, Float-Befund, Editor-Benchmark, fehlende Build-Module. - docs/port/KNOWN-BEHAVIOR-DIFFERENCES.md mit "Legacy defects retained for parity" (R1) und F1. - Protokolle unter docs/port/logs/u1_5/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.8 KiB
2.8 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 bis U5
U2 ist der nächste Schritt; U3 bis U5 sind noch nicht begonnen.