You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ensure consistent frame-rates (based on the targeted FPS of your choosing)
The targeted FPS is tweakable on-the-fly (while the game is running)
This implementation does not have a requestAnimationFrame loop, it let you implement it yourself or not (because in some cases it's handled by the framework, ex: threejs in a WebXR project)
"Normalize" the deltaTime at the source to make sure 1 equals 1 second (instead of 1 millisecond), because many calculations are expressed in seconds instead of milliseconds (ex: gravity force is -9.81 meters per seconds) so this prevents you from "/ 1000" everywhere in your actual code, it's done at the source, one time.
Usage
npm install @wmcmurray/game-loop-js
Three.js / requestAnimationFrame()
import{createGameLoop}from'@wmcmurray/game-loop-js'constmyGameLoop=function(deltaTime){// ...};// how to create a game loop with a targeted 60 FPS :constgameLoop=createGameLoop(myGameLoop,60);// how to change the targeted FPS :gameLoop.fps=144;// how to get the targeted FPS :consttargetFps=gameLoop.fps;// how to register the loop :// using three.jsrenderer.setAnimationLoop(gameLoop.loop);// -- or --// using requestAnimationFramefunctionanimate(time){gameLoop.loop(time);requestAnimationFrame(animate);}requestAnimationFrame(animate);