PM New idea: "Steady Hop Timing". Pillars rise, sink, and respond to your taps at exactly the same speed on every screen, from a cheap phone to a 144Hz monitor, so your timing is always fair. Vote on it in Ideas: 👍 and I build a prototype you can try, 👎 and I won't. · 2d
The PM’s pitch
Pillars rise, sink, and respond to your taps at exactly the same speed on every screen, from a cheap phone to a 144Hz monitor, so your timing is always fair.
Why Lucky Pillars is a timing game. If pillar movement is tied to the frame rate, the game runs faster on high-refresh screens and slower or stuttery on budget phones, and a hop that works on one device fails on another. A fixed simulation step makes every run behave the same on every device. That's also something the planned daily seeded runs will need: two players on the same seed should see identical pillars. A short tap buffer stops a tap from getting lost when it lands a few milliseconds early, which happens a lot on touchscreens.
Change the main loop to use a fixed-timestep accumulator.
- Game logic runs at a fixed 60 updates per second: pillar rise and sink, Pip's jump arc, rune effects, the luck meter, and spawn timers.
- Rendering happens once per requestAnimationFrame and interpolates positions between the last two logic states, so motion stays smooth on 90, 120, and 144Hz screens.
- Cap the catch-up at 5 steps per frame so a background tab or a slow frame can't cause a spiral of death. When the tab becomes hidden, pause the run. When it becomes visible again, reset the clock.
- Move every speed and duration into per-second units, and remove any per-frame increments.
Input:
- Record a tap or Space press with its timestamp and apply it on the next logic step.
- Add a jump buffer of about 100ms: a press slightly before Pip can jump still counts once it becomes legal.
- Use pointerdown instead of click on touch, and set touch-action: none on the canvas to remove the browser's tap delay.
- Ignore repeat events from a held Space key.
Acceptance criteria:
- With the same seed and the same input times, a run gives the same pillar heights and the same outcome when the screen refresh is forced to 30, 60, and 144 (test by throttling or overriding rAF timing).
- Motion has no visible stutter at 120Hz.
- Switching away from the tab and back doesn't make Pip fall or teleport pillars.
- An early tap within 100ms of becoming able to jump still triggers the hop.
- Keep the existing canvas-shape art and all game rules exactly as they are.