Endlosmodus ist im HUD nicht erkennbar: Sektorname wiederholt sich ab Sektor 11 #11

Closed
opened 2026-08-31 21:01:58 +02:00 by gilli · 1 comment
Owner

⁨⁩⁨Endlosmodus ist im HUD nicht erkennbar: Sektorname wiederholt sich ab Sektor 11⁩ ⁨⁩#⁨11⁩⁨⁩"
By ⁨⁩⁨gilli⁩⁨⁩ — ⁨⁨⁩Closed⁨⁩⁩
bug
low
spec-gap
ui

Komponente: GAME (updateHud, sectorAt)
Betroffene Version: main @ 238ed66, index.html Zeile 2715

Beschreibung

AGENTS.md: „Die Sektoren können automatisch nach festen Streckenabschnitten wechseln. Zeige den
aktuellen Sektor im HUD. Nach dem zehnten Sektor soll ein Endlosmodus mit weiter steigender
Schwierigkeit beginnen.
“

sectorAt() liefert für Endlos-Läufe endless: true und einen wiederbenannten Sektor
(styleIdx = idx % 10). Die HUD-Anzeige blendet die Nummer genau dann aus, wenn sie zur
Unterscheidung nötig wäre:

// index.html:2715
el.hudSector.textContent = S.sectorDef
  ? (S.sectorDef.name + (S.sectorNo > CORE.SECTORS.length ? "" : " · " + S.sectorNo))
  : String(S.sectorNo);

Ergebnis:

Laufmeter sectorNo HUD-Text
400 m 1 Morgenlicht · 1
4400 m 10 Puls-Kern · 10
4600 m 11 Morgenlicht
8900 m 20 Puls-Kern

Der Sprung von Sektor 10 auf 11 zeigt damit erneut „Morgenlicht“ – ohne Nummer und ohne den
Hinweis, dass der Endlosmodus mit steigender Schwierigkeit läuft. Der einzige Hinweis ist die
sehr kurze Einblendung beim Sektorwechsel (flashMessage, Zeile 2433:
name + " · Endlos"), die nach ~1,1 s verschwindet.

Da difficultyAt() im Endlosmodus bis 1.6 weiter steigert (Zeile 757–760), ist der
Schwierigkeitssprung gerade in diesem Bereich spürbar, ohne dass die Anzeige ihn erklärt.

Lösungsvorschlag

Nummer immer anzeigen und den Endlos-Zustand zusätzlich beschriften:

const s = CORE.sectorAt(S.distance);
el.hudSector.textContent = s.def.name + " · " + (s.endless ? "Endlos " + s.sectorNo : String(s.sectorNo));

Zusätzlich überlegen, die Endlos-Runde dauerhaft im HUD zu markieren (z. B. eigenes Symbol plus
Text, damit die Information nicht ausschließlich über die Zahl läuft –
AGENTS.md: „keine Information ausschließlich über Farbe vermitteln“).


Dokumentiert in issues/11-endlosmodus-hud-nicht-erkennbar.md (Commit c171694).

1 comments

⁨⁩⁨Endlosmodus ist im HUD nicht erkennbar: Sektorname wiederholt sich ab Sektor 11⁩ ⁨⁩#⁨11⁩⁨⁩" By ⁨⁩⁨gilli⁩⁨⁩ — ⁨⁨⁩Closed⁨⁩⁩ bug low spec-gap ui > **Komponente:** GAME (`updateHud`, `sectorAt`) > **Betroffene Version:** `main` @ `238ed66`, `index.html` Zeile 2715 > > ## Beschreibung > > AGENTS.md: „*Die Sektoren können automatisch nach festen Streckenabschnitten wechseln. Zeige den > aktuellen Sektor im HUD. Nach dem zehnten Sektor soll ein Endlosmodus mit weiter steigender > Schwierigkeit beginnen.*“ > > `sectorAt()` liefert für Endlos-Läufe `endless: true` und einen wiederbenannten Sektor > (`styleIdx = idx % 10`). Die HUD-Anzeige blendet die Nummer genau dann aus, wenn sie zur > Unterscheidung nötig wäre: > > ```js > // index.html:2715 > el.hudSector.textContent = S.sectorDef > ? (S.sectorDef.name + (S.sectorNo > CORE.SECTORS.length ? "" : " · " + S.sectorNo)) > : String(S.sectorNo); > ``` > > Ergebnis: > > | Laufmeter | `sectorNo` | HUD-Text | > |---|---|---| > | 400 m | 1 | `Morgenlicht · 1` | > | 4400 m | 10 | `Puls-Kern · 10` | > | 4600 m | 11 | `Morgenlicht` | > | 8900 m | 20 | `Puls-Kern` | > > Der Sprung von Sektor 10 auf 11 zeigt damit erneut „Morgenlicht“ – ohne Nummer und ohne den > Hinweis, dass der Endlosmodus mit steigender Schwierigkeit läuft. Der einzige Hinweis ist die > sehr kurze Einblendung beim Sektorwechsel (`flashMessage`, Zeile 2433: > `name + " · Endlos"`), die nach ~1,1 s verschwindet. > > Da `difficultyAt()` im Endlosmodus bis `1.6` weiter steigert (Zeile 757–760), ist der > Schwierigkeitssprung gerade in diesem Bereich spürbar, ohne dass die Anzeige ihn erklärt. > > ## Lösungsvorschlag > > Nummer immer anzeigen und den Endlos-Zustand zusätzlich beschriften: > > ```js > const s = CORE.sectorAt(S.distance); > el.hudSector.textContent = s.def.name + " · " + (s.endless ? "Endlos " + s.sectorNo : String(s.sectorNo)); > ``` > > Zusätzlich überlegen, die Endlos-Runde dauerhaft im HUD zu markieren (z. B. eigenes Symbol plus > Text, damit die Information nicht ausschließlich über die Zahl läuft – > AGENTS.md: „keine Information ausschließlich über Farbe vermitteln“). > > --- > > *Dokumentiert in `issues/11-endlosmodus-hud-nicht-erkennbar.md` (Commit `c171694`).* 1 comments
Author
Owner

Behoben in 846cb67 (Doku-Notiz 5835507), beide auf main.

Geändert

  • updateHud() leitet endless = S.sectorNo > CORE.SECTORS.length ab – exakt dieselbe
    Schwelle wie sectorAt().endless. Der Titel der Sektorzelle wird im Endlosmodus zu
    „Endlos“, in der Zahlzeile steht dauerhaft das Glyph „∞“:
    ∞ Morgenlicht · 11 bei 4.657 m, Titelzeile „ENDLOS“. Die Sektornummer bleibt erhalten.
  • Bewusst zwei Stellen statt nur die vorgeschlagene Zahlzeile: auf Bühnen ≤ 560 px fällt der
    Sektorname per CSS weg (#5), dann muss die Zahlzeile trotzdem als endlos lesbar bleiben.
    Der Titel kostet dafür keine Breite – „SEKTOR“ und „ENDLOS“ sind gleich lang, und die Zelle
    ist durch die Zahl ohnehin breiter. Hinweis ist Text/Glyph, nicht Farbe.
  • #hudEndless ist im Normalbetrieb leer statt display:none: sonst stünde der Glyph in
    der textContent-Ablesung, die tests/browser_issue5.py gegen „Orange-Industrie · 9“ prüft.
  • Die Einblendung beim Wechsel nennt jetzt die Runde: „Morgenlicht · Endlos-Runde 11“
    (vorher nur „· Endlos“).

Vorher gemessen (git show HEAD:index.html, Headless-Chromium, rAF stillgelegt, Welt bis an
die Sektordistanz erzeugt, Körper auf sicheren Boden, ein echter simStep – Sektorwechsel,
Einblendung und HUD laufen über den echten Pfad): Runden 11, 12 und 21 malen kein einziges
dauerhaftes Endlos-Signal. Das Wort „Endlos“ erschien ausschließlich in #flashMsg und war nach
1,4 s bei opacity 0.

Tests

  • tests/issue11.mjs (ohne Browser): updateHud per Klammerzähler aus dem Dokument, Fake-DOM,
    Sektor 1 … 30 – Nummer immer ablesbar, Anzeige für Runde 11 unterscheidbar von Runde 1,
    Hinweis in jeder endlosen Runde als HUD-Text und nie im vergänglichen Meldeelement, im
    Normalbetrieb abwesend, Markierung folgt exakt sectorAt().endless, jede gerührte
    el.<id> ist registriert und im DOM. Vor dem Fix 3 von 11 rot, jetzt grün.
  • tests/browser_issue11.py (echtes Spiel): Runden 11/12/21 mit Nummer und dauerhaft
    gemaltem Hinweis; nach dem Ausblenden der Einblendung wird der Hinweis weiterhin gemalt
    (#flashMsg dann opacity 0 – Gegenprobe); Layout 280×653 … 1366×768: keine Überlappung,
    kein Feldüberlauf, Pause-Touch-Ziel frei. Vor dem Fix 25 rot, jetzt grün.
  • Beide Suiten in tests/run-all.sh und tests/README.md aufgenommen;
    browser_issue11.py akzeptiert PULSE_HTML für den Nachlauf gegen eine alte Fassung.

Komplettlauf ./tests/run-all.sh: alle Suiten grün außer browser_flow.py – dieselbe
bildratenabhängige Frameschranke wie vorher (alternierend gegen HEAD und neu je 3 Läufe:
3 Fehltreffer auf beiden Fassungen, 21,5/20,8 bis 28,4/28,3 px, mitten in der Parabel).
Physik ist unberührt.

Behoben in `846cb67` (Doku-Notiz `5835507`), beide auf `main`. **Geändert** * `updateHud()` leitet `endless = S.sectorNo > CORE.SECTORS.length` ab – exakt dieselbe Schwelle wie `sectorAt().endless`. Der Titel der Sektorzelle wird im Endlosmodus zu „Endlos“, in der Zahlzeile steht dauerhaft das Glyph „∞“: `∞ Morgenlicht · 11` bei 4.657 m, Titelzeile „ENDLOS“. Die Sektornummer bleibt erhalten. * Bewusst zwei Stellen statt nur die vorgeschlagene Zahlzeile: auf Bühnen ≤ 560 px fällt der Sektorname per CSS weg (#5), dann muss die Zahlzeile trotzdem als endlos lesbar bleiben. Der Titel kostet dafür keine Breite – „SEKTOR“ und „ENDLOS“ sind gleich lang, und die Zelle ist durch die Zahl ohnehin breiter. Hinweis ist Text/Glyph, nicht Farbe. * `#hudEndless` ist im Normalbetrieb **leer** statt `display:none`: sonst stünde der Glyph in der `textContent`-Ablesung, die `tests/browser_issue5.py` gegen „Orange-Industrie · 9“ prüft. * Die Einblendung beim Wechsel nennt jetzt die Runde: „Morgenlicht · Endlos-Runde 11“ (vorher nur „· Endlos“). **Vorher gemessen** (`git show HEAD:index.html`, Headless-Chromium, rAF stillgelegt, Welt bis an die Sektordistanz erzeugt, Körper auf sicheren Boden, ein echter `simStep` – Sektorwechsel, Einblendung und HUD laufen über den echten Pfad): Runden 11, 12 und 21 malen kein einziges dauerhaftes Endlos-Signal. Das Wort „Endlos“ erschien ausschließlich in `#flashMsg` und war nach 1,4 s bei opacity 0. **Tests** * `tests/issue11.mjs` (ohne Browser): `updateHud` per Klammerzähler aus dem Dokument, Fake-DOM, Sektor 1 … 30 – Nummer immer ablesbar, Anzeige für Runde 11 unterscheidbar von Runde 1, Hinweis in jeder endlosen Runde als HUD-Text und nie im vergänglichen Meldeelement, im Normalbetrieb abwesend, Markierung folgt exakt `sectorAt().endless`, jede gerührte `el.<id>` ist registriert und im DOM. **Vor dem Fix 3 von 11 rot, jetzt grün.** * `tests/browser_issue11.py` (echtes Spiel): Runden 11/12/21 mit Nummer **und** dauerhaft gemaltem Hinweis; nach dem Ausblenden der Einblendung wird der Hinweis weiterhin gemalt (`#flashMsg` dann opacity 0 – Gegenprobe); Layout 280×653 … 1366×768: keine Überlappung, kein Feldüberlauf, Pause-Touch-Ziel frei. **Vor dem Fix 25 rot, jetzt grün.** * Beide Suiten in `tests/run-all.sh` und `tests/README.md` aufgenommen; `browser_issue11.py` akzeptiert `PULSE_HTML` für den Nachlauf gegen eine alte Fassung. Komplettlauf `./tests/run-all.sh`: alle Suiten grün außer `browser_flow.py` – dieselbe bildratenabhängige Frameschranke wie vorher (alternierend gegen HEAD und neu je 3 Läufe: 3 Fehltreffer auf **beiden** Fassungen, 21,5/20,8 bis 28,4/28,3 px, mitten in der Parabel). Physik ist unberührt.
gilli closed this issue 2026-09-01 18:06:10 +02:00
Sign in to join this conversation.
No description provided.