当記事ではrequestAnimationFrameにフォーカスし、ブラウザゲームを開発する際に必要なフレームスキップ処理について紹介する。
requestAnimationFrameとsetInterval, setTimeoutは何が違うのか?
requestAnimationFrame
とsetInterval
setTimeout
には明確な違いがある。requestAnimationFrame
はブラウザの状態により実行間隔を自動で調整してくれるのに対し、setInterval
setTimeout
は時間どおりに実行するため、処理がすべて終わる前に次の処理が実行されてしまう。そのため、ブラウザゲーム開発ではrequestAnimationFrameを使うことが多い。
ただ、わざとブラウザに負荷をかけたりバックグラウンドで実行させたりすると、描画を遅らせることができてしまう。このような処理落ちはゲームバランスを壊す要因になりうるため、フレームスキップ処理の実装が必要になってくる。
ということで、今回は処理落ちしたときにフレームスキップする方法を紹介する。