スクリプト/コツ/フレームスキップスクリプト(履歴ID:146)
最終投稿者: aoihikawa
更新:2011/12/22 14:26:13
フレームスキップスクリプト
(ご自由にご利用ください)
------------------------------
指定されたメイン処理実行タイミングより
処理が重くなった場合
描画回数を1/2にするスクリプトです。
------------------------------
ご意見やご質問などありましたら
こちらのブログ記事まで。
(ご自由にご利用ください)
------------------------------
指定されたメイン処理実行タイミングより
処理が重くなった場合
描画回数を1/2にするスクリプトです。
------------------------------
#----- 変数の設定 ----- fps = 0 fpscount = 0 oldfpstime = 0 draw_setting = 50 #ゲームのメイン処理実行タイミングを設定(ミリ秒) draw_count = 0 olddrawtime = 0 draw_flg = false setBaseTime() #時間計測の開始 startInput() #入力受付の開始 #----- ゲームのメインループスタート ----- mainloop = true while mainloop #----- FPSの計測と判定 ----- timer = getTime() #差分の時間を取得 fps = fps + 1 #FPSのカウント fpscount = timer - oldfpstime if fpscount < (draw_setting * fps) draw_flg = true #最低限のFPSを満たしている場合描画OK else #最低限のFPSを満たしていない場合、前回描画したかどうか if draw_flg draw_flg = false else draw_flg = true end end if fpscount > 999 #1秒を超えたらFPSのカウントをリセットする fps = 0 oldfpstime = timer fpscount = fpscount % 1000 end #----- ゲームのメイン処理実行判定 ----- draw_count = timer - olddrawtime #メイン処理実行タイミングのカウント if draw_setting < draw_count #ゲームのメイン処理実行タイミングになっていたら、カウントをリセットする olddrawtime = timer draw_count = draw_count % draw_setting #キー入力の判定 while hasInput() takeInput() #----- キー入力の判定処理を入れる場所 ----- end end #----- ゲームのメイン処理を入れる場所 ----- #(ゲームの終了時はmainloopをfalseに) if draw_flg drawCanvas() #描画OKならキャンバスを更新 end else waitTime(1) #ゲームのメイン処理実行タイミングになるまで保留 end end endInput() #入力受付の終了
ご意見やご質問などありましたら
こちらのブログ記事まで。