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?
Komponente: CORE (
buildPattern)Betroffene Version:
main@238ed66,index.htmlZeilen 934–943Beschreibung
Die Ketten-Hakengrube will auf genau einen Haken zurückfallen, wenn der zweite Haken nicht mehr
in die Grube passt:
Zu diesem Zeitpunkt stehen bereits zwei Haken in
c.hooks, undc.pits[0].hookswurdeschon mit
hookCount === 2befüllt (Zeile 933). Die ZuweisunghookCount = 1ändert anLayout und Metadaten nichts mehr – toter Code.
Folgeverhalten
Der zweite Haken wird bei knapp bemessener Grubenbreite über
clamp(..., g1 - 26)an dierechte Grubenkante gezerrt:
w = 1.6 … 1.85 × jumpDistance; beiv = 360(jumpDistance = 270) →w = 432 … 499.firstFx·w + spacing = 173…200 + 252…286 = 425…486, Grenzew − 40 = 392…459→ Bedingunggreift häufig.
g1 − 26, also 26 px vor der Landekante und damit praktisch überdem Landepunkt statt über der Grube.
Damit ist das Muster „HOOK_CHAIN“ nicht mehr deterministisch wie dokumentiert
(
AGENTS.md:HOOK_CHAIN= zwei Haken in Folge), und die Hakenplatzierung weicht von derVorgabe „Haken sitzen … seitlich über oder kurz vor der Grube“ ab.
Nicht verletzt
Die harten Vorgaben zur Löschbarkeit bleiben erfüllt (über 150 Generierungs-Läufe gemessen):
1.3 × GRAB_RADIUS(0 Verstöße).maxGapJumpableohne Haken im Wurfraum (0 Verstöße beiNicht-Plattform-Gruben; Plattformgruben werden über ihre Teilintervalle bewertet).
clamp(in 150 Läufen 0 Treffer aufe0+60/g1−26). — Der oben beschriebene Fall ist also selten, aber möglich.Lösungsvorschlag
Entscheidung vor das Anlegen ziehen und die Gruben-Metadaten konsistent halten:
Zusätzlich absichern, dass ein Haken mindestens
GRAB_RADIUS·0.6von der Landekante entferntbleibt, damit er nicht über dem Landepunkt hängt.
Dokumentiert in
gitlab-issues/06-hook-chain-rueckfall-pruefung-wirkungslos.md(Commit238ed66). Alle Befunde ausgeführt und gemessen; Repro-Schritte im Text.mentioned in issue #9
changed the description
changed the description
Querverweis zu #1/#2 (Commit
174aeb7): Der dort behebelte Solver-Befund – der Autopilot las jede Naht zweier Bodensegmente derselben Höhe als Grubenkante – ist weg (groundEdgeAfter()). Dadurch verifiziertHOOK_CHAINwieder (19–20/20 Seeds je Geschwindigkeit). Genau dieser Issue-Hief bleibt aber bestehen: die Rückfall-Prüfung steht weiterhin nach dem Pushen und ändert nur die lokale ZählVariable –Der zweite Haken kann also immer noch ~26 px vor der Landekante landen. Bitte Prüfung vor die Schleife ziehen (z. B.
hookCount = (firstFx * w + spacing <= w - 40) ? 2 : 1) und den Grubenbreiten-Fall mit testen.