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>
31 KiB
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.
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_g2prü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
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
| 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):
- Zielerfassung: Ein Ring unter dem Ziel der Regel zieht sich beim Aufladen zusammen.
- Aufladen: Der Kristall dreht schneller und wird heller.
- 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.
- 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
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
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
SkeletalFiguresind 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:stridepro Modell (Boss 2,0 m pro Schrittzyklus statt 0,52 m) undplay_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
| 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,
.blendund Generator vorhanden, Dreiecksbudget, Pivot am Boden, Laufzeitmaterial jeLN_*-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 bauttools/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.





