Brocken aus Stein statt aus Papier, und der Endschirm kommt wieder.
Behoben: nach dem Tod ging es nicht weiter
- Die ID
overgab es zweimal. Inindex.htmltrugen sowohl der Überschild-Balken im HUD als auch das Endschirm-Overlayid="over".getElementByIdliefert das erste im Dokument, also immer den Balken —$('over').hidden = falseblendete damit den Balken ein und nie den Endschirm. Wer starb, blieb ohne Weg zurück ins Menü hängen - Der Schirm selbst war die ganze Zeit vollständig da: Punkte, Statistik, Todesursache, Werft-Tipp und die Knöpfe Menü / Werft / Neuer Flug. Der HUD-Balken heißt jetzt
overbar; seine CSS hängt an der Klasse.over, nicht an der ID. Im ganzen Dokument gibt es keine doppelte ID mehr
Brockenphysik
- Schüsse schieben Meteoriten in ihre Flugrichtung. Der Stoß teilt sich durch die Masse, und als Masse dient die Fläche — ein Großbrocken (r 44) ist damit knapp zehnmal träger als ein kleiner (r 14). Gemessen bei einem einzelnen Pulstreffer: 33 / 10 / 3 px/s für klein / mittel / groß, jeweils exakt in Schussrichtung
- Ein Treffer neben der Mitte dreht den Brocken zusätzlich: Drehmoment ist Hebel mal Kraft, der Hebel ist der Abstand des Einschlags von der Mittellinie quer zur Schussrichtung
- Gegner krachen in Brocken. Beide nehmen Schaden, beide werden auseinandergedrückt, der leichtere weicht mehr. Gemessen: eine Drohne (4,6 HP) zerschellt an einem Großbrocken, der Brocken verliert 8,9 HP und driftet mit 9 px/s ab. Eine Abklingzeit von 0,55 s verhindert, dass ein überlappender Gegner in jedem Bild erneut Schaden nimmt
- Stellschrauben stehen beisammen in
js/sim.js:ROCK_MASS0,ROCK_PUSH,ROCK_VMAX
Meteoriten in 3D
- Die Brocken sind echte 3D-Modelle statt flacher Bilder und taumeln um drei Achsen — vorher drehte sich ein flaches Bild, was wie eine kreiselnde Münze aussah
scripts/import-model.pybereitet ein OBJ auf: Reduktion per Vertex-Clustering, Textur schrumpfen, Geometrie als JSON. Die Vorlage kam mit 4.442 Dreiecken und einer 6,4-MB-Textur; daraus werden 412 Dreiecke und 13 KB- Warum das nötig war: Phaser rechnet jeden Vertex in JavaScript um, nicht auf der Grafikkarte. Gemessen 1,073 ms je Brocken und Bild bei der Vorlage — davon hätten fünf ein Drittel des Bildbudgets aufgebraucht. Reduziert sind es 0,073 ms, also passen rund 75
- Der Ring um die Meteoriten ist weg: Bei einem 3D-Körper ist die Silhouette selbst die Trefferzone, der Ring war der Ersatz dafür, solange der Körper flach war
Lesbarkeit
- Die Station war das hellste Ding im Bild. Sie liegt auf der Hintergrundebene, wurde aber als einzige in voller Deckkraft ohne Tönung gezeichnet, während Brocken (0,7) und Trümmer (0,5) gedämpft sind. Station und Tor folgen jetzt derselben Dämpfung
- Gegner und Schiff bekommen einen dunklen Saum, der sie vom Hintergrund trennt. Bewusst ein Ring und keine gefüllte Scheibe: den Weg hatte 0.31.0 aus gutem Grund verlassen, weil eine Scheibe im Geschosshagel die Sicht nimmt
- Trefferzonen-Ring der Gegner kräftiger, Schein des eigenen Schiffs von 0,22 auf 0,40