忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

FPS制御 ~概要編2~

ども、こんにちわ~

いよいよ寒くなってきましたね~

今年二度目のにわか風邪を引いているZAKIです

何やら連続記事投稿記録が伸びているようですね

記録を伸ばすためにも、みんながんがん投稿しちゃってください


さて、今回のテーマは「FPS制御 ~概要編2~」です

2(ツー)です2(ツー)。

前回はFPSの動機について話しましたが、今回は仕組みについてです

そんなもんいいから、ソースみせれ!って人はこちらへどうぞ

さて、それではどうやったら1秒間のフレーム数を固定にできるのか

答えは簡単、1フレームにかける時間を一定にすればいいんです

1秒間に60フレーム(FPS:60)処理するとしましょう

そうすると、1フレームにかける時間は

1秒 ÷ 60回 = 0.0166666......秒

ミリ秒単位に直すと約16秒。

1フレームは最大約16ミリ秒かかればいいのです

じゃあ、16ミリ秒まてばいいかというと、そうでもないんです

ゲームでキャラを動かしたり、描画したりする時間も含めないと、

? ミリ秒(描画などの処理時間) + 16ミリ秒(待ち時間) = 16 +? ミリ秒

という感じで待ちすぎてしまいます

なので、処理した時間を測って、その分引いてやる必要があるんです

処理時間を計るにはどうすればいいでしょう

普通、時間を計る時には前の時刻と今の時刻を引き算しますよね?

プログラムでも同じで処理開始時間と処理終了時間を引き算してやればいいのです

開始時間が90で終了時間が100だとすると

16ミリ秒(待ち時間) - {100(終了時間) - 90(開始時間)} = 16ミリ秒 - 10ミリ秒(処理時間)

                                         = 6ミリ秒

となり、この場合は次のフレームまで6ミリ秒待ってやればいいのです

この処理を毎回行うことで1秒間のフレーム数を固定することが出来ます

もし、答えがマイナスになったときは、

処理時間のみで1フレームの最大時間を越えたことになるので、

待つ必要がありません

ただ、その時の対処法が二つありまして、(僕が知る限りなのですが
  • そのまますぐに次のフレームの処理を始める場合
  • 描画処理の部分を飛ばして次のフレームの処理を始める場合
の二つがあります。

前者の場合は1フレームの時間が増えて、処理する回数が減るため、スローモーションのような状態になります

これを「処理落ち」と言います

後者の場合は描画を処理する負担が減るので、ほとんどの場合で1フレームの時間内に次のフレームに移れますが、

描画回数が減るので、画面には瞬間移動のように映ります

これを「コマ落ち」といいます。

格闘ゲームなど見た目のタイミング等が重要な場合は前者が向いているでしょうし、

3Dゲームなど描画部分に強い負担がかかる場合には後者が向いているんじゃないでしょうか

どちらがよいかはゲーム内容によって変わるので、一概には言えないですね


長々と説明してきましたが、これが一連の処理の流れになります

ほんとになっがいww

文章のデコレーションで死に掛けました

次回はいよいよプログラムの解説へはいっていきたいと思います

それでは今回はこの辺で。

あでゅーノシ

 

拍手[0回]

PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

よくやった

  • by Ekiya
  • 2007/11/16(Fri)00:28
  • Edit
デコレーションおつかれw

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]