Befund aus dem Spieltest des U3-Nachtrags: Nichts legte LuneNetPlay in die
Szene. Das Spiel begann direkt in einer Partie, der Startbildschirm aus U4
war unerreichbar, und der Verlassen-Dialog beendete das Spiel statt zum
Hauptmenü zu führen.
- LuneWorldBuilder legt LuneNetPlay auf das Match-Objekt; Szene neu gebaut.
- Das Menü bekommt ein eigenes UIDocument über dem HUD. Vorher hing es an
keinem Panel, und das HUD hätte es beim ersten Partiestart geleert.
- Rückkehr über „Menü“ → „Zum Menü“: HUD und Aufstellungsflächen weg,
Sitzung beendet, leere Karte. Die Kamera ruht hinter dem Menü und beginnt
jede Partie ungedreht. Die Bund-Wahl ist markiert, die Knopfreihe passt
in die Tafel.
- Tests und Benchmark ohne Startbildschirm (LuneMatchDriver.DirectStart,
-luneBenchmark); Bot-Partien und Fingerabdrücke unverändert.
- Neu: LuneSmoke (-luneSmoke <Ordner>), Selbsttest eines Players nach
lune_smoke.gd. StartScreenTests führt ihn im Editor aus.
- Tests: EditMode 29/29, PlayMode 14/14 (StartScreenTests 26/26), Verify
718/0, Fingerabdrücke DCE95C96556F3A1A und 7B8E43AEFC0D60C5 unverändert.
macOS-Player: Selbsttest 26/26, Bilder in
docs/port/screenshots/u4/startbildschirm/. Ein zusammenhängender
PlayMode-Lauf auf dem Endstand und ein Player-Benchmark stehen aus, weil
der Mac zugeklappt schlief (siehe U4-NETWORK.md).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der M4-Umfang ist als Protokoll 4 portiert, serverautoritativ. Der Host
besitzt LuneMatch und rechnet jeden Kampf; Clients senden nur Absichten
und zeigen den Kampf aus Host-Momentaufnahmen.
- LuneSession (Core/Net): Rollen offline/Host/Gast, sechs Sitze, Lobby,
Hallo mit Protokollprüfung und Namenskürzung, Beitritt und Wieder-
einstieg über den Anzeigenamen, private Planung mit Spoof-Schutz,
Bereit ist verbindlich, Bots planen einmal je Runde, Disconnect gibt
den Platz an einen Bot (nie Kernverlust), Übernahme verwirft den
unbestätigten Bot-Entwurf, Revanche hält die Plätze, Hostverlust
meldet und führt ins Menü zurück.
- Kampfsynchronisation: Beginn mit Einheitenätzen und Gebäude-HP, alle
0,05 s neue Einheiten und ein Frame (13 Werte je Einheit), späte
Frames über die Serial verworfen, Gast interpoliert (frame_alpha).
- Transport: LuneLoopback (In-Prozess) für die Tests, LuneTcp + LuneWire
(Cursor-Codec) für Echtverbindungen statt ENet; ein Socket je Gast.
- Oberfläche: LuneMainMenu (Offline/Hosten/Beitreten, Bund, Lane, Name,
Adresse, Port) als Startbildschirm, LuneNetPlay als Schale wie
lune_main.gd. LuneGame leitet Befehle, Rückgängig und Bereit im
Netzspiel über die Sitzung; Tempo und Pause bestimmt der Host.
- Tests: NetSuite 43/43 (Port von test_lune_net.gd), NetRoundsSuite
12/12 (Port von net_rounds.py: 5 Runden, Prüfsummen gleich, Gast
rechnet 0 Schritte, Drop und Wiedereinstieg auf denselben Sitz),
LuneWireTests Round-trip. EditMode 29/29, PlayMode 13/13, Kerntests
457/457. Fingerabdrücke der Bot-Partien unverändert.
- Dokumentation: U4-NETWORK (Abnahme, Grenzen), PORT-QA (U4), PORT-STATUS
(U4 fertig, U5 nächster Schritt), KNOWN-BEHAVIOR-DIFFERENCES.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Das G3-HUD ist abgenommen; der Meilenstein U3 ist damit fertig.
- Prüfung (Port von verify_g3, Teile A–H plus I): 718 Prüfungen ohne
Fehler. Teil I prüft die Feld-Darstellung um das HUD (U3-Zugabe aus
dem Motivvergleich): Aufstellungsflächen, Grotteneingang, ruhender
Boss, Namensschilder, Eigentümer-Ring, Ancient-Balken.
- Feld um das HUD: Namensschilder für Helden (mit Stufe), Angriffs-
champions und den eingesetzten Boss („für Blau“), Eigentümer-Ring,
Ancient-Balken bei Schaden, ruhende Schlundkrone auf dem Podest,
eigener Grotteneingang, Aufstellungsflächen als eigene Objekte.
- Schriften korrigiert: Die Referenz deklariert Cantarell 560/700–760
und Cinzel 700, wendet die Gewichte aber nie an (variation_opentype
mit dem String-Schlüssel „wght“ wird von Godot ignoriert). G3 zeigt
Regular 400, der Port ebenso — Cinzel-Regular statt Bold, keine
Kontur zur Aufdickung. Laufweite aus spacing_glyph umgerechnet;
dunkler Saum als Schatten statt TextCore-Kontur.
- Werkzeuge: HudViewsTests (14 G3-Motive), HudPlaytest (Spieltest über
die echte Oberfläche per Befehlsdateien), ui_ms_per_frame im
LuneBenchmark. Layout folgt den echten Panelhöhen, Kamera startet wie
Godot _ready auf der eigenen Lane.
- Tests: EditMode 23/23, PlayMode 13/13, Kerntests 402/402, Verify
718/0. Fingerabdrücke der Bot-Partien unverändert (DCE95C96556F3A1A,
7B8E43AEFC0D60C5).
- Bilder: 14 Motive bei 1920×1080, Auflösungen 1152×720 bis 2560×1440,
Prüf-Schlüsselbilder, Spieltest-Screenshots.
- Leistung (macOS-Player mit HUD, 116 Einheiten): 169 fps Übersicht,
218 fps Mid nah; HUD-Skripte 0,090 bzw. 0,078 ms je Bild.
- Dokumentation: U3-UI (U3D, Schriftbefund), PORT-QA (U3), PORT-STATUS
(U3 fertig, U4 nächster Schritt), KNOWN-BEHAVIOR-DIFFERENCES.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Beginn des Ports des G3-HUD (Referenz luneraria/g3, 1b540f2).
- Entscheidung UI Toolkit statt uGUI nach kurzer Bewertung und einer Probe:
Panel rendert im Batchmodus in eine 1920x1080-Textur (Skalierung wie Godot
canvas_items/expand, 1600x960), gefaste Verlaufsplatten, alle 50 Symbole,
Schriften aus den variablen Fonts der Referenz.
- Sichtmodell portiert (LuneHudModel, LuneLaneThreat, LuneStats) mit den
Privatsphäre-Regeln der Referenz: Gold, Entwurf, Rückgängig und neue
Buchungen nur für den eigenen Sitz; Lanes, Gebäude, Boss und Wellen aus
öffentlichem Zustand.
- Menschlicher Sitz in LuneMatchRunner/LuneMatchDriver: Bots planen die
übrigen fünf Sitze, die Planung wartet auf Bereit; Tempo 1x/2x/4x und Pause
nur im Kampf. Bot-Partien unverändert.
- Theme-Grundlagen: Farben und Zahlenformate, Platten (forged_style.gd),
Vektorsymbole (lune_glyphs.gd) mit Painter2D, statische SDF-Atlanten aus
den benannten Instanzen von Cantarell und Cinzel (OFL).
- Tests: EditMode 23/23 (12 neue: gleiches öffentliches Bild für alle Sitze,
fremde Entwürfe privat, private Boss-Lane-Wahl, Lane-Bedrohung, Bosszustände,
nächste Welle, Bereit-Sperre, Formate, menschlicher Sitz); PlayMode 3/3,
Fingerabdrücke der Bot-Partien unverändert (DCE95C96556F3A1A, 7B8E43AEFC0D60C5).
- Dokumentation: U3-UI (Bewertung, U3A), U5-VISUAL (Vorgaben des
Projektinhabers: stilisierter Realismus für die ganze Welt, erst in U5).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fester Simulationstakt und Ansichten, die nur lesen; Nachweis, dass die Partie
bei jeder Bildrate dieselbe ist.
- LuneClock: Akkumulator, ganze Schritte zu 0,05 s, Alpha zum Interpolieren.
- LuneMatchRunner: Host-Ablauf einer Bot-Partie (Planung über die
Befehlsschnittstelle, Kampf im festen Takt, Abrechnung, nächste Runde);
LuneMatchDriver reicht in Update nur Bildzeit weiter.
- LuneTrace: Fingerabdruck der Partie (jeder Schritt, jede Abrechnung) und der
reine Kernlauf zum Vergleich.
- Ansichten: LuneMatchView, LuneUnitView (interpolierte Position, Blickrichtung,
Clips aus Kampfereignissen, Teamring, Lebensbalken), LuneBuildingView mit
Einsturz und Ruine aus den autoritativen HP, Turmblitze, LuneCameraRig wie
lune_camera.gd, vorläufige Debug-Anzeige (kein HUD; U3 portiert das G3-HUD).
- Einheitenbibliothek: Kohlenbeißer aus 131 Teilen zu einem Mesh, Animator-
Controller mit den Blender-Clips, Ring- und Balkenmeshes, Markermaterialien.
- Tests: EditMode (30/60/120 fps, unbegrenzt, Ruckler, 8x Tempo; Seed 2 und
Seed 9 ab Runde 21) und PlayMode in der Szene bei echten Bildraten 30, 60,
120 und unbegrenzt: überall derselbe Fingerabdruck wie der Kern.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>