saumwacht-godot/docs/luneraria/G2-STRATEGISCHE-BAUWERKE.md
Martin Stickelbroeck 9f62e30377 G2: Ancients, Türme, Bossgrotte und Superboss; macOS- und Windows-ARM64-Pakete
Mondherz-Ancients (Saumkern-Kristall als Herz, Sichelklingen, Ringe, Krone,
Teamwappen, Energieadern) mit den Stufen stabil/instabil/kritisch, kurzem
Zusammenbruch und bleibender Ruine; der Sieg wartet nie auf die Grafik.
Turmfamilie aus einem Blender-Generator: Grenzwacht (Tower 1), Bastion
(Tower 2), Kernwacht (Basisturm in der Formensprache des Ancients), mit
Schadensstufen, Einsturz, Ruine und sichtbarem Angriff (Zielring, Aufladen,
Bolzen, Einschlag) - der Schaden bleibt vollständig in der Simulation.
Bossgrotte Mondschlund mit Tor, Treppe in die Tiefe, Altar, Säulen, Felsen
und fünf Zuständen; der Generator hält Abstand zur Top-Lane, die Höhle
braucht eine kleine Geländesenke (nur Darstellung). Superboss Schlundkrone
mit 24 Knochen und 11 Clips (inkl. Brüllen und Sieg), Adern in Teamfarbe,
dasselbe Modell für Grotte und Lane. Gemeinsame LN-Materialfamilie (Stein,
Metall, Kristall, Rune, Stoff, Mondwasser, Kreaturenhaut), Occlusion-Fade
ohne dithernde Schatten. Keine Regeländerung.

Geprüft: verify_g2 245/245, verify_g1 443/443, Regeln 91/91 und 73/73,
Stress 17/17, Balance 40 Partien identisch mit G1, verify_m1 38/38,
verify_m2 14/14, Netz 43/43 und Loopback 12/12, Legacy 209 und 463.
21 Ansichten vorher/nachher (1920x1080), Videos Turmkampf und Bossbegegnung,
Leistung G1/G2 auf demselben Mac (+0,5 ms in vollen Kampfansichten).
Pakete 0.17.0-g2 für macOS (Universal, ad-hoc signiert), Windows x64/ARM64
und Linux; macOS nativ und unter Rosetta, beide Windows-Pakete in Windows 11
ARM (Parallels, OpenGL-Fallback) mit --lune-smoke bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:12:49 +02:00

31 KiB
Raw Blame History

G2 · Ancients, Türme und Bossgrotte

Stand: 29. September 2026 · Branch luneraria/g2 (von luneraria/g1, Commit 8b17563) · Demo 0.17.0-g2. Assetprüfung und Entscheidungsmatrix: G2-ASSETS.md.

Ancient-Zustände 100 % · 50 % · unter 30 % · zerstört

Kurzfassung

  • Neue Bauwerke: Die strategischen Objekte sind neu gebaut, jeweils mit reproduzierbarem Blender-Generator:
    • zwei Mondherz-Ancients;
    • eine dreistufige Turmfamilie: Grenzwacht (Tower 1), Bastion (Tower 2), Kernwacht (Basisturm);
    • die Bossgrotte Mondschlund;
    • der Superboss Schlundkrone mit Skelett und 11 Animationen.
  • Klare Zustände: Alle Bauwerke haben Zustandsstufen, eine kurze Zerstörung und einen bleibenden Ruinenzustand. Die Grotte hat fünf Zustände.
  • Sichtbarer Turmangriff: Zielerfassung, Aufladen, Bolzen, Einschlag. Der Schaden bleibt vollständig in der Simulation.
  • Gemeinsame Materialfamilie LN_* für Stein, Metall, Kristall, Rune, Stoff, Mondwasser und Kreaturenhaut (auch für G4/G5).
  • Occlusion-Fade: Große Gebäude werden oberhalb der Kopfhöhe dithernd durchsichtig, wenn Figuren oder der Kamerafokus dahinter liegen.
  • Regeln unverändert: Die 40 Balancepartien ergeben exakt dieselben Werte wie in G1. Dieselbe Partie läuft mit und ohne Darstellung identisch.
  • Neue Plattformen: macOS-Paket (Universal, ad-hoc signiert) und Windows ARM64; beide Windows-Pakete liefen in Windows 11 (Parallels, ARM).

Ausgangszustand

  • G1 (8b17563): spielerisches Drei-Lane-Layout, Blockout-Grotte, Saumkern-Ancients aus Saumwacht, der Laneturm aus M1 (648 Dreiecke) für alle 16 Türme. Bis auf die Ancients (Aktivierung, Treffer) gab es keine Zustände. Türme sanken bei Zerstörung in den Boden und verschwanden.
  • G2 begann am 29. September unter Fedora 44 und wurde am selben Tag auf einem Mac (Apple M5, macOS 27) abgeschlossen. Unter Fedora entstanden bereits Turmfamilie, Mondherz, Materialshader und Turmeffekte. Auf dem Mac kamen hinzu: Bossgrotte, Superboss, Occlusion, Tests, Aufnahmen, Messungen, Plattformen und Doku.
  • Die Vorher-Aufnahmen (screenshots/g2/vorher) stammen aus dem G1-Stand. Sie wurden auf demselben Mac mit demselben Aufnahmewerkzeug gemacht wie die Nachher-Aufnahmen.

Wiederverwendete und neue Assets

Wiederverwendet sind:

  • der Kristallcluster des Saumkerns als Herz des Ancients;
  • Kalkstein-Textursatz, Kluft-Shader und Kartenprops;
  • die G1-Basisbauteile (Plaza, Mauern, Tore) und die Grottentreppen.

Neu sind sechs GLBs: Tabelle in G2-ASSETS.md.

Asset Dreiecke Höhe (Spiel) Besonderheit
Mondherz (Ancient) 19.032 10,4 m 27 bewegliche Teile, Wappen A/B, Ruinenteile
Grenzwacht (Tower 1) 6.516 6,1 m Upper/Lower getrennt, Schadensvariante, Ruine
Bastion (Tower 2) 9.364 7,2 m Ring und drei Satellitensplitter
Kernwacht (Basisturm) 9.224 8,3 m Klingenbogen in der Formensprache des Ancients
Mondschlund (Grotte) 15.182 7,7 m 12 Teile, prüft beim Bau den Lane-Abstand
Schlundkrone (Boss) 5.712 5,6 m (×1,7) 24 Knochen, 11 Clips, Adern in Teamfarbe

Pipeline:

  • Jeder Generator liegt unter assets-source/luneraria/g2/ und schreibt .blend, GLB und Manifesteintrag: Hash, Quelle, Generator, Knoten, Materialien, Maße, Pivot am Boden. Ausgaben: assets/luneraria/g2/.
  • Reproduzierbarkeit: Unter macOS (Blender 5.2.2) entstehen dieselben Dreiecke und Maße wie zuvor unter Fedora. Die Dateien sind aber nicht bytegleich (Gleitkomma in der Occlusion-Berechnung); verify_g2 prüft, dass jedes GLB seinem Manifest-Hash entspricht.
  • Der Import in Godot ist geprüft: Knoten, Clips, Skelett und Materialzuordnung (verify_g2, Teil A).

Ancient: Mondherz

Kernwacht-Basistürme vor dem Ancient aus Angreifersicht

Designsprache: Ein lunarianisches Energieheiligtum statt eines Turms.

  • Der Saumkern-Kristall (×2,3) schwebt als Herz über einem dreistufigen Dais mit Runenbändern.
  • Vier Mondsichelklingen bilden eine offene Lanzette.
  • Darüber: Krone und Teamwappen – Blau eine Mondsichel, Rot eine Sonnenscheibe.
  • Zwei Armillarringe drehen sich gegenläufig, fünf Satelliten kreisen, sechs Fragmente schweben.
  • Zwei Banner mit Teamsilhouette (Blau Schwalbenschwanz, Rot Flammensaum).
  • Energieadern laufen im Platz zu den beiden Basistürmen und zu den drei Lanetoren. Stirbt ein Basisturm, erlischt seine Ader.
  • Die Basistürme (Kernwacht) nehmen die Klingensprache auf, sodass Ancient und Basistürme als ein Heiligtum lesbar sind.

Teamunterschied bei identischer Geometrie, Hitbox und Position:

  • Kristall- und Runenfarbe: kühl bzw. warm;
  • Metall: Silberstahl bzw. Bronze;
  • Runenfamilie: Mondglyphen bzw. Sonnenstrahlen;
  • Bannersilhouette und Wappen.

Zustände aus der autoritativen HP (lune_ancient_view.gd):

HP Zustand Darstellung
100–61 % stabil ruhige Rotation, gleichmäßiges Licht, wenige Schwebeteilchen
60–31 % instabil leuchtende Risse im Stein, Energie flackert, erste Funken, ein Satellit sackt ab und zittert, Ringe eiern
30–1 % kritisch starke Risse, Herz gebrochen und unregelmäßig pulsierend, Energieleck (Funkenstöße), Rauch, zwei Klingen lose (eine weit ausgekippt), innerer Ring aus dem Lager gerutscht (schief, ruckelt), zwei Fragmente liegen auf dem Dais, Banner zerrissen
0 % Zusammenbruch (2,8 s) → Ruine Herz überlädt, implodiert, Lichtblitz und Splitterstoß, Klingen zerfallen im Staub, Ringe und Krone stürzen auf den Sockel, Fragmente fallen; danach Trümmer und gebrochener Kristall, Rauch für 25 s

Der Sieg wartet nicht auf die Grafik. Die Regel entscheidet im selben Simulationsschritt, in dem der Ancient 0 HP erreicht; die Partie ist ab dann vorbei. Der Zusammenbruch beginnt erst danach. verify_g2 prüft beides: kein Kollaps vor der Entscheidung, Partie bleibt beendet, während die Animation läuft.

Türme

Tower 1 · Tower 2 · Basistürme · Ruine

Grenzwacht (Tower 1) Bastion (Tower 2) Kernwacht (Basisturm)
Silhouette schlanker Achteckturm, offene Galerie breite geböschte Bastion mit Strebepfeilern kein Rundschaft: Runentrommel, zwei Sichelklingen als Lanzettbogen
Schutz wenig Metall Schildplatten zur Lane, Pechnasen, mehr Stein und Metall schwerer Sockel, Bronzebänder
Energie mittlerer Kristall zwischen zwei Hörnern großer Kristall, drei Hörner, Armillarring, drei Splitter Kristall im Klingenbogen, Ring, zwei Banner
Höhe 6,1 m 7,2 m 8,3 m

Alle drei teilen:

  • achteckigen Grundriss, Mondstein-Quader auf Basaltsockel;
  • Teammetall, Runenfriese und die Kristallwiege.

Die Kernwacht ist kein skalierter Tower 2, sondern gehört zur Architektur des Ancients.

Angriff (lune_tower_view.gd, lune_tower_fx.gd):

  1. Zielerfassung: Ein Ring unter dem Ziel der Regel zieht sich beim Aufladen zusammen.
  2. Aufladen: Der Kristall dreht schneller und wird heller.
  3. Schuss: Der Bolzen verlässt die Kristallspitze, sobald der Angriffszyklus der Regel zu 74 % voll ist. Er fliegt in Simulationszeit (Pause und Tempo wirken) und landet auf dem Treffer der Regel.
  4. Einschlag: Blitz, Splitter, kurzes Zucken des getroffenen Gebäudes.

Die Bolzen sind gepoolt (maximal 24), haben die Teamfarbe und sind klein genug für große Kämpfe. Die Effekte lesen nur Ziel, Fortschritt und Trefferzähler der Regel; sie können keinen Schaden, kein Gold und kein Ziel erzeugen. Gemessen: 13 Treffer, 14 Bolzen in 12 s (ein Bolzen war vorausgeflogen).

Schaden und Zerstörung:

Stufe Darstellung
leicht (unter 60,5 %) Risse, Ruß, dünner Rauch, Wimpel zerrissen
schwer (unter 30,5 %) gebrochener Oberbau (fehlende Zinnen, verbogenes Horn, lose Platte), Schutt am Fuß, Funken, flackernder Kristall
zerstört (1,7 s) Kristall überlädt und platzt (Splitterstoß), Oberbau kippt und sinkt, Staubstoß
Ruine Stumpf, Schutt, gebrochener Kristall, Rauch für 18 s, kein Licht

Trümmer sind vorgefertigte Teile, keine Physik pro Frame. Ruinen blockieren nichts; die Simulation kennt keine Gebäudekollision, und verify_g2 prüft, dass Armeen an einer Ruine vorbeimarschieren.

Bossarena: Mondschlund

Grotte: verfügbar · Kampf · entsandt · Cooldown · bald verfügbar

Aufbau (Ort, Terrasse, Bosspunkt und Eingänge wie in G1):

  • Arena: Grottenstein mit großem Runenkreis, zweistufige Bossplattform, dahinter ein Sichelaltar mit der Mondquelle.
  • Tor: Das monumentale Tor steht in der Achse – zwei gehörnte Wächterpylonen, tiefer Bogen mit Bronze-Sichel, Treppe hinab ins Dunkel, leuchtender Nebel und ein Mondbrunnen.
  • Umgebung: Alte Säulen stehen seitlich (intakt, gebrochen, umgestürzt), Mondwasser in zwei Rinnen, facettierte Felsmassen.
  • Sichtbarkeit: Der Eingang ist schon aus der Lane-Kamera von Top und Mid lesbar.

Geprüfter Befund aus G1: Die Top-Lane läuft auf drei Seiten um die Grotte. Die erste Felsplanung ragte bis zu 2,8 m in ihren Korridor. Seitdem liest der Generator die echten Lane-Linien (grotto_site.json aus tools/luneraria/dump_grotto_site.gd) und bricht ab, wenn ein Fels oder das Tor näher als 0,6 m an einen Korridor reicht.

Kleine Geländekorrektur (dokumentiert): Die Höhle hinter dem Tor liegt 1,05 m unter der Terrasse.

  • Umsetzung: LuneTerrain._cave_notch, 3 × 3,6 m, symmetrisch zur Achse.
  • Grund: Ohne die Senke schnitt der ansteigende Hang die Höhle und ihre Treppe (Gebäudemaße).
  • Wirkung auf das Spiel: keine. Die Senke ist reine Darstellung, wird von Felsen und Höhlenwänden verdeckt, und keine Figur steht dort.
  • Prüfung: verify_g1 (Spiegelung, Terrasse, Quelle) besteht unverändert.

Zustände (lune_grotto_view.gd, nur aus öffentlichem Zustand, Cooldown-Regeln unverändert):

Zustand Wann Darstellung
verfügbar Runde ≥ nächste Verfügbarkeit Boss ruht auf dem Dais (Adern halb aktiv), Runen, Mondquelle, Höhlenlicht und Mondwasser an, Schwebeteilchen
Kampf Expedition in der Grotte stärkeres, pulsierendes Licht, Funken; der ruhende Boss wird zur echten Einheit, die beim Erwachen brüllt
nicht verfügbar Boss ist für ein Team entsandt gedämpft, Runen schwach in der Farbe des erobernden Teams, kein Boss
Cooldown Boss gefallen / Sperrrunden erschöpft: Quelle dunkel und gebrochen, Runen fast aus, Mondwasser leer; beim Fall des Bosses ein einmaliger Energiekollaps (Blitz, Splitter, Staub)
bald verfügbar letzte Sperrrunde erste Energie: Runen flackern auf, Quelle glimmt, wenige Teilchen

Das Licht der Grotte ist bewusst zurückgenommen: zwei Punktlichter ohne Schatten (Höhle, Quelle), damit Arena und Boss nicht violett überstrahlen.

Superboss: Schlundkrone

Schlundkrone: Ruhe, Gehen, Doppelschlag (Ausholen, Aufschlag), Rückhand, Treffer, Mondschrei, Brüllen, Sieg, Tod

Clipbogen aus tools/luneraria/g2_boss_sheet.tscn: Spielkamera, Mittelplattform. Größenvergleich mit Truppe, Held und Angriffschampion im selben Bild: schlundkrone-massstab-mitte.png.

Prüfung des Bestands: Kein Monster taugte als Basis (siehe G2-ASSETS.md).

  • Das bisherige e10 „Schlundkrone“ ist ein starrer Wellenboss ohne Tod.
  • e07–e09 sind starr.
  • Der Troll-Repräsentant wäre nur eine große Einheit.

Neu gebaut, der Name blieb.

Design: ein uralter, kristallgebundener Titan Lunerarias, der von den Lunariern in den Mondschlund gekettet wurde. Die Silhouette trägt das Bild, nicht das Leuchten:

  • Haltung: gebeugt, auf den Knöcheln gehend, mit riesigen Schultermassen, sehr langen Unterarmen und kurzen Säulenbeinen. Keine andere Figur steht so.
  • „Krone“: ein gebrochener Halbmond-Nimbus aus Kristallsplittern, der hinter dem tief sitzenden Kopf schwebt; ein Splitter fehlt.
  • „Schlund“: Die Brust öffnet sich wie ein Maul (zwei Platten mit Mondsteinzähnen) um einen leuchtenden Herzkristall.
  • Details: Sichelhörner; ein Kristallcluster wächst nur aus der linken Schulter (asymmetrisch); gebrochene Bronzefesseln an beiden Handgelenken.
  • Teamfarbe: Feine Mondadern im Basalt glühen in der Farbe des Teams, für das der Boss kämpft (violett in der Grotte, blau oder orange als Verstärkung). So funktioniert dasselbe Modell neutral und als Lane-Verstärkung.
  • Abgrenzung: keine Roshan-/Baron-Kopie – kein gehörnter Pelzbrute, kein Wurm; Stein, Kristall und Mondmotive.

Rig und Animation:

  • 24 Knochen, starre Steinteile mit Gewicht 1,0; die Overlay-Knochen von SkeletalFigure sind vorhanden.
  • Clips (30 fps): idle, start, walk, stop, attack_a (beidhändiger Schmetterschlag), attack_b (Rückhand), hit, ability („Mondschrei“: Schlund öffnet sich, Krone steigt), death (Knie geben nach, Sturz nach vorn, die Krone bricht ab und fällt), roar (beim Erwachen in der Grotte), victory (wenn die Expeditionen scheitern).
  • Treffer landen bei 0,90 s wie bei allen Figuren; die Regel entscheidet jeden Treffer, die Clips folgen nur ihren Ereignissen.
  • Neu in SkeletalFigure: stride pro Modell (Boss 2,0 m pro Schrittzyklus statt 0,52 m) und play_event() für Brüllen und Sieg.
  • Alle Muster der Haut stammen aus Ruhepositionen (UV/UV2), damit auf dem gehäuteten Körper nichts schwimmt.

Als Angriffseinheit geprüft (verify_g2 Teil F):

  • Auf allen drei Lanes erscheint der entsandte Boss für das richtige Team, rückt vor, wird von Türmen beschossen und steht auf Boden, Brücke und Plattform.
  • Maßstab ×1,7, Fußabdruck kompakt (ca. 1,4 m Radius), damit Angreifer im Nahkampfabstand der Regel nicht im Körper stehen.
  • In großen Kämpfen bleibt er an Krone, Silhouette und Namensschild erkennbar (Boss als Lane-Verstärkung).
  • Grotten- und Lane-Boss nutzen ein gemeinsames Modell; es gibt keine zweite Version.

Maßstab

Maßstab: Truppe, Held, Angriffschampion, Boss vor Ancient und Basisturm

Objekt Höhe im Spiel
Truppe (Dornhopser) 1,35 m
Angriffschampion (Keilbrecher) 1,82 m
Held (Ringborke ×1,25) 2,32 m
Schlundkrone (×1,7, mit Krone) 5,64 m
Grenzwacht 6,06 m
Bastion 7,16 m
Kernwacht 8,33 m
Mondherz 10,37 m

Die Hierarchie Einheiten < Boss < Tower 1 < Tower 2 < Basisturm < Ancient prüft verify_g2.

Materialsystem

scripts/luneraria/view/lune_materials.gd ersetzt jede LN_*-Oberfläche eines GLB durch ein gemeinsames Material. Alles, was je Gebäude oder Team abweicht, sind Instanzparameter mit festen Plätzen: Teamfarbe, Energie, Flackern, Bruch, Schaden, Ruß, Runenfamilie, Bannerform, Fade. So teilen sich alle Gebäude wenige Materialien.

Familie Shader Eigenschaften
STONE lune_stone.gdshader Kalkstein triplanar, prozedurale Quader mit Farbdrift je Block, Fugen und Relief, Flechten auf Oberseiten, Occlusion aus Vertexfarbe, Risse (Voronoi) mit optionalem Energieleuchten, Ruß; Varianten Mondstein, Basalt, Grottenstein, Fels
METAL lune_metal.gdshader Teammetall (Silberstahl / Bronze), Eisen, alte Bronze mit Patina in Hohlräumen; gehämmert, Kanten poliert, nie spiegelnd
CRYSTAL lune_crystal.gdshader dunkler Körper, Adern in drei Tiefen (Parallaxe), Herz, Fresnel, facettierte Helligkeit, kontrollierte Emission, Zustandskanäle
RUNE lune_rune.gdshader Glyphen je UV-Zelle, drei Familien (Mond, Sonne, Grotte), Energie, Flackern, Bruch
CLOTH lune_cloth.gdshader Wind, Teamsilhouette, Emblem, Zerreißen
Mondwasser lune_water_glow.gdshader dunkles Wasser, nur Wellenkämme leuchten
Kreaturenhaut lune_hide.gdshader Basalt/Mondstein/Bronze aus Ruhepositionen, Mondadern in Teamfarbe, Trefferblitz
WOOD Standardmaterial nur Tür und Wimpelstange

Der Fade wird im Schattenpass übersprungen, damit Schatten nie dithern.

Licht

  • Anzahl: 16 Turmlichter (7–9 m Reichweite), 2 Ancient-Lichter (13 m) und 2 Grottenlichter, keines mit Schatten. Schatten wirft weiterhin nur die Sonne.
  • Zweck: Das Licht zeigt Teamzugehörigkeit (Farbe), Zustand (Energie, Flackern, aus in der Ruine) und Orientierung (Grotteneingang).
  • Gegen die Lampenansammlung: Leuchtende Kristalle, dünne Ringe, Splitter und Stoffe werfen keinen Schatten (weniger Schattenpass-Draws), und die Grottenlichter sind gedimmt.

Kamera und Occlusion

  • Befund: Aus der Standardkamera verdeckt der Ancient den nördlichen Basisturm und alles dahinter; das Grottentor verdeckt einen Abschnitt der Top-Lane.
  • Fade: Große Gebäude werden oberhalb von Kopfhöhe (Ancient ab 2,4 m, Türme ab 2,0 m, Grotte ab 2,2 m über dem Boden) per Bayer-Dithering bis 55 % ausgedünnt. Auslöser ist eine lebende Figur oder der Kamerafokus hinter ihnen, auf dem Bildschirm und auf der Bodenebene gemessen.
  • Nie unsichtbar: Die Silhouette bleibt stehen, Sockel und Schatten bleiben voll.
  • Schlanke Laneturme geben nur für Helden, Champions und den Boss nach, damit sie im Turmkampf nicht flackern. Bei der Grotte blenden nur Tor, Höhle und Felsen aus, nicht Säulen und Altar.
  • Kamerawinkel: Die Abnahmebilder zeigen Basistürme und den Kampf am Ancient aus der Angreiferrichtung (Q/E-Drehung), so wie ein Spieler die Kamera stellen würde.

Keine Spielregeländerungen

Unverändert sind:

  • Goldökonomie, Helden, Items, Wellen, Turmwerte, Sperrregeln und Ancient-Sieg;
  • Bossregeln und Boss-Cooldown, Lanezuweisung, KI und Netzwerkprotokoll.

Neue Dateien und Änderungen gibt es nur in Darstellung, Werkzeugen, SkeletalFigure und AssetLibrary (Manifest, Schritt, Ereignisclip), in LuneTerrain (Höhlensenke, nur Darstellung) und project.godot (ETC2/ASTC-Import für Apple Silicon, eigener Versionseintrag). Belege:

  • Alle Regeltests bestehen mit unveränderten Erwartungswerten.
  • Die 40 Balancepartien liefern Wert für Wert dieselbe Zusammenfassung wie G1.
  • Eine ganze Bot-Partie endet mit Grafik exakt wie ohne.

Performance

Gleiche Szene wie G1: Runde 13, sechs volle Armeen, Tempo 2×, gleiche Kamerapositionen (tools/luneraria/lune_benchmark.tscn). Jeder Stand wurde zweimal gemessen, auf demselben Mac mit denselben Einstellungen (Apple M5, macOS 27, Godot 4.7.2 Forward+ über Metal, 1920 × 1080, ETC2/ASTC). G1 lief aus einem Arbeitsbaum auf 8b17563 mit demselben Messskript.

Messung G1 G2
Lane-Ansicht: Bildzeit Mittel / p95 9,51 / 10,98 ms 10,02 / 11,54 ms
Lane-Ansicht: CPU (Hauptthread) 9,38 ms 9,87 ms
Lane-Ansicht: Draw Calls / Objekte 3.278 / 7.340 3.509 / 7.597
Übersicht: Bildzeit Mittel / p95 9,48 / 10,29 ms 9,95 / 10,74 ms
Übersicht: Draw Calls 3.588 3.767
Basis- und Grottenansicht 8,33 ms (120-Hz-Grenze) 8,33 ms (120-Hz-Grenze)
GPU-Last Basis / Grotte (ioreg) 72 / 87 % 76 / 90 %
Aktive Lichter / davon mit Schatten 23 / 1 24 / 1
Schattenwerfer (Knoten / Instanzen), Lane 539 / 946 577 / 974
Partikelsysteme aktiv / max. Teilchen 0 / 0 2 / 44
G2-Darstellungslogik je Bild – 0,25 ms
Szenenaufbau 395 ms 207 ms
Simulationsschritt 1,8 ms 1,9 ms
VRAM / Texturen 819 / 411 MB 825 / 399 MB
RAM statisch / Prozess (RSS) 98 / 708 MB 111 / 787 MB

Einordnung:

  • G2 kostet in den vollen Kampfansichten 0,5 ms (+5 %), sonst nichts Messbares.
  • Ursache laut Kostenzerlegung (tools/luneraria/g2_cost_split.tscn, logs/g2/cost-split.json, pausierte Lane-Szene): Ohne Türme ist das Bild 0,54 ms schneller, mit schlichtem Material nur 0,07 ms. Es sind also die mehrteiligen Turmmodelle (mehr Draw Calls), nicht die Shader.
  • Größere Posten: Figuren (2,4 ms) und Sonnenschatten (0,8 ms).
  • Maßnahme: Nach der Analyse werfen Kristalle, Ringe, Splitter und Stoffe keinen Schatten mehr.
  • Keine pauschale Reduktion: Qualität wurde nicht pauschal gesenkt. Mögliche spätere Schritte (G5/G6): Bauteile je Material zusammenfassen, Sichtbarkeitsbereiche für Kleinteile.

Einschränkung der Messung auf dem Mac:

  • Godot 4.7.2 liefert unter Metal keine GPU-Zeitstempel (immer 0). Ersatzweise misst ein Thread die Auslastung der Grafikeinheit (ioreg, systemweit). Die Werte schwanken zwischen Läufen um bis zu ±15 Prozentpunkte.
  • macOS begrenzt Fensterbilder auf die 120 Hz des Displays, auch mit VSync aus. Unter 8,33 ms ist die Bildzeit daher nicht messbar.
  • Die G1-Referenz vom Fedora-PC (RTX 5060 Ti, logs/g2/perf-g1-run*.json) liegt bei 7,5 ms in der Lane-Ansicht bei 3,3 ms GPU. Die Zahlen beider Rechner sind nicht direkt vergleichbar.

Tests

sh tools/luneraria/run_g2_tests.sh (Logs: logs/g2/test-*.log).

Prüfung Ergebnis
A · Regeln M1 test_lune_core (inkl. Spiegeltest) 91/91
A · Regeln M2 test_lune_m2 73/73
A · Stress M3 (Wellen bis 10⁶, Langlauf) 17/17
A · Balance M3-Methode, 40 Partien Seitentausch 20/20, 9–13 Wellen, identisch mit G1
B · G1-Karte verify_g1 443/443
C–M · G2-Abnahme verify_g2 245/245
echte Anwendung verify_m1 (1080p) 38/38
echte Anwendung verify_m2 14/14 (Partie endete vor einer Bossentsendung, bekannte Variante)
Netzwerk (nur Regression) test_lune_net / Loopback net_rounds.py 43/43 · 12/12
Legacy Saumwacht 209 · 463

verify_g2 (echtes Spiel im Fenster, 78 s):

  • A · Assets (113): Manifest, Hash je GLB, .blend und Generator vorhanden, Dreiecksbudget, Pivot am Boden, Laufzeitmaterial je LN_*-Material, Boss skelettiert mit allen 11 Clips, Kontaktzeit, Schrittweite, Overlay-Knochen.
  • B · Ansichten (28): 6/6/4 Türme, 2 Ancients, Grotte mit ruhendem Boss, jede Ansicht exakt an ihrer Regelposition, Gebäuderadius der Regel unverändert, Teamunterschiede (Runenfamilie, Bannerform, Metall), höchstens 22 Lichter ohne Schatten, begrenzte Partikelsysteme.
  • C · Zustände (32): Turm- und Ancient-Stufen an allen Grenzen (61/50/31/20/1 %), Schadensvariante, Energieleck, Zerstörung, Ruine bleibt stehen und hat kein Licht, alle fünf Grottenzustände samt Boss-Sichtbarkeit und Claim-Farbe.
  • D · Turmzielwahl und Angriff (6): Türme zielen nur auf feindliche Figuren in Reichweite, der Zielring liegt unter dem Ziel der Regel, Bolzen fliegen zu Figuren, etwa ein Bolzen pro Treffer, kein Bolzen landet doppelt.
  • E · Regeln durch die Darstellung (8): Keine gesperrte Stufe nimmt Schaden (Outer → Inner → Base); der Ancient nimmt keinen Schaden, solange ein Basisturm steht; Armeen marschieren an Ruinen vorbei; der Fall eines Ancients beendet die Partie sofort, der Kollaps folgt danach.
  • F · Boss (34): Grotte erreichbar (Eingänge auf dem Boden, Weg innerhalb des Säulenrings, Boss auf dem Dais), Expedition weckt den Boss, er brüllt, fällt, spielt seinen Tod; die Grotte erschöpft, Blau erhält den Claim; Entsendung auf Top, Mid und Bottom mit Teamfarbe, Vorrücken, Turmbeschuss und Bodenkontakt.
  • G · Keine Doppelereignisse (3): Vier Runden mit Seed 11, einmal nur Regeln, einmal mit voller Darstellung: jede Runde identisch (Gold, Gebäude, Boss).
  • H · Botpartien (7): vier Seeds enden regulär nach 9–12 Wellen; eine ganze Partie auf dem Bildschirm endet exakt wie ohne, und jeder zerstörte Turm wird als zerstört gezeigt.
  • I · Occlusion und Maßstab (14): Der Ancient dünnt aus, wenn der Fokus hinter ihm liegt (nie unsichtbar, Fade höchstens 0,55), und ist danach wieder voll; das Grottentor gibt der Top-Lane nach; Höhenordnung wie in der Tabelle „Maßstab“.

Visuelle Prüfung

Echte Aufnahmen aus dem laufenden Spiel, 1920 × 1080, mit HUD. Nachher (G2) und vorher (G1) mit demselben Werkzeug tools/luneraria/g2_views.tscn, derselben Partie und denselben Kameras.

Nr. Ansicht Nachher (G2) Vorher (G1)
1 kompletter Ancient bei 100 % nachher vorher
2 Ancient bei ca. 50 % nachher vorher
3 Ancient unter 30 % nachher vorher
4 zerstörter Ancient (und Moment des Zusammenbruchs) nachher · Kollaps vorher
5 Tower 1 (Grenzwacht) nachher vorher
6 Tower 2 (Bastion) nachher vorher
7 Basistürme nachher vorher
8 zerstörter Turm (und Einsturz) nachher · Einsturz vorher
9 Bossgrotte neutral (Boss entsandt) nachher vorher
10 Boss verfügbar nachher vorher
11 Bosskampf nachher vorher
12 Boss als Lane-Verstärkung nachher vorher
13 Kampf vor einem Tower nachher vorher
14 Kampf vor dem Ancient nachher vorher
15 Gesamtkarte nachher vorher
+ Maßstab, Ancient Rot, Grotte Cooldown / bald verfügbar 16 · 17 · 18a · 18b 16 · 17 · 18a · 18b

Videos (1920 × 1080, 30 fps, H.264, echte Partie, Movie-Writer von Godot, Schnitte statt Zeitraffer):

  • g2-turmkampf.mp4, 22 s: Blaus Mid-Armee erreicht Rots Grenzwacht. Zielerfassung, Aufladen, Bolzen und Einschläge, Schnitt zu schwerem Schaden, dann Einsturz, Ruine und die Armee zieht vorbei.
  • g2-bossbegegnung.mp4, 26 s: Der Boss ruht, beide Expeditionen ziehen ein und kämpfen gegeneinander. Schnitt: Die Schlundkrone erwacht mit Gebrüll und kämpft; Schnitt zu ihrem Ende, die Grotte erschöpft.

Aufnahme und Kodierung: tools/luneraria/g2_video.tscn mit --write-movie, dann tools/luneraria/encode_video.py (FFmpeg aus Blender).

Plattformen

Paket Test Ergebnis
macOS Universal 0.17.0-g2 (App ad-hoc signiert, nicht notarisiert) nach dem Entpacken wie im Finder: Signatur gültig; Kurzpartie --lune-smoke Apple Silicon: Metal, Forward+, 120 fps · Intel-Teil unter Rosetta: Vulkan/MoltenVK, Forward+, 118 fps · beide PASS
Windows ARM64 0.17.0-g2 (neu) Windows 11 Pro 24H2 ARM in Parallels, Kurzpartie im Desktop Vulkan/D3D12 fehlen in der VM → automatischer Wechsel auf OpenGL 3 (Kompatibilitätsmodus), 65–69 fps, PASS
Windows x64 0.17.0-g2 dieselbe VM, x64-Emulation (Prism) ebenfalls OpenGL-Fallback, 46–61 fps, PASS
Linux x64 0.17.0-g2 nur exportiert auf diesem Mac nicht startbar (x86_64)

Die Prüfsummen der Pakete stehen in ../dist/luneraria/build-manifest.json; in der VM stimmen die Hashes überein. Berichte: logs/g2/smoke-*.json, Godot-Logs der VM logs/g2/windows11-*-godot.log, Bilder: screenshots/g2/plattformen/, darunter das echte Desktopfenster unter Windows.

Einordnung:

  • Das ist der erste Lauf unter Windows 11, aber kein Test auf x64-Hardware mit echtem Vulkan/D3D12-Treiber.
  • Zugleich ist es der erste Lauf des Kompatibilitätsmodus mit Luneraria: Die G2-Shader funktionieren dort, einschließlich der Instanzparameter; das Bild ist ohne SSAO und Glow dunkler.

Bekannte Probleme

  • GPU-Zeit ist auf dem Mac nur geschätzt (Metal ohne Zeitstempel in Godot 4.7.2), und die 120-Hz-Grenze verdeckt Unterschiede in leichten Ansichten.
  • Die Occlusion ist bewusst grob: Bildschirmrechteck und Bodentiefe, alle zwei Bilder. Einzelne Figuren am Rand eines Gebäudes können kurz ein Ausdünnen auslösen. Das Dithering ist bei MSAA 2× als feines Raster sichtbar.
  • Die Grottenfelsen stehen wegen der Top-Lane dicht an der Arena; aus manchen gedrehten Kameras wirkt die Felskulisse knapp.
  • Der Boss als Lane-Verstärkung ist zwischen vielen blauen Einheiten der eigenen Seite an Größe und Krone erkennbar, farblich aber nah an ihnen.
  • Der Victory-Clip läuft nur, wenn eine Grottenexpedition scheitert; beim Lane-Boss gibt es keine eigene Sieg- oder Einmarschsequenz, bewusst ohne Rutschen während des Marschs.
  • Die GLBs sind zwischen Linux und macOS nicht bytegleich (Geometrie gleich).
  • Die Windows-Tests liefen nur in einer ARM-VM mit OpenGL-Fallback.
  • tools/build_demo.py (Saumwacht 0.15.0) passt seit M4 nicht mehr zu den umbenannten Presets. Die Luneraria-Pakete baut tools/luneraria/build_luneraria_demo.py.

Offene Aufgaben für G3 (und später)

  • G3 HUD:
    • Zustände der Gebäude und der Grotte (bald verfügbar, Cooldown, Claim) auch im HUD und auf der Minimap spiegeln;
    • Lebensbalken der Gebäude ins neue HUD-Design überführen;
    • Ankündigungen für Bossentsendung und Turmfall mit den neuen Effekten verbinden.
  • Performance (G5/G6): Turmteile je Material zusammenfassen, Sichtbarkeitsbereiche für Kleinteile, Figuren-Kosten (2,4 ms) angehen.
  • G4 Umgebung: Basisplatz, Ringmauer, Tore und Landmarken noch Blockout; Felsen und Säulen der Grotte könnten Kartenmaterial und Gelände stärker aufnehmen.
  • G5 Licht: Gesamtbalance der 20 Punktlichter mit dem neuen Himmel; Glow-Stärke im Kompatibilitätsmodus.
  • Windows auf x64-Hardware mit nativem Vulkan/D3D12 (M4-Punkt bleibt offen); Notarisierung für macOS, falls die App weitergegeben werden soll.