champions-of-luneraria/docs/port/PORT-STATUS.md
Martin Stickelbroeck 4d6ed17dca U1: Regelkern in C#, verhaltensgleich zur Godot-Referenz
Vollständiger, engineunabhängiger Regelkern (Luneraria.Core, ohne
UnityEngine): Partie mit sechs Plätzen und zwei Teams, private Planung mit
atomarer Übernahme, Gold, Käufe, Aufwertungen, Formation, drei Lanes mit
zwei Laneturmen und zwei Basistürmen je Team, Ancients, unbegrenzte Wellen,
Helden mit Stufen, Items und Talenten, Angriffschampions, Bossgrotte mit
Anspruch, Entsendung, Kopfgeld und dreirundiger Sperre, Bots und
Siegbedingung (nur Ancient-Fall). Serverautoritative Befehlsschnittstelle.

- Deterministisch: fester Takt, geordnete Maps, fortlaufende IDs, kein
  Zufall, keine Uhr, keine Threads
- Tabellen einmal aus Godot erzeugt (tools/port/gen_content.py)
- Golden-Referenzen aus Godot (tools/godot-golden): 19 Szenarien,
  120 Snapshots, 51.221 Werte, Abweichung 0 (Toleranzen dokumentiert)
- Tests: content 75, core 91, m2 73, golden 157, determinism 6 = 402/402
- Leistung (M5): Simulationsschritt 0,259 ms statt 1,587 ms in GDScript
- Referenzfehler R1 im Bot-Gedächtnis bewusst übernommen und dokumentiert
- Geplante Helden (Lucy, Ghaliga, Siegfried, Feena) im Datenmodell, inaktiv
- Doku unter docs/port (U1-RULES, PORT-STATUS, PORT-QA, U2 bis U5)

Unity-Editor-Lauf offen: Die Unity-Lizenz ist noch nicht aktiviert; gebaut
und getestet mit dem .NET 8 SDK auf Unitys Sprachstand (C# 9, .NET
Standard 2.1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:31:18 +02:00

2.5 KiB

Port-Status · Champions of Luneraria in Unity

Stand: 30. September 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 außerhalb von Unity: 402/402 Prüfungen, Golden-Parität mit Godot; Unity-Editor-Lauf offen (Lizenz) U1-RULES.md
U2 · Unity-Spielwelt nicht begonnen; Voraussetzung: U1 grün und Unity-Lizenz aktiv U2-WORLD.md
U3 · G3-HUD portieren nicht begonnen 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.

Blocker

  • Unity-Lizenz: Unity startet im Batch-Modus, meldet aber „No valid Unity Editor license found“. Nötig ist eine Anmeldung im Unity Hub mit aktivierter Personal-Lizenz; das kann nur der Projektinhaber erledigen.
  • Bis dahin gibt es keine ProjectSettings/ und keine .meta-Dateien; Unity erzeugt sie beim ersten Öffnen.

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.
  • 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 (U2).

Arbeitsweise

  • Ein Zweig je Meilenstein: luneraria/u1, luneraria/u2, … Nach jedem Meilenstein kommen Tests, Bild, Leistung, bekannte Unterschiede und ein Commit.
  • Werkzeuge:
    • tools/run_core_tests.sh (Kern).
    • tools/godot-golden/run_godot.sh (Godot-Referenz).
    • tools/dotnet/Luneraria.Core.Bench (Leistung).