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>
20 KiB
U3 · G3-HUD portieren
Stand: 1. Oktober 2026.
| Teil | Inhalt | Zustand |
|---|---|---|
| U3A | Entscheidung UI Toolkit, Sichtmodell mit Privatsphäre, menschlicher Sitz, Theme-Grundlagen (Farben, Platten, Symbole, Schriften) | fertig |
| U3B | Komponenten, Porträts, Tooltip, alle HUD-Bereiche, Optionen, Partieende | fertig |
| U3C | Eingabe und Befehle: Tasten, Kamera-Ziele, Auswahl im Feld, Bereit-Sperre, Planungsvorschau | fertig |
| U3D | Prüfung (Teile A–H von verify_g3), Spieltest über die echte Oberfläche, Bilder, Leistung |
fertig |
Funktionale Referenz ist das G3-HUD aus Godot (../saumwacht-godot/docs/luneraria/G3-HUD.md, Commit 1b540f2). Es wird übertragen, nicht neu erfunden.
Zu übertragen
- Ancient-Anzeige, Welle und Phase, Gold.
- Drei Lanes mit Bedrohung und Türmen, Teammitglieder.
- Einheitenkarten, Armee.
- Held mit Stufe, Erfahrung, drei Itemslots und Talenten.
- Angriffschampions, nächste Welle, Bossstatus.
- Minimap, Bereit-Zustand, Tooltips, Ereignisse.
- Datenzugang über ein Sichtmodell mit denselben Privatsphäre-Regeln wie
LuneHudModel.
Die geplanten Helden (PlannedHeroes) mit Command-Menü für Ultimates sind im Layout vorzusehen.
Der Bestand in Godot umfasst rund 5.100 Zeilen:
lune_hud.gd(1.058 Zeilen),lune_hud_model.gd(333),- 22 Komponenten,
- Theme (
lune_ui_theme.gd,forged_style.gd) und Vektorsymbole (lune_glyphs.gd), - Minimap, Porträt-Cache, Optionen,
- die Verdrahtung in
lune_game.gd(Befehle, Tasten, Kamera, Auswahl).
Das Hauptmenü (lune_menu.gd, mit Netzwerk-Host/Join) ist der Startbildschirm des Spiels und gehört nicht zum HUD.
Entscheidung: UI Toolkit
Vor Beginn war eine kurze technische Bewertung gefordert, dann ein System als Hauptlösung. Gewählt ist UI Toolkit; uGUI kommt im HUD nicht vor.
| Kriterium | UI Toolkit | uGUI |
|---|---|---|
| Aufbau wie in Godot (Komponenten im Code, Container) | VisualElement und Flexbox entsprechen Godots Box-Containern; Komponenten sind C#-Klassen |
GameObjects mit RectTransform und Layout-Gruppen; jede Zeile ein Objekt, Layout-Gruppen teuer beim Neuaufbau |
Eigenes Zeichnen (Godot _draw: Platten, 50 Symbole, Balken, Minimap) |
generateVisualContent mit Painter2D (Pfade, Bögen, konkave Flächen) und eigenen Meshes (Verlauf) |
eigene Graphic-Klassen; konkave Flächen müsste man selbst triangulieren |
Skalierung wie Godot (canvas_items, expand, Basis 1600×960) |
PanelSettings: Scale With Screen Size, Expand, 1600×960 ergibt bei 16:9 dieselbe logische Fläche 1706×960 |
CanvasScaler gleichwertig |
| Prüfbarkeit im Batchmodus | Panel rendert in eine RenderTexture beliebiger Größe; Elemente per Name und Pick abfragbar | Canvas über eine Kamera rendern; Abfragen über GameObjects |
| Tooltips, Weltelemente | Laufzeit-Tooltip selbst bauen (Godot hatte ohnehin einen eigenen); Weltbalken sind schon Meshes | eingebaut nur im Editor; Weltraum-Canvas reif |
| Empfehlung in Unity 6 | empfohlenes System für neue Laufzeit-Oberflächen | weiter unterstützt, älterer Ansatz |
Probe vor der Entscheidung (Tests/UI/PlayMode/UiToolkitProbeTests, Bild screenshots/u3/00-ui-toolkit-probe.png):
- Ein Panel rendert im Batchmodus in eine 1920×1080-Textur.
- Die Position stimmt mit Godot überein: 12 logische Pixel ergeben 13,5 Pixel bei 1920×1080.
- Die Platten mit Fasen, Verlauf, Innen- und Kantenlinie entstehen korrekt.
- Alle 50 Symbole zeichnen sich, auch die konkaven (Mondsichel, Turm, Kreuz).
- Die Schriften kommen aus Godots variablen Fonts.
U3A · Grundlagen
Sichtmodell und Privatsphäre
Portiert nach Assets/Luneraria/UI/Model/, Verhalten wie in Godot:
| Datei | Inhalt |
|---|---|
LuneHudModel.cs |
einziger Datenzugang des HUD: Phase, eigener Sitz (Gold, Entwurf, Rückgängig, Buchungen), Gebäude, Ancients, Mitspieler, Lanes, Boss, nächste Welle, öffentlicher Digest |
LuneLaneThreat.cs |
Lane-Bedrohung RUHIG · UMKÄMPFT · UNTER DRUCK · KRITISCH, nur aus öffentlichem Zustand (Turm-HP, Positionen, Ankündigungen) |
LuneStats.cs |
Wertzeilen und Tooltip-Inhalte aus den echten Definitionen (Schaden je Treffer, Tempo, Reichweite, Rüstungsmatrix) |
Die Privatsphäre-Regeln gelten unverändert:
- Gold, Entwurf, Rückgängig und neue Buchungen gibt es nur für den eigenen Sitz.
- Von anderen sieht man Name, Lane, Bereitschaft, Mensch/Bot/offline und den bestätigten Helden.
- Lanes, Gebäude, Boss und Wellen kommen aus öffentlichem Zustand.
Eine Abweichung: Im öffentlichen Digest (Testhilfe) steht beim Boss die öffentliche Claim-Lane. Godot nahm dort auch die private Lane-Wahl des Wählenden auf, sodass der Digest für ihn vom Bild der anderen abweichen konnte.
Menschlicher Sitz
LuneMatchRunnerundLuneMatchDriverhaben einen menschlichen Sitz bekommen (HumanSlot).- Die Bots planen nur die anderen fünf Sitze. Die Planung wartet auf „Bereit“ des Menschen, wie offline in Godot (
lune_game.gd), und nach der Abrechnung beginnt sofort die nächste Planung. - Tempo (1×, 2×, 4×) und Pause wirken nur im Kampf.
- Bot-Partien (
HumanSlot = -1) laufen unverändert. Die Bildraten-Tests prüfen das mit denselben Fingerabdrücken.
Theme, Symbole, Schriften
Theme/LuneUiTheme.cs: alle Farben auslune_ui_theme.gdund dem Saumwacht-Menütheme, Zahlenformate (12.000, Dezimalkomma).Theme/LunePlates.cs: die Platten ausforged_style.gd(Fase, Verlauf, Innenlinie, Kante, Schatten, Fokusring).Theme/LuneGlyphs.cs: alle 50 Symbole auslune_glyphs.gdmitPainter2D.- Schriften: Cantarell und Cinzel als statische SDF-Atlanten (
LuneUiAssetsBuilder,Settings/LuneUi.asset, Lizenz OFL).- Unitys Textsystem hat keine Gewichtsachse. FreeType lädt die benannten Instanzen der variablen Fonts über den Face-Index (Instanz ≪ 16).
- In Cantarell fehlt „★“ (Godot nahm eine Ersatzschrift). Das HUD zeichnet den Stern als Symbol.
- Gewichte (U3D korrigiert): Das Theme der Referenz deklariert Cantarell 560/700–760 und Cinzel 700, wendet sie aber nie an.
SaumwachtTheme.fontschreibtvariation_opentype = {"wght": weight}mit dem String-Schlüssel „wght“; Godot 4.7.2 ignoriert den (gemessen: gleiche Fortschritte bei 400, 560 und 700; nur der Integer-Tag ändert sie). G3 zeigt beide Fonts in ihrer Grundinstanz Regular 400, und so auch der Port. Die Rollen (LuneFace) bleiben getrennt, damit U5 echte Gewichte vergeben kann. - Laufweite und Konturen (U3D): Godots
spacing_glyph(Pixel je Glyph) wird als UI-Toolkit-letterSpacingumgerechnet (Hundertstel der Schriftgröße). Titel, Welle und Gold bekommen Godots dunklen Saum (outline_size) als weichen Schatten statt einer TextCore-Kontur — die Kontur liegt auf beiden Seiten der Glyphenkante und frisst die dünnen Striche der Regular-Schnitte, Godots Outline wächst nur nach außen.
Prüfung U3A
| Test | Ergebnis |
|---|---|
| EditMode gesamt | 23/23, davon 12 neue: öffentliches Bild für alle sechs Sitze gleich (Planung und Kampf), fremde Entwürfe (Held, Champion-Buchung) bis zum Kampf unsichtbar, private Boss-Lane-Wahl, Lane-Bedrohung bei Turm-HP und Ankündigungen, Einheitenzahlen je Lane, Bosszustände, nächste Welle gleich der Regelwelle (Runden 1–24), Bereit-Sperre, Zahlenformate, menschlicher Sitz, Bot-Partie unverändert |
| PlayMode-Probe | UI Toolkit rendert im Batchmodus (siehe oben) |
U3B · Komponenten und Bereiche
Alles liegt unter Assets/Luneraria/UI/Hud/ und ist aus Godot übertragen:
| Unity | Godot | Inhalt |
|---|---|---|
LuneHud.cs |
lune_hud.gd |
die fünf Bereiche, Synchronisierung (10 Hz Planung, 5 Hz Kampf, Minimap 10 Hz, Ereignisse 4 Hz), UI-Größe (mindestens 1560 × 880 logische Pixel), Ereignis-Erkennung aus öffentlichem Zustand, Tooltips |
LuneUi.cs, LuneElements.cs |
lune_ui_theme.gd, status_badge.gd, hp_bar.gd, tower_indicator.gd, tab_bar.gd, lune_glyph.gd |
Textvarianten, Platten- und Knopfvarianten, Grundelemente |
LuneComponents.cs |
resource_display.gd, team_panel.gd, unit_card.gd, army_chip.gd, item_slot.gd, event_feed.gd, modal_panel.gd |
Gold, Team, Kaufkarten, Armee, Items, Ereignisse, Fenster |
LuneLanePanels.cs |
lane_indicator.gd, boss_indicator.gd, next_wave_panel.gd |
Lanes, Bossgrotte, nächste Welle |
LuneArmyPanels.cs |
champion_panel.gd, unit_detail.gd |
Angriffschampions, ausgewählte Einheit |
LuneHeroPanels.cs |
hero_card.gd, hero_detail.gd |
Heldenkarte, Heldenfenster (Anwerben, Werte, Items, Talente) |
LuneMinimap.cs |
lune_minimap.gd, lune_minimap_overlay.gd |
Minimap mit eigener Ebene für den Kamerarahmen |
LunePortraits.cs |
portrait_cache.gd, portrait_rect.gd |
Porträts aus den echten Modellen, einmal gerendert |
LuneTooltip.cs |
lune_tooltip.gd |
der eine Tooltip |
LuneSettingsPanel.cs, LunePreferences.cs |
lune_settings.gd, preferences.gd |
Optionen (F1) und gespeicherte Einstellungen |
Die offenen Punkte aus G3 sind umgesetzt:
- Champion-Etikett: „1 WELLE“ steht als Band am unteren Porträtrand und verdeckt die Köpfe nicht mehr.
- Typ-Symbole: Schadens- und Rüstungstyp stehen als farbige Symbole auf den Einheitenkarten. Die Farben gleichen der Wellenvorschau: Ein Schadenstyp hat die Farbe der Rüstung, gegen die er 130 % trifft (Legion-TD-Prinzip).
- Armeewert: Die Summe des Einsatzes steht in der Armeezeile („Wert 185“).
- Helden auf der Minimap: kleine Porträts im Goldring statt Punkten, der eigene Held mit weißem Ring (Dota-Prinzip).
Die Heldenkarte hat einen reservierten Befehlsplatz für die Ultimates der geplanten Helden (PlannedHeroes, Auslöser Command). Er bleibt verborgen, solange keiner dieser Helden spielbar ist.
U3C · Eingabe und Befehle
Assets/Luneraria/UI/Game/LuneGame.cs ist das Gegenstück zur HUD-Seite von lune_game.gd.
- Befehle: Die Befehle des Menschen laufen über dieselbe Schnittstelle wie die der Bots (
LuneMatch.Submit). Jeder Befehl meldet sein Ergebnis im HUD zurück. - Bereit: Bereit geht an die Host-Schleife; der Kampf beginnt, sobald alle bereit sind. Nach einem Kampf ist Bereit eine Sekunde lang gesperrt.
- Tasten wie in G3:
- 1–5 kaufen, Leertaste meldet Bereit (im Kampf: Pause), P pausiert.
- Tab wechselt die Lane, F2–F4 springen zu Top, Mid und Bottom.
- B, G und H zeigen den eigenen Ancient, die Grotte und den eigenen Helden.
- R setzt die Kamera auf die eigene Lane zurück.
- F1 öffnet die Optionen, M schaltet den Ton, F11 das Vollbild, Esc schließt Fenster und Auswahl.
- Kamera und Maus:
- Klicks auf Lanes, Ereignisse, Banner, Bossgrotte und Minimap bewegen die Kamera.
- Über HUD-Flächen zoomt das Mausrad die Welt nicht.
- Ein Linksklick im Feld wählt eine eigene Figur (innerhalb von 34 px).
- Planung: Die eigene Entwurfsarmee steht in ihrer Formation. Die eigenen Aufstellungsflächen leuchten; Lanes mit eigenen Einheiten sind hervorgehoben.
- Optionen: Sie pausieren einen laufenden Kampf offline.
- Menü: Ein Hauptmenü gibt es im Unity-Port noch nicht. „Menü“ fragt deshalb nach und beendet das Spiel.
Bot-Partien (Tests, Benchmark) laufen unverändert; der Spielcontroller folgt dem Sitz der laufenden Partie. In der Szene ersetzt der Spielcontroller die U2-Debug-Anzeige.
Die Szenen- und Bibliotheksbauer arbeiten jetzt idempotent:
- Animator-Controller und Post-Processing-Profil werden an Ort und Stelle aktualisiert.
- Vorher erzeugte jeder Szenenbau neue interne IDs in 15 Dateien, obwohl der Inhalt gleich blieb.
- Die Szene selbst entsteht weiter bei jedem Bau neu; Unity vergibt dabei neue Objekt-IDs.
- Zwei Bauten hintereinander ergeben inhaltlich dieselbe Szene. Ersetzt man die IDs durch Platzhalter, sind alle 2840 Objekteinträge gleich; nur ihre Reihenfolge in der Datei ändert sich, weil Unity nach ID sortiert.
U3D · Prüfung und Abnahme
Prüfung (Port von verify_g3, Teile A–I)
HudVerifyTests zählt jede Prüfung und schreibt die Summen nach tools/out/hud-verify-*.txt. Die Referenz verify_g3 der Godot-Seite zählt 715 Prüfungen; der Port hat denselben Umfang plus Teil I (Feld um das HUD, U3-Zugabe).
| Teil | Inhalt | Prüfungen | Fehler |
|---|---|---|---|
| A | Layout 1152×720 … 2560×1440 und Ultrawide, UI-Skalen 90–130 % | 585 | 0 |
| B | Partiestatus: Ancients, Türme, Lanes, Wellen mit zwei und drei Ziffern, nur eigenes Gold | 21 | 0 |
| C | Held, Items, Talente, normale Einheiten (ohne Itemslots), Lane-Befehle mit Grottenwarnung | 23 | 0 |
| D | Angriffschampions (zeitlich), Bossgrotte in allen Zuständen, Lane des Wählenden, Banner | 16 | 0 |
| E | Bereit-Sperre, Bots, Privatsphäre, abgebrochener Menschensitz | 17 | 0 |
| F | Eingabe: Minimap, Lane-Klicks, Tasten, Feldklicks, kein Klick-Durchgriff, Tooltips | 18 | 0 |
| G | Ereignisse, kritische Warnungen, Bewegung reduzieren | 14 | 0 |
| H | Aktualisierungsraten, Porträt-Cache | 5 | 0 |
| I | Feld (U3-Zugabe): Aufstellungsflächen, Grotteneingang, ruhender Boss, Namensschilder, Eigentümer-Ring, Ancient-Balken | 19 | 0 |
| Summe | 718 | 0 |
Dazu EditMode 23/23 (Kern 402 Prüfungen, Sichtmodell, Bildraten-Logik) und PlayMode 13/13 (Szene bei echten Bildraten, Vertical Function Test, Capture, Verify A–I, UI-Toolkit-Probe). Die Bildwerkzeuge HudViewsTests und der Spieltest HudPlaytest sind Explicit und laufen nur gezielt. Fingerabdrücke der Bot-Partien unverändert: Seed 2 DCE95C96556F3A1A, Seed 9 ab Runde 21 7B8E43AEFC0D60C5.
Bilder
| Ordner | Inhalt |
|---|---|
screenshots/u3/motive-1920x1080/ |
die 14 G3-Motive (HudViewsTests, Port von g3_views.gd): Planung, Held, Items, Einheit, Champion, Boss verfügbar/angekündigt, Kampf Top/Mid/Bottom, eigener und gegnerischer Ancient kritisch, Turm zerstört, große Kampfansicht |
screenshots/u3/pruefung/ |
Schlüsselbilder der Teile B–F (Status, Held, Items, Einheit, Champions, Boss, Tooltip) |
screenshots/u3/aufloesungen/ |
Kampf bei 1152×720, 1280×720, 2560×1080, 2560×1440 (Teil A) |
screenshots/u3/r1-*.png, r2-*.png |
Spieltest über die echte Oberfläche: Lane-Tooltip, Kampfbeginn, Pause, Karten-Tooltip, Kampf Bottom |
Die 14 Motive liegen auch als JPEG bei 1280×720, 2560×1080 und 2560×1440 (Repository-Größe). Vergleichsbilder der Referenz: ../saumwacht-godot/docs/luneraria/screenshots/.
Spieltest über die echte Oberfläche
HudPlaytest (Port von g3_playtest.gd) treibt die echte Partie nur über Eingaben: Klicks an Pixelkoordinaten von 1920×1080, Tasten, Zeigerbewegungen für Tooltips. Ein Tester schreibt Befehlsstapel nach /tmp/lune_play/cmd-N.txt und bekommt danach einen Screenshot zurück; der Protokoll aller Befehle mit Runde und Phase steht in logs/u3/playtest-log.txt.
Geprüft in einem Lauf über drei Runden: Lane-Tooltip in der Planung, Bereit und Kampfbeginn, Pause im Kampf (P), Karten-Tooltip, Tastenkauf (4), Lane-Wechsel per F3/F4 und Kamera nach Bottom. Der Port hat noch kein Hauptmenü; der Spieltest startet deshalb in der Partie der G1-Szene.
Leistung
Player (macOS, Mono, Release; Apple M5, Metal; 1920 × 1080 im Fenster, VSync aus): Seed 9 in Runde 21, Spieltempo 1×, gemessen ab 10 s Kampf mit LuneBenchmark. Die Szene trägt seit U3 das HUD (Sitz 1 der Bot-Partie); ui_ms_per_frame zählt die HUD-Skripte (Tick des Panels plus Spielcontroller).
| Ansicht | Einheiten | fps (Mittel) | Bildzeit Median | p95 | Sim | Views | UI | Hauptthread (Mittel/p95) |
|---|---|---|---|---|---|---|---|---|
| ganze Karte (Zoom 64) | 116 | 169 | 4,60 ms | 13,05 ms | 0,094 ms | 0,309 ms | 0,090 ms | 2,77 / 3,94 ms |
| Mid-Lane nah (Zoom 22) | 63 | 218 | 3,90 ms | 9,60 ms | 0,044 ms | 0,332 ms | 0,078 ms | 2,35 / 3,06 ms |
Das HUD kostet unter 0,1 ms je Bild und liegt damit unter Simulation und Ansichten. Gegenüber den U2D-Läufen ohne HUD (158–160 bzw. 205–207 fps) ist die Bildrate im Rahmen der Laufstreuung; die Ausreißer beim Present (p95 10–13 ms) sind kürzer als in den früheren U2D-Spannen (18–26 ms), ohne dass sich daran etwas geändert hätte — das bleibt Laufstreuung und offene U5-Frage.
Rohdaten: logs/u3/player-benchmark-macos.json. Befehle siehe U2-WORLD.md (Build LunePlayerBuild.BuildMac, Lauf mit -luneBenchmark).
Feld um das HUD (Zugabe aus dem Motivvergleich)
Der Vergleich der 14 Motive mit der Referenz brachte Darstellungen hervor, die zum G3-Bild gehören, aber noch nicht im Port standen:
- Namensschilder (
LuneFieldTags): Helden mit Stufe in Heldengold, Angriffschampions und der Boss in der hellen Teamfarbe. Ein eingesetzter Boss nennt, für wen er kämpft („SCHLUNDKRONE · für Blau“) — G3s Antwort auf die Farbnähe seiner Kristalle und Blaus Armeen. Feste Bildschirmgröße wie Godotsfixed_size-Schilder, hinter allen HUD-Bereichen, ohne Maus. - Eigentümer-Ring am eingesetzten Boss in der Teamfarbe.
- Ancient-Balken über den Ancients, solange sie beschädigt stehen (3,4 m breit, 11,2 m hoch, kameragerichtet).
- Ruhende Schlundkrone auf dem Podest, solange die Grotte offen ist und kein Kämpfer dort steht (
lune_grotto_view.gd), neutral, in ihrem Idle-Clip. Die Lichtzustände der Grotte (Runen, Kristalle, Funken) sind noch nicht übertragen. - Grotteneingang der eigenen Seite als Ring, solange die Grotte offen ist.
- Aufstellungsflächen als eigene Objekte (vormals nur Renderer-Sichtbarkeit), beleuchtet, wenn die Lane eigene Einheiten hat.
Befunde und Korrekturen
| Befund | Maßnahme |
|---|---|
| Godot wendet die deklarierten Schriftgewichte nie an (String-Schlüssel „wght“ wird ignoriert) | Port zeigt wie G3 Regular 400; Cinzel-Bold ersetzt durch Cinzel-Regular; Rollen bleiben für U5 |
| TextCore-Kontur frisst die dünnen Striche der Regular-Schnitte | Godots dunkler Saum als weicher Schatten; Laufweite aus spacing_glyph umgerechnet |
| Layout der rechten Spalte und des Banners nutzte geschätzte Höhen | Folgt den echten Höhen von Top-Panel, Bottom-Leiste und Systemzeile (GeometryChangedEvent) |
| Kamera startete in jeder Partie in derselben Ansicht | Start wie Godot _ready: eigene Lane in Planungsdistanz, Bot-Partie von oben |
| Eigentümer-Ringe und Ancient-Balken fehlten in den Motiven | OwnerRingRound/OwnerRingDiamond, AncientBarFill_*, Balken und ruhender Boss in der Ansicht |
Abnahme U3
| Vorgabe | Stand |
|---|---|
| G3-HUD übertragen (Ancients, Wellen, Gold, Lanes, Türme, Team, Einheitenkarten, Armee, Held mit Items und Talenten, Angriffschampions, nächste Welle, Bossstatus, Minimap, Bereit, Tooltips, Ereignisse, Optionen, Partieende) | erfüllt (U3A–C) |
Sichtmodell mit denselben Privatsphäre-Regeln wie LuneHudModel |
erfüllt (U3A) |
| Eingabe und Befehle wie in G3, Befehle über dieselbe Schnittstelle wie die Bots | erfüllt (U3C) |
| Offene G3-Punkte: Champion-Etikett, Typ-Symbole, Armeewert, Helden auf der Minimap | erfüllt (U3B) |
Prüfung Teile A–H von verify_g3 |
erfüllt, 718 Prüfungen mit Teil I, 0 Fehler |
| Spieltest über die echte Oberfläche | erfüllt (Runden 1–3, siehe oben) |
| Bilder der 14 Motive und der Auflösungen | erfüllt |
| Leistung gemessen, einschließlich HUD-Kosten | erfüllt (ui_ms_per_frame 0,08–0,09) |
| Bot-Partien und Fingerabdrücke unverändert | erfüllt |
| Bekannte Unterschiede dokumentiert | erfüllt (siehe unten und KNOWN-BEHAVIOR-DIFFERENCES.md) |
Bekannte Grenzen
- Kein Hauptmenü im Port; „Menü“ beendet das Spiel nach Rückfrage. Das Menü mit Netzwerk-Host/Join gehört zu U4.
- Grottenlicht (Runen, Kristalle, Funken) fehlt; nur die ruhende Schlundkrone steht dort.
- Geplante Helden behalten ihren reservierten Befehlsplatz, solange keiner dieser Helden spielbar ist.
- Windows- und Linux-Player weiterhin an die fehlenden Build-Module gebunden (U1.5-UNITY.md).
- Schriftgewichte wie in G3 absichtlich Regular 400; echte Gewichte sind eine U5-Entscheidung.