Frame-rate independent movement
Speeds should be per second, not per frame. Moving 4 px every frame means a 144 Hz player moves 2.4× faster than a 60 Hz one. Multiply by the elapsed time (delta time) instead. Good enough for simple games; use a fixed timestep when collisions or physics must be consistent.
#delta-time#movement#game-loop
ts
const SPEED = 240; // pixels per SECOND
let last = performance.now();
function frame(now: number) {
const dt = Math.min((now - last) / 1000, 0.1); // seconds, clamped
last = now;
player.x += player.dirX * SPEED * dt;
player.y += player.dirY * SPEED * dt;
render();
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);