game main demo uses requestAnimationFrame, not setInterval