HOOK_CHAIN: Rückfall-Prüfung auf einen einzelnen Haken läuft zu spät und ist wirkungslos #6
Labels
No labels
accessibility
bug
cleanup
consistency
crash
critical
game-feel
gameplay
high
input
level-generation
low
maintainability
medium
pause
physics
responsive
security
spec-gap
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gilli/pulse-sprint#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
HOOK_CHAIN: Rückfall-Prüfung auf einen einzelnen Haken läuft zu spät und ist wirkungslos #6"
By gilli — Closed
bug
level-generation
medium
1 comments
Behoben in
6179809(main).Was die Prüfung vorher tat: die Rückfall-Entscheidung stand hinter der Haken-Schleife
(Alt-Zeile
if (hookCount === 2 && firstFx * w + spacing > w - 40) hookCount = 1;). BeideHaken und
c.pits[0].hooks = 2waren da schon gesetzt – toter Code. Übrig blieb nur derclamp(hx, e0 + 60, g1 - 26)der Schleife, der den zweiten Haken auf 26 px vor die Landekantezerrte.
Geändert in
CORE.buildPattern:c.pits.push()und vor der Haken-Schleife –Grubenmetadaten und verlegte Haken sind damit immer identisch.
K.HOOK_EDGE_GUARD= 135 (0,6 ×GRAB_RADIUS) als einzige Quelle für denAbstand eines Hakens zur Landekante; der
clampbenutzt sie statt 26 px.vermessene Einzelhaken-Format (≤ 1,45 ×
jumpDistance), denn eine Kettengrube von1,6…1,85 ×
jumpDistanceträgt ein einzelner Haken nach Messung nicht (~1,5 × jd). Ohne dashätte der Rückfall Muster erzeugt, die der Solver verwirft.
Auslieferung unverändert: im Gating-Band der Haken-Muster (ab Sektor 5 ⇒ v = 640) stehen in
der Kette weiterhin zwei Haken, Breite 1,6…1,85 ×
jumpDistance, Rand zur Landekante 179 px.Generierungsstatistik über je 6 Läufe vor/nach dem Fix gleich: HOOK_CHAIN 10 → 9, PIT_HOOK
40 → 38, erzwungene SAFE 0 → 0, Fallbacks 4 → 4. Der gemeldete Fall war im aktuellen Gating
latent (natürlicher Abstand 146…205 px) – jede Umstellung von Gating/Balancing hätte ihn
geschaltet.
Tests:
tests/issue6.mjs(neu, Node, ohne Browser) – vorher 7 von 14 Prüfungen rot, jetztgrün. Abgedeckt: Konstante in
CORE.K,pit.hooks== verlegte Haken, kein Haken näher alsK.HOOK_EDGE_GUARDan der Landekante, keine Klemmung aufg1 − 26(Messung über 900 Muster:256 unter der Schranke, 44 auf der Klemmstelle, Mindestabstand 26 px), Kettenabstand
≤ 1,3 ×
GRAB_RADIUS, Rückfall in beide Richtungen (360 px/s → genau ein Haken in schmalerGrube; 640 px/s → zwei Haken in Kettenbreite), Solver löscht beide Ausprägungen,
Generierungsläufe ohne Verletzung und mit HOOK_CHAIN in der Artenliste.
tests/soak.mjsmisst die Landekante jetzt mit derselben Schranke und prüft zusätzlichpit.hooks== verlegte Haken (10.000 Muster grün). Gesamtsuite inkl. aller Browser-Suiten grün;die bekannte Messschärfe von
tests/browser_flow.py(Teleport-Schranke) trat wechselnd gegenmainvor dem Fix öfter auf als dagegen – kein Zusammenhang mit dieser Änderung.