FPSが30以下の場合
Posted: 2013年9月08日(日) 18:20
おかげさまで現在ゲームを作っております。問題発生です。
ゲーム制作の上で必ず問題になるのが「FPS」ですが、ちょっと懸念すべきことが。
Dixqさんのサイトや他の大量のサイトでもFPSに関する解説はたくさんあり、それで
解決できているつもりでいました。
しかし、ちょっと考えてみました。このようなサンプルでは、FPSを制御するために
待機時間を計算し、Sleep関数などで待機させています。
ということは、例えば60FPSで動作させたいときに、ユーザーが70FPSで操作しようとすると
上手く60FPSに抑えられると思うのです。つまり、60FPSユーザーよりも
早く画面処理が進んでしまう事態を抑えられているわけです。
しかし、例えばユーザーが故意に30FPSで動作させようとしたときはどうなるのでしょう?
さまざまなサンプルでは抑える処理はしていますが早める処理はしていません。
つまり、60FPSユーザーよりもゲーム進行速度が半分になってしまうのでは?と考えました。
LAN対戦など厳密な時間が要求されるゲームで、相手が自分よりゆっくり操作して
いわゆる「チート」を行われては不公平甚だしいです。
これを抑制するためには、30FPSユーザーには画面更新は半分に、つまり
ところどころフレーム落ちが発生してしまうが、1秒間に移動する距離は同じ、ということに
せざるを得ないと思うのです。
しかし、このような説明をされているサイトなどにいまだ出会えておりません。
そもそも、このような事態は本当に起こりうるのでしょうか?
乱文失礼しました。ご存知の方いらっしゃいましたらご教示ください。
ゲーム制作の上で必ず問題になるのが「FPS」ですが、ちょっと懸念すべきことが。
Dixqさんのサイトや他の大量のサイトでもFPSに関する解説はたくさんあり、それで
解決できているつもりでいました。
しかし、ちょっと考えてみました。このようなサンプルでは、FPSを制御するために
待機時間を計算し、Sleep関数などで待機させています。
ということは、例えば60FPSで動作させたいときに、ユーザーが70FPSで操作しようとすると
上手く60FPSに抑えられると思うのです。つまり、60FPSユーザーよりも
早く画面処理が進んでしまう事態を抑えられているわけです。
しかし、例えばユーザーが故意に30FPSで動作させようとしたときはどうなるのでしょう?
さまざまなサンプルでは抑える処理はしていますが早める処理はしていません。
つまり、60FPSユーザーよりもゲーム進行速度が半分になってしまうのでは?と考えました。
LAN対戦など厳密な時間が要求されるゲームで、相手が自分よりゆっくり操作して
いわゆる「チート」を行われては不公平甚だしいです。
これを抑制するためには、30FPSユーザーには画面更新は半分に、つまり
ところどころフレーム落ちが発生してしまうが、1秒間に移動する距離は同じ、ということに
せざるを得ないと思うのです。
しかし、このような説明をされているサイトなどにいまだ出会えておりません。
そもそも、このような事態は本当に起こりうるのでしょうか?
乱文失礼しました。ご存知の方いらっしゃいましたらご教示ください。