saumwacht-godot/docs/luneraria/G3-HUD-BESTAND.md
Martin Stickelbroeck 1b540f2a55 G3 (Zwischenstand): neues Ingame-HUD; Projekt wechselt nach Unity
Nicht abgenommen: Nach dem ersten Spieltest wurde entschieden, Champions of
Luneraria nach Unity 6 zu portieren. Dieser Stand ist die Referenz für das
HUD im Unity-Projekt (../luneraria-unity).

- HUD neu aus Komponenten mit eigenem Theme, Porträts aus den echten Modellen
  (einmal gerendert, zwischengespeichert), Lane-Übersicht mit deterministischer
  Bedrohung aus öffentlichem Zustand, Bossgrotte, nächste Welle, Ereignisse,
  Minimap mit zusammengefassten Armeen, Held/Items/Talente, Einheitendetails,
  Angriffschampions, Bereit-Sperre, UI-Größe, Team-Formen statt nur Farben
- Privatsphäre über LuneHudModel: fremdes Gold und fremde Entwürfe erscheinen nie
- Keine Regeländerung: Regeln 91/91, M2 73/73, Netz 43/43; verify_g3 715/715;
  verify_m1 38/38 und verify_m2 14/14 mit angepassten UI-Treibern
- Spieltest bis Welle 8 über die echte Oberfläche, Befunde in G3-HUD.md
- HELDEN-KONZEPT.md: vom Projektinhaber vorgegebene Helden (nicht umgesetzt)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:59:55 +02:00

10 KiB
Raw Blame History

G3 · HUD-Bestand vor dem Umbau

Stand: 29. September 2026 · Grundlage luneraria/g2 (9f62e30), Arbeitszweig luneraria/g3. Diese Aufnahme beschreibt das HUD, wie es G2 ausliefert. Sie ist die Referenz für die Entscheidungen in G3-HUD.md.

Aufnahmen

Alle Bilder stammen aus dem echten Spiel (LuneGame mit dem echten HUD). tools/luneraria/g3_views.gd setzt nur öffentlichen Partiezustand (Runde, Gold, Gebäude-HP, Boss-Claim) und bedient das HUD über dessen eigene Methoden; dasselbe Skript fotografiert später das G3-HUD.

Auflösung Ordner logische Fläche
1920×1080 screenshots/g3/vorher-1920x1080/ 1706×960 (Skalierung 1,125)
2560×1440 screenshots/g3/vorher-2560x1440/ 1706×960 (1,5)
1280×720 screenshots/g3/vorher-1280x720/ 1706×960 (0,75)

Motive je Ordner: 01-planung, 02-held-ausgewaehlt, 03-itemauswahl, 04-einheit-ausgewaehlt, 05-angriffschampion, 06-boss-verfuegbar, 07-boss-angekuendigt, 08/09/10-kampf-top/mid/bottom, 11-eigener-ancient-kritisch, 12-gegnerischer-ancient-kritisch, 13-turm-zerstoert, 14-grosse-kampfansicht.

Wichtig für das Layout: Das Projekt skaliert mit canvas_items/expand von 1600×960 aus. Jede 16:9-Auflösung ergibt dieselbe logische Fläche von 1706×960; 1280×720 zeigt also exakt dasselbe Layout wie 2560×1440, nur mit halb so vielen Pixeln. Ein 16-px-Text ist bei 720p physisch 12 px hoch. Ultrawide (21:9) verbreitert die Fläche auf etwa 2275×960, 16:10 und das Mindestfenster 1152×720 schmälern sie auf 1600×960.

Aufbau

Datei Zeilen Inhalt
scripts/luneraria/ui/lune_hud.gd 484 das gesamte HUD in einem Skript: Kopfleiste, Lane-Panel, Planungsseite, Kampfpanel, Bericht, Minimap-Rahmen, Ergebnis
scripts/luneraria/ui/lune_hero_panel.gd 186 Reiter „Held“: Anwerben, Stufe/EP, Einsatz-Lane, Items, Talente, Live-Porträt
scripts/luneraria/ui/lune_reinforce_panel.gd 113 Reiter „Verstärkung“: Champion-Buchung, Ankündigungen, Boss-Lane
scripts/luneraria/ui/lune_minimap.gd 80 Minimap aus dem Partiezustand
scripts/luneraria/ui/lune_settings.gd 68 Optionen und Steuerungstext
scripts/ui/theme/saumwacht_theme.gd, forged_style.gd 247 + 69 gemeinsames Menü-Theme (Basaltplatten, Bronzekanten)
scripts/ui/components/choice_group.gd – Segmentauswahl, im HUD für die drei Reiter

Bildschirmaufteilung (logische Pixel bei 1706×960):

  • Kopfleiste über die ganze Breite (Höhe ≈ 96): Titel, Phase, „Welle n“, zwei Ancient-Balken mit Zahl, Gold, Einkommen, Armeegröße, Identität (Team · Lane · Bund), Pause/Tempo (nur Kampf), Optionen, Menü.
  • Links (300 breit, ≈ 400 hoch): „LANES · TÜRME“ mit drei Knöpfen TOP Blau ●● Rot ●● plus Besitzernamen, darunter Teamlisten mit Basistürmen und der Grottenstatus als Fließtext.
  • Rechts (484 breit ≈ 28–30 % der Breite, 112 bis 270 über dem Boden): Reiter Truppen / Held / Verstärkung, Kaufkacheln, Armeeliste mit T/M/B/G-Umschaltern, ↑-Aufwertung, ×-Verkauf, Startaufstellung, Rückgängig, Bereit. Im Kampf ersetzt ein Textpanel mit Einheitenzahlen pro Lane die Seite.
  • Unten links (bis 760 breit): Rundenbericht und Hinweis-/Fehlerzeile.
  • Unten rechts: Minimap 236×236.
  • Ergebnis: Vollbild-Abdunklung mit Sieg/Niederlage.

Theme und Komponenten

  • Das HUD nutzt das Menü-Theme SaumwachtTheme unverändert: Varianten CaptionPanel, MenuPanel, SectionLabel, MutedLabel, CardTitleLabel, PrimaryButton, QuietButton, ChoiceButton.
  • Es gibt keine HUD-Komponenten. Knöpfe, Balken und Zeilen entstehen lokal; _bar() legt für jeden Balken eigene StyleBoxFlat-Kopien an.
  • Die Menüplatten (MenuPanel: 30/26 px Innenabstand, Nieten, 18 px Schatten) sind für ein Spielfeld-HUD zu schwer; der rechte Block wirkt wie ein Menü über dem Feld.

Porträts

  • Kauf- und Armeekacheln zeigen AssetLibrary.icon(), also die 2D-Konzeptbilder aus Phase 3, nicht die Spielmodelle. Heldenmodelle, Champions, Monster und die Schlundkrone haben dort gar kein Bild.
  • Nur der Heldenreiter rendert das echte Modell: eine eigene SubViewport mit eigener Welt, UPDATE_WHEN_VISIBLE, jede Frame animiert, solange der Reiter offen ist.
  • Keine einheitliche Kamera, kein Cache.

Eingabe

Taste Wirkung (G2) Ort
1–5 Truppe kaufen lune_game._input
Leertaste Planung: Bereit · Kampf: Pause lune_game._input
P Pause lune_game._input
Tab nächste Lane lune_game._input
F2 / F3 / F4 Kamera Top / Mid / Bottom lune_game._input
B · G · H · O · R eigene Basis · Grotte · Held · Übersicht · Kamera zurück lune_game._input
Q / E Kamera drehen lune_game._input
WASD, Pfeile, mittlere Maustaste, Mausrad Kamera lune_camera
F1 · M · F11 · Esc Optionen · Ton · Vollbild · Optionen schließen lune_main._unhandled_input

Frei sind unter anderem C, V, X, Z, N, U, I, J, K, L, T, Y und F5–F10. Die Welt kennt keine Auswahl per Linksklick; Einheiten wählt man nur über die Armeeliste.

Tooltips

Alle Hinweise sind Godot-Standard-Tooltips (tooltip_text): reiner Text, feste Verzögerung, Stil aus dem Menü-Theme. Einheitenwerte stehen nur im Tooltip der Kaufkachel (HP, „Schaden/s“ – tatsächlich Schaden pro Treffer bei 1 Angriff/s –, Reichweite, Fähigkeit). Item- und Talenttexte erscheinen nur als Tooltip.

Optionen

Lautstärke, Ton stumm, Vollbild, Bewegung reduzieren, dazu ein Steuerungstext. Es gibt keine UI-Größe. „Bewegung reduzieren“ wirkt auf Kamera, Menü und Effekte; das HUD hat keine Animationen.

Minimap

  • Zeichnet Lanes, Fluss, Grotte (Farbe: frei/gesperrt/Team), alle Gebäude (voll/zerstört) und im Kampf jede bewegliche Einheit als Punkt. Bei 90–120 Einheiten entsteht eine Punktwolke; Helden (gold) und Boss (größer) gehen darin unter.
  • Türme beider Teams unterscheiden sich nur durch die Farbe.
  • Klick und Ziehen bewegen die Kamera; das Trapez des Kamerabilds ist sichtbar.
  • queue_redraw() in jeder Frame, unabhängig von Änderungen.

Lanes, Türme, Ancients

  • Lane-Zustand nur als ●●/●○ für eigene und gegnerische Außen-/Innentürme; kein Schadensstand, keine Bedrohung, keine Angabe, welche Seite drückt, keine angekündigten Champions.
  • Basistürme stehen als „Basistürme 2/2“ im Teamtext.
  • Ancients: zwei gleich gewichtete Balken mit Zahl in der Kopfleiste; kein kritischer Zustand.
  • Klick auf eine Lane springt mit der Kamera dorthin (gut, bleibt).

Held, Items, Talente

  • Heldenreiter mit Live-Porträt, Stufe, EP-Balken (Werte nur im Tooltip), Einsatz-Lane, drei Itemknöpfen (Name + ×), sechs Item-Kaufknöpfen, Talentwahl.
  • Keine Grundwerte (HP, Schaden, Tempo, Reichweite, Rüstung) und keine Fähigkeitswerte.
  • Item-Zustände nur über „deaktiviert“; warum ein Item nicht geht (Gold, Stufe, schon getragen, Plätze voll), steht nirgends.
  • Bei 1280×720 ist der Reiter abgeschnitten: Itemkauf und Talente liegen unter „Startaufstellung/Rückgängig“ und brauchen Scrollen (vorher-1280x720/03-itemauswahl.png).

Normale Einheiten

  • Eine „Auswahl“ gibt es nicht; jede Armeezeile hat Porträt (2D), abgeschnittenen Namen („Korkı“, „Dorn“, „Same“), T/M/B/G, ↑ Kosten, ×.
  • Werte der gekauften Einheit, Aufwertungsziel und Rückgabebetrag nur im Tooltip.
  • G (Grotte) ohne Warnung, dass die Einheit ihrer Lane die ganze Kampfphase fehlt (nur im Tooltip und im Grottentext links).

Angriffschampions, Boss, Wellen

  • Champions: Textliste im Reiter „Verstärkung“ mit Ziel-Lane-Schaltern; Buchungen als „Gebucht: … Runde n“. Optisch wie normale Knöpfe, kein Unterschied zu dauerhaften Truppen.
  • Ankündigungen (öffentlich) nur in diesem Reiter.
  • Bossgrotte: Fließtext links („verfügbar“, „gesperrt bis Runde n“, „von Blau erobert … greift in Runde 12 über Mid an“). Kein Hinweis auf dem Spielfeld, kein Kopfgeld im Blick, keine Unterscheidung „umkämpft“.
  • Wellen: „Welle n“ ohne Obergrenze (richtig). Was die nächste Welle bringt, zeigt das HUD nicht, obwohl LuneWaves.build() öffentlich und deterministisch ist.
  • Ereignisse: nur der Rundenbericht nach dem Kampf und eine Hinweiszeile; Turmfall, Bossangriff oder kritischer Ancient erscheinen nicht im Moment des Geschehens.

Netzwerk und Privatsphäre

  • Der Gast erhält rpc_state mit dem Gold aller Spieler, deren bestätigten Armeen, Helden und Buchungen; den Entwurf (draft) nur für den eigenen Sitz.
  • Das G2-HUD zeigt Gold nur für den eigenen Sitz (gold_of(human_slot)) – das bleibt Pflicht.
  • Bereit-Status, Mensch/Bot und Verbindungsabbrüche zeigt das HUD nicht; Sitzungsmeldungen erscheinen nur als Hinweiszeile.
  • Nach „Bereit“ lehnt der Host weitere Befehle ab („Bereits bereit gemeldet …“); das HUD zeigt dann „WARTE AUF ANDERE …“, lässt aber Kaufkacheln, Lane-Knöpfe und Tasten 1–5 aktiv.

Leistung

  • refresh() läuft jede Frame: alle Beschriftungen werden neu formatiert, im Kampf wird zusätzlich über alle Einheiten gezählt (O(n) je Frame), in der Planung JSON.stringify(draft) gebildet.
  • Held- und Verstärkungsreiter bilden jede Frame eine JSON-Signatur.
  • Die Minimap zeichnet jede Frame alle Einheiten.
  • Die Heldenporträt-SubViewport rendert jede Frame, solange der Reiter offen ist.

Konsequenzen für G3

  1. HUD in Komponenten zerlegen, Theme um HUD-Varianten erweitern statt lokaler StyleBox-Kopien.
  2. Ancients und Welle in eine schmale Kopfzeile; die Ancients bekommen mehr Gewicht als Einzeltürme.
  3. Lane-Übersicht mit echten Turmsymbolen (Form + Schadensstand), deterministischer Bedrohungsstufe aus öffentlichem Zustand und angekündigten Gefahren.
  4. Kauf, Armee und Held nach unten; rechts nur Kontext (Auswahl, nächste Welle, Boss) statt einer dauerhaften 30-%-Leiste.
  5. Porträts aus den echten Modellen, einmal gerendert und zwischengespeichert, statt 2D-Skizzen und Live-Viewport.
  6. Minimap mit zusammengefassten Armeen, deutlichen Helden, Champions und Boss, Teamformen statt nur Farben.
  7. Ereignisleiste für Turmfall, Champions, Boss, kritische Ancients.
  8. Bereit-Sperre sichtbar machen, fremdes Gold und fremde Entwürfe weiter nie anzeigen, Mensch/Bot/Verbindung pro Mitspieler zeigen.
  9. Aktualisierung nach Änderungen statt jeder Frame; Minimap gedrosselt.
  10. Layout für 1600–2300 logische Breite und eine UI-Größe in den Optionen; Mindestschriftgröße so, dass 720p lesbar bleibt.