ノーマル連射とシンクロ連射の違い
ノーマル連射とシンクロ連射の違いとはなにか?
そもそも、シンクロ連射とはなんなのか?
なぜ、秒間30発が最速なのか?
今回の説教はそういった連射に関する話。
ゲームにおける最小単位
よく、1/60秒を「1インター」だとか「1フレーム」だとかいいます。
これはほとんどのゲームが1/60秒を基本の最小単位として動いているからです。
「1フレーム」というのはもともとはグラフィックの枚数の単位ですが、時間の最小単位として使っている人が多いです。
以下、俺も1/60秒を「1フレーム」と表現します。
レバー・ボタンの入力をチェックし、基板内部のCPUで演算をし、結果をモニターに出力する。
以上の動作を1フレームごとに繰り返しているわけです。
ちなみに、上記の処理が1フレームで完了しなかった場合、次の1フレームに処理が持ち越されることになります。
結果として2フレームおきに動作が繰り返されることになり、ゲームの進行が遅くなります。
これが「処理落ち」といわれる現象です。
そして処理落ちを防止するために画面内に登場するキャラクターの数に制限をかけたため、本来出てくるはずのキャラが出てこないことがあります。
これが「キャラクターオーバー」といわれる現象。
なぜ秒間30発が最速なのか?
上記の通り、1フレームおきにレバー・ボタンの入力がチェックされています。
ある瞬間ボタンを押していない状態で1フレーム後に押していた状態だった場合、「ボタンが押された」と認識されます。
また、ある瞬間ボタンを押していない状態で1フレーム後もボタンを押していない状態だった場合、「ボタンが押されていない状態が続いている」と認識されます。
ここで重要なのが「1フレームおきにしかボタンの状態を見ていない」ということです。
ある瞬間「ボタンが押されていない」と認識され、次の1フレーム後も「ボタンが押されていない」と認識された場合、この1フレーム間にどれだけボタンを押していても無効になります。
逆に「ボタンが押されている」と認識された時に、すばやくボタンを離して押しなおしても次の1フレーム後にボタンが押されていたら、「押しっぱなしになっている」と判断されます。
つまり、1フレームおきの入力のチェックを無視してどれだけ高速に連射をしても意味がない、ということになります。
では、どのような入力が最速の連射となるでしょう?
「ボタンが押されていない」と認識された次の1フレーム後に「ボタンが押されている」と認識させ、また次の1フレーム後に「ボタンが押されていない」と認識させ、さらにまた次の1フレーム後に「ボタンが押されている」と認識させ、・・・。
という入力が最速となることが今までの話から分かるでしょう。
秒間30発が理論上最速なのはこういう理由によるものです。
ノーマル連射とは
ノーマル連射(「ボリューム連射」だとか「アナログ連射」だとかいういい方もします)とは、可変抵抗を用いて連続的な周波数を取り出すことのできる装置です。
可変抵抗のツマミを回すことによって、連射速度を連続的に自由に変えることができます。
ノーマル連射の長所は、手軽に連射速度を変えることができる点です。
ツマミをいじることによって、かなり幅広い周波数の中から自分の目的に合った連射速度に近いものを容易に得ることができます。
また、相性の悪いゲームがほとんどない(俺の知っている限り全くない)のも魅力的です。
逆に短所は、自分の目的に合った連射速度ちょうどを得られない点です。
ツマミを回して連射速度を調整するので、秒間30発ちょうどに正確にあわせることは不可能です。
これは、台はかりと塩を渡されて「100gちょうどに計り取れ」と言われた時に、厳密に100gを計り取ることは不可能であるということを思い浮かべてみればわかりやすいかもしれません。
また、1フレームおきの入力チェックとは無関係に高速でON/OFFを繰り返す装置なので、例えば秒間30発にちかい連射速度に合わせていた時、
「・・・、ON、OFF、ON、OFF、ON、ON、OFF、ON、OFF、ON、OFF、・・・」
というように認識される、といったいわゆる「うねり」が生じます。
シンクロ連射とは
「垂直同期信号」という秒間60回のペースで点滅している信号があります。
シンクロ連射とは、この垂直同期信号を利用しON/OFFを制御する装置です。
実際にゲーム基板から出力されているのは複合同期信号で、そこから垂直同期信号を取り出して利用することになります。
ここらへんのことは少し知識が必要なようで、実は俺はこのあたりの理論的なことはよく分かっていません。
シンクロ連射の長所は、理論上の連射が得られることです。
1フレームごとに点滅している信号を利用しているので、例えば1フレームおきの入力チェックのたびに「ON、OFF、ON、OFF、・・・」となるような出力を得ることが可能です。
逆に短所は、それほど手軽には連射速度を変えられない点です。
これは装置(回路)の設計によりますが、連射速度を変えることを意識して回路を作った場合、装置が大掛かりになりがちです。
また、相性の悪いゲームが存在します。
知識のない俺には理由はよく分かりませんが、ハード的な問題(基板のつくりとか)などでシンクロ連射が安定動作しないゲームがあります。
プログラム上の問題でシンクロ連射が最速にならない場合もあります。
ボタンを押した直後2フレーム間はボタンの入力を受け付けないようにプログラムされていた場合、秒間30発が最速にはなりません。
ノーマル連射が連続的に周波数を変えることができるのに対し、シンクロ連射は1フレーム単位でON/OFFを制御します。
なので、「ノーマル連射→アナログ、シンクロ連射→デジタル」というイメージを持てばよいでしょう。
シンクロ連射いろいろ
一言に「垂直同期信号から信号を取って・・・」といっても、どのようにON/OFFを制御するかによって様々な種類のシンクロ連射があります。
秒間30発のシンクロ連射
一番オーソドックスなシンクロ連射で、単に「シンクロ連射」といえばこれを指すことが多いです。
垂直同期信号の周期を半分にし、1フレームおきにON/OFFを繰り返す連射装置です。
理論上、最速の連射です。
秒間15発のシンクロ連射
上の秒間30発のシンクロ連射の周期をさらに半分にし、2フレームおきにON/OFFを繰り返す連射装置です。
処理落ちした時に秒間30発では全く連射がきかなくなることがあります。
そのときに理論上最速となるのが秒間15発のシンクロ連射です。
交互シンクロ連射
出力が2つあり、それぞれが交互に秒間30発の連射を繰り返す装置です。
AボタンとBボタンにそれぞれつないだ場合、1フレームおきに次のような動作をします。
A:ON 、OFF、ON 、OFF、ON 、OFF、ON 、・・・
B:OFF、ON 、OFF、ON 、OFF、ON 、OFF、・・・
2つある出力のうち、片方だけを利用すれば普通の秒間30発のシンクロ連射として利用できます。
AボタンでもBボタンでもショットが撃てるシューティングの場合、Aボタンに秒間30発のシンクロ連射をつけていただけだと連射速度は秒間30発です。
ここで交互シンクロ連射を使いAボタンとBボタンの交互連射にすると、1フレームおきに「A:ON、B:OFF」と「A:OFF、B:ON」が繰り返されます。
1フレームおきに「AがON→BがON→AがON→BがON→・・・」となるので、結果的に秒間60発の連射を得ることができます。
また、格闘ゲームにおいて硬直が解けた時に弱パンチのシンクロ連射(秒間30発)を押していた場合、硬直が解けた瞬間にボタンがONになっていれば硬直が解けた瞬間に技が出ます。
しかし硬直が解けた瞬間にボタンがOFFになっていれば、硬直が解けた瞬間には技が出ず1フレーム遅れて技が出ることになります。
ここで交互シンクロ連射を用い弱パンチと弱キックの交互連射にしておくと、硬直が解けた瞬間にどちらかが必ずONになっているので硬直が解けた瞬間にどちらかの技が必ず出ます。
遅めのシンクロ連射
ゲームの目的により、少し遅いが1フレームおきにON/OFFを制御したいという場合に使います。
バトルガレッガ(難易度調整のため遅めの正確な連射が必要)やゲーム天国(なぜか秒間20発が最速)を思い浮かべてみれば分かりやすいでしょう。
1フレームおきに「ON、OFF、OFF、ON、OFF、OFF、・・・」と動作させた場合、秒間20発となります。
まとめ
ここまでいろいろ書いてきましたが、「よく分からなかった」という人もいるかもしれません。
なので、押さえておいてほしいポイントを挙げておくと、
○1フレーム(1/60秒)おきにレバー・ボタンの入力チェックをしている
○よって、秒間30発が理論上最速の連射
○ノーマル連射は1フレームおきの入力チェックとは無関係に高速でON/OFFを繰り返す連射装置で、連射速度を連続的に変えられるが、理論上の最速(秒間30発ちょうど)にはならない
○シンクロ連射は1フレームおきにON/OFFを制御する連射装置で、理論上の最速(秒間30発ちょうど)の連射を得ることが可能
この4つ(特に1番目)は把握しておいてほしいところです。