Rollen ist eine feste Zeitschablone: Loslassen endet die Rolle nie, Halten wirkt nur 0,24 s und ist nach 0,3 s ausgeschöpft #14
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#14
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?
Rollen ist eine feste Zeitschablone: Loslassen endet die Rolle nie, Halten wirkt nur 0,24 s und ist nach 0,3 s ausgeschöpft #14"
By gilli — Closed
bug
game-feel
input
medium
2 comments
Behoben in
5884804(main). Alle vier Teile:Teil 1 – Rolle = Haltedauer.
stepBodybeendet eine Rolle, die die Taste je erlebt hat, mit dem Loslassen; die Hitbox steht im selben Simulationsschritt wieder auf der Stand-Box. Zeitachse jetzt inCORE.K: Tippen =ROLL_TIME0,5 s, frühestmögliches AbbruchfensterROLL_MIN_TIME0,26 s, ObergrenzeROLL_HOLD_MAX0,9 s,ROLL_COOLDOWN0,2 s. Ein Loslassen vorROLL_MIN_TIMElässt die Rolle auf die Tipp-Dauer auslaufen (Wisch + sofortige Freigabe = volle Rolle, kein Aufstehen im Tor).Teil 2 – Konstanten.
ROLL_HOLD_MAXist aus dem Modul inCORE.Kumgezogen; zusätzlichROLL_MIN_TIMEundROLL_BUFFER(war hart 0,1 inpress()).rollDuration(v)liefert exaktK.ROLL_TIME, und die Generierungsformel fürROLL_JUMPrechnet mitrollDuration(v)statt der AttrappeK.ROLL_TIME * v– Layout und Physik dieselbe Zahl. Tipp-Rolle damit 0,50 s statt 0,54–0,62 s; die engste rollpflichtige Passage (0,278 s) bleibt frei, Solver/Soak über das Schrittweitenband 1/100…1/144 geeicht.Teil 3 – Zeigerfreigabe.
pointerdownnotiert nicht mehr die Hälfte, jeder Zeiger trägt sein ausgelöstes Halte-Flag (pt.held);pointerup/pointercancel/pointerleavelöschen genau dieses (Abbruch/Verlassen ohne Tap-Auslösung, Issue-#8-Teil-2-Muster). Damit kein feststeckendesrollHeldbeim Links-Wisch und keinjumpHeld-Restboost beim Rechts-Wisch.Teil 4 – Roll-Puffer.
INPUT.consume(av)bekommtcanRoll/airbornevonplayerCmdund verbraucht die Roll-Kante nur bei Verfügbarkeit (Muster aus Issue #4). Eine in der Luft gehaltene Rolle-Taste überlebt die Flugzeit und rollt bei der Landung; ein frisch gefasster Haken wird davon nicht ausgelöst (rollBufferFromAir– löst weiter nur frische Drücke aus dem Hängen). Gehaltene Taste startet keine Serienrolle.Steuerungstexte ergänzt („halten = länger rollen, loslassen = Ende“). Der Autopilot hält die Rolle jetzt, bis die stehende Hitbox inkl.
SOLVER_MARGINam Balken vorbei ist – die Solver-Verifikation der Muster bleibt unverändert grün.Verifikation:
tests/issue14.mjs(extrahiertesINPUT+playerCmd+ echtesstepBody: Konstanten inK, Tippen =ROLL_TIMEbei 360/480/640, Halten bisROLL_HOLD_MAXinkl. Grenzwert + Schritt, Loslassen nach/vorROLL_MIN_TIME, Hitbox-Rückkehr, Cooldown, Luftpuffer-Matrix, Seil-Freigabe, Anti-Serienrolle) undtests/browser_issue14.py(echte Pointer-/Tastaturevents: Wisch runter links + sofortige Freigabe =ROLL_TIMEohne Flag-Rest, Wisch hoch rechts ohnejumpHeld-Rest – Folgesprung normale Scheitelhöhe, Loslassen nach 0,33 s endet in ≤ 2 Schritten, Dauerhalten =ROLL_HOLD_MAX). Beide Suiten waren gegen den Altstand rot und sind jetzt grün;./tests/run-all.shkomplett grün (inkl. 5-min-Soak, Browser Smoke/Flow).Siehe Verifikationskommentar: Fix in
5884804, abgedeckt durch tests/issue14.mjs und tests/browser_issue14.py, komplette Suite grün.