アカウント名:
パスワード:
そもそも15FPSはどこの話なのかが問題。描画処理の話しなら入力とは別だから全く無関係。mainループが15FPSになるように調整しているなら関係してくるが。例えば昔のPCゲームとかするとFPS限界を設定してないのがあったりして、PCスペックの限界までFPSが上がってしまうのがある。200FPSとかでたりで。で、そういうゲームにFPSリミットをかけて60FPSにしたからって内部的には処理速度が大幅に余裕があるので制限掛ける前の200FPSで回ってたりする。ただ、描画部分だけは60FPSで回るように同期をとって表示するだけで。
ついでに必ずしも入力待ちをしている時に入力をするといったこともないので連打は早ければ早いだけ良い。
ハードウェアが固定のゲーム機だと、メインループの周期をVSYNCに合わせると言うのは一般的です。
ただ、たとえばメインループが16msで回っていても、I/O監視が16msかということはそんなことはなく、もっと高速な周期の割りこみで監視する(チャタリング除去とか、反応時間が短くてこの周期では拾えないとか言う時のために)というのもよくやる実装でしたから、「メインループが30fpsだからON/OFF判定で原理的に15ショット/sしか読めない」ことはないかと思います。
高橋さんが言ってるスターソルジャー以降の実装ではそういうことをやってたんじゃないでしょうか。
ファミコンがどうなっていたかは知らないけど、>「メインループが30fpsだからON/OFF判定で原理的に15ショット/sしか読めない」>ことはないかと思います。
ほかの実装がどうなっていたか分からないと、こんな判断はできませんね。ON/OFFがキューに入って溜まっているなら、読みにいくタイミングで何回ON/OFFがあったかまで検出できるけど、ON/OFFのフラグだけなら、1回の読み込みでON/OFFどちらかしか検出できないから、15ショット/sしかできないでしょ。# 16msって、どこから出て来たんだ?
ファミコンのボタン検知程度でキューなんか作らないよねぇ常識的に考えて。
チャタリング除去まで考えた上で、単純にVSYNCごとに状態読み込みしていました。チャタリングの持続時間が最大数ミリ秒とのことなので、16msの間隔で読めば影響をなくすことができます。あと、キューに入れたらリアルタイム性が損なわれます。必要となるのは、先行入力が可能となった対戦格闘ゲームからではないでしょうか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
サンプリングの問題 (スコア:2)
必要なのは正確さで、ちょっとでもタイミングがずれると抜けが出ますし、秒間16連射とか秒間17連射だとどんなに正確でも同期が取れなくなって所々抜けます。
そういう抜けが出ないような、16回押したら16回と認識されるような実装を作り込んだという制作秘話が面白そうです。
Re: (スコア:2, 興味深い)
そもそも15FPSはどこの話なのかが問題。
描画処理の話しなら入力とは別だから全く無関係。
mainループが15FPSになるように調整しているなら関係してくるが。
例えば昔のPCゲームとかするとFPS限界を設定してないのがあったりして、PCスペックの限界までFPSが上がってしまうのがある。
200FPSとかでたりで。
で、そういうゲームにFPSリミットをかけて60FPSにしたからって内部的には処理速度が大幅に余裕があるので制限掛ける前の200FPSで回ってたりする。
ただ、描画部分だけは60FPSで回るように同期をとって表示するだけで。
ついでに必ずしも入力待ちをしている時に入力をするといったこともないので
連打は早ければ早いだけ良い。
Re: (スコア:2, 参考になる)
ハードウェアが固定のゲーム機だと、メインループの周期をVSYNCに合わせると言うのは一般的です。
ただ、たとえばメインループが16msで回っていても、I/O監視が16msかということはそんなことはなく、
もっと高速な周期の割りこみで監視する(チャタリング除去とか、反応時間が短くてこの周期では拾えないとか言う時のために)
というのもよくやる実装でしたから、
「メインループが30fpsだからON/OFF判定で原理的に15ショット/sしか読めない」
ことはないかと思います。
高橋さんが言ってるスターソルジャー以降の実装ではそういうことをやってたんじゃないでしょうか。
Re: (スコア:0)
ファミコンがどうなっていたかは知らないけど、
>「メインループが30fpsだからON/OFF判定で原理的に15ショット/sしか読めない」
>ことはないかと思います。
ほかの実装がどうなっていたか分からないと、こんな判断はできませんね。
ON/OFFがキューに入って溜まっているなら、読みにいくタイミングで何回ON/OFFがあったかまで検出できるけど、
ON/OFFのフラグだけなら、1回の読み込みでON/OFFどちらかしか検出できないから、15ショット/sしかできないでしょ。
# 16msって、どこから出て来たんだ?
Re: (スコア:0)
ファミコンのボタン検知程度でキューなんか作らないよねぇ常識的に考えて。
Re:サンプリングの問題 (スコア:2)
チャタリング除去まで考えた上で、単純にVSYNCごとに状態読み込みしていました。
チャタリングの持続時間が最大数ミリ秒とのことなので、16msの間隔で読めば影響をなくすことができます。
あと、キューに入れたらリアルタイム性が損なわれます。必要となるのは、先行入力が可能となった対戦格闘ゲームからではないでしょうか。