※[超反応についての話/Reaction.txt]の古い記述です toMUGEN ( フォント環境:MS ゴシック 標準 サイズ10 )   AIの 超反応についての話 byADI ( Momentary Reaction 瞬間の反応 ) 17:38 2009/09/22 眠い  「それらはなんら不思議でもない、   プログラム上の「処理」である。」  ※魅せ、などの話が含まれます。  ■超反応の概要  超反応、超越した反応、超人的な反応。  状態を示すと「視認からでは困難な反応速度」などを指す。  人が行う場合は、予測してしなければ、   どんなに頑張ってもワンテンポ以上遅れてしまう。  それは視認から入力に時間がかかってしまう為であり、   その反応の限界速度はおよそ0.1秒と言われている。  しかし予測をしていれば、ほぼ同時などに出すことも不可能でない。  ただし、予測が本当に有っているかどうかは別であり、   また果たして、それが反応と言えるのかどうかは微妙なところだ。  ■AIにおける超反応  AIは人間と処理が全く異なる。  AIは与えられた情報を管理し、処理フレーム毎に処理を行っている。  即ち、0が1に変化したその時に反応を起こすことが可能である。  反応の速度において、AIは人間の比にならない正確さを持つ。  なぜならば、それらはプログラム上の処理だからである。  CPUであるからこそ可能な動作であり、フレーム単位の反応、   「0F反応」「1F反応」と言ったことすら可能としている。  60Fは基本1秒で、人間は0.1秒である為最速6F。  だが、CPUは最速0F、即ち最速0秒である。  また処理が「決められた条件が一致した時」行われるように、   「超反応」を行うための条件式など無く、   あるのは「遅延処理」の為の条件式だけである。  ■反応速度の極限・0F反応  これが可能なのは、1P以外のCPU。   処理は「 1P → 2P →(3P → 4P→)その他→ 次F → P1 → 」と言った順番で行われ、   順番であればその時点での最も新しい情報を入手が可能である。  それはつまりは、そのフレーム内の先に処理を行ったものの情報を得られる、という事。  そして、1Pは最も始めに処理を行う為、そのフレーム中に起こる情報を得られない。  Helperでは得られるが、それを処理に反映させることは困難かつ危険であり、   できない、と言ったほうがいい。  だが、2Pは1Pの処理を知った上で行動を行う事が可能である。  例えば、MoveType=Aを条件に超必殺技などの始動暗転をさせると顕著になるが、   「1P側手動・2P側P2movetype=A」だと「同時に発動」させ、   「1P側P2movetype=A・2P側手動」だと「1P側が1F分遅れて」発動する。  「同時」という事は間に1Fも挟まない「0F反応」である。  人間に不可能な反応と言えるだろう。  ■超反応の威力と脅威  超反応は発生無敵の技や発生の早い技において驚異的な威力を発揮する。   相手の攻撃を無効化し、かつこちらの攻撃を与えるという極致にも至りかねない。  「魅せ」という観点からも反応速度がほぼ同じであれば、   発生の早さ・判定の強さが決定的な差となりうる為、   一方的な展開が生まれやすい、相手にチャンスを与えない、と言った問題が起きる。  技にもよるが、それらは相手を封殺しかねないほど。  また「攻略性」から考えても、超反応は難易度を極めて高めるなど、   そうした「娯楽」の観点からは極めて限定されてしまうものと言える。  稚拙な超反応は無闇な隙を生むといった弱点となりかねないこともあり、   基本では超反応をしないよう遅延処理をかけることなどが、ほぼ慣例となっている。  遅延処理などをかけることによって弱体化、調整を行い、   一方的な展開を減らす、無闇な反応を減らす、といったことを狙うことになるが、   条件式の情報はTime EnemyNear,Timeだけでなく、超低確率のRandomなどもある。 ( 超反応の確率を極めて低くする、という形だが。 )  ■遅延処理を人間的な視点から考える例  基本的に用いられる遅延処理は自身のTimeだが  「相手の動作に対しての反応」を重点として考えた場合、   使用すべきは相手のTime、EnemyNear,Time側が主となるだろう。  Timeは[待ち状態]であり、EnemyNear,Timeが[認知反応]と言える為、   どちらか、では無くどちらも数式に取り入れられれば、   「人間らしい」感じになるのだろうないだろうか。 ( しばらく待っている状態 or 相手の動作を確認して )  人間の反応の限界速度は0.1秒、約6Fである為、それ以上を目安とする。  やや早めで Time * EnemyNear,Time > 36 くらい ( 1:36 2:18 3:12 4:9 6:6 より上 )  やや遅めで Time * EnemyNear,Time >144 くらい ( 1:144 2:72 3:48 4:36 6:24 8:18 9:16 12:12 より上 )  Randomの場合、おおよそ  Random < 400 6F 95.33% 18F 99.99% 30F100.00%  Random < 100 6F 46.86% 18F 84.99% 30F 95.76%  Random < 10  6F 5.85% 18F 16.55% 30F 26.03%  Random < 1  6F 0.50% 18F 1.78% 30F 2.96%  と言った確率になるが、遅延処理としての役割を果たせるのは10辺りだろうか。  ■読みらしい行動  もしどうしても読みに近い素早い反応をさせたいのであれば、   反応とは別に、同様の動作を少ない確立で行わせるという方法もある。