受け身

受け身とは格闘技の用語であり、投げられて床や地面に倒れる際などのダメージを軽減するために行う動作である。
ここから転じて、格ゲーにおいては、「本来ならダウンする状況においてダウンしないようにする」ための行動を指す。
「受身」と書くこともあるが、どちらでも特に問題はないだろう。また、「ダウン回避」という呼び方もある。
海外でも「Ukemi」で通っている。

格ゲーでは起き攻めが伝統的に強く、相手のダウンを奪うことが重要視されてきた。
だが、起き攻めが強力なキャラに仕掛けられると、一度ダウンすると再び転ばされ、
そこから起き攻めがループする事態になり、どうにもならなくなってしまうことがある。
そこで、ダウンを回避する手段が取り入れられ始めた。
これにより攻撃している側には「受身を取らないと読んでさらにコンボを続ける」「受け身を取ることを読んで受身狩り」という選択肢が、
攻撃されている側には「受身を取る」「あえて受け身を取らずに相手の受身狩りを空振らせる」という選択肢が発生することになり、
受身を巡って今までに無い新しい駆け引きが生まれた。

また、『Eternal Fighter Zero』を始めとする黄昏フロンティア製作の格闘ゲームでは共通の仕様として、
「受身可能時間中は無敵」というものがあるために受身可能なコンボを繋ぐという選択肢が存在しない。
そのためコンボ〆の代わりに受身狩りを行うということがよく行われる。
しかしこのゲームは強力な起き攻めが多いため、ダウンすることを嫌って受身を取ることも選択肢として一応成立している。

なお似たようなシステムに移動起き上がりやダウン中専用の必殺技等がある。
現在の格ゲーでは、主に地上受け身と空中受け身の二種類がある。

地上受け身

ダウンする寸前に地上で受け身を取る。ゲームによっては単にダウン回避と呼ばれるだけのことも多い。
通常のダウンから起き上がりのプロセス、「吹き飛び>地面に激突(>バウンド>ダウン状態)>起き上がり動作>ニュートラル」における、
()内の部分を省略して立ち上がる分素早くニュートラルに復帰することができ、相手の起き攻めの猶予を短くすることができる。
主に地上戦を重視した格闘ゲームによく見られるシステムだが、
一部ゲームのダウン時間短縮系統のシステム(『北斗の拳』や『ストIII』のクイックスタンディングなど)も、
見た目こそ違えど内部処理的にもこちらに近いことも多いため、事実上このシステムを実装しているゲームの数は結構多い。
後述の空中受け身と比較すると、地上付近まで落ちてからでないと使えないこと、
状況的に元々追撃を回避するよりも起き攻めを未然に防ぐ意味合いの方が強い
(そもそも地上戦主体のゲームは吹き飛び~ダウンに追い打ちは元々入らないことも多い)ことなどのため、
動作自体に隙がある例は少ないが、読まれていれば結局攻撃側がタイミングを変えることで通常の起き攻めと同じ攻めが通じてしまう。
コモンステートにも地上受け身用のステートが準備されているが、
これもこの記述をそのまま使うと受身動作中完全無敵が持続し、隙は全くできない
そのため、ダウン回避狩りなどの行動は全く意味を成さないので、終わり際を狙った二択攻めなどをする必要がある。

空中受け身

空中吹き飛びの最中に受け身を取る。主にコンボゲーで見られ、相手の空中コンボを回避するためという目的もある。
ゲームによってはダメージ重視のコンボ、ダウン重視のコンボと使い分けをされることも多い。
昔のゲームは空中コンボが存在しなかったため、空中受け身が搭載されていないことがあり、
そういった性能のキャラとコンボゲーのキャラがMUGENで戦うと、空中コンボで永久などのそれは酷い地獄絵図が展開されることもある。
ただしMUGENのコモンステートには空中受身の記述があるので、コモンステートを利用しているキャラならば受身は取れる。
なおコモンステートをそのまま利用すると、受身開始から15Fの完全無敵が付き、5Fの間無防備な状態になった後ctrlが戻る
また無敵の持続中に着地した場合、無敵が持続したまま52番ステートの着地処理が行われる。

ちなみにMUGENでは受身を取る際に受身可能かどうかを判断するフラグとしてCanRecoverが存在するが、
MUGENのデフォルト空中受身の記述はこれ以外にも、
y方向の速度(上昇中は受け身を取れない)や地面からの高さに関する条件(地上付近では地上受身が優先される)が存在するため、
CanRecoverフラグが立っていても受身が取れないということがあるので注意。
実際に空中受身のある格闘ゲームでy方向の速度に制限されるような例は少ないため、
再現キャラではCanRecoverフラグのみで判断していることも多い。
+ ここで問題になるのが
ここで問題になるのが、知らないと上昇中受け身不可を前提とした記述で打ち上げ攻撃を作ってしまうことである。
CanRecoverフラグまでの猶予を設定するfall.recovertimeという項目があり、
KFMでもしっかり使われているのだが、一部fall.recover = 0(受け身不可)の方で設定してfall.recovertimeを省略している技もあり、
こちらを参考にキャラを作成してしまうと記述を忘れたままになりやすい。

新MUGENではコモンステートでもy方向の速度、地面からの高さ共に各キャラ毎に設定するようになっているため、
攻撃側が受け身不能のコントロールをするにはCanRecoverフラグの管理が必須となっている。

逆に一部のキャラはCanRecoverフラグを無視して地上・空中受身可能になっているため、一種の喰らい抜けとして機能してしまうこともある
(JIN氏やアフロン氏製作の『KOF』仕様準拠キャラなど)。
ただし、CanRecoverとは空中受け身の可否の判断として捉えることもでき、
『KOF』のような「ダウン回避」の可否とはは別の物と捉えることもできる。
とは言うものの、上の例で上がっているJIN氏やアフロン氏製作の『KOF』仕様準拠キャラなどは
デフォルトのコモンで規定されている高さよりも高い位置で地上ダウン回避ができるため空中受け身のようになり、
実質的に喰らい抜けとなってしまう。
これは、AIによっても差が出てくるものであり、
空中でダウン回避可能になった瞬間ダウン回避を行うAIの対戦では、同じKOF系統同士の対戦でもコンボが繋がらないことが生じる。

このような場合は受身のトリガーにきちんとCanRecoverを入れてやるか、攻撃側でステートを奪って無理やり受け身不能にする、
技の属性をfallではなくtripにするといった方法がある
(CanRecoverフラグを受身条件にとらない場合、fall状態ならいつでも受身できるようにしている場合が多いためtripだと受身が取れない)。
ただtrip属性の技からコンボしようとした場合はMUGENの仕様上強制的にtrip補正が掛かってしまうため、
原作再現キャラや火力がただでさえ低いキャラには採用しづらい側面もある。
一応trip補正を無効化するような処理も組めなくはないのだが、
DefenceMulSetが作動している相手はTrip補正がかからないため、本来よりもダメージが上がってしまう。
またtripを前提にした火力にすると、タッグ戦での拾いで相方のダメージとの間に齟齬が生じる。
これらの事情から、tripによる制御はかなり難しい。

+ 受け身の条件設定とCanRecoverフラグについてのもうちょっと突っ込んだ所と、お勧めの受け身の仕様の話
MUGENの受け身可否条件フラグとしては上述の通りCanRecopverというものがあるのであるが、
このCanRecover自体の判定はどうなっているのかというと、これが実は二つの条件を参照している。

具体的には、食らった攻撃のhitdefパラメーターを参照し、
  1. fall.recover = 1である
  2. fall.recovertimeの数値分の時間が経過した
の二つの条件が成立した時、CanRecover = 1 と判定される。

1の条件は言うまでもなくhitdefで完全に固定されているので、攻撃側がfall.recover=0を設定していた場合は、
やられ側がCanRecoverフラグを無視した受け身を自作し搭載していない限りは受け身は取れない。
2の方は「攻撃ヒットから何フレーム経過したら受け身が取れるようにするか」という条件設定であるのだが、
攻撃側がこちらを極端に大きい数値(例えば9999(約3分)など)に設定することによっても実質受け身不可能にすることができる。

受け身条件に関するフラグ(トリガー)には実は他にも、
GetHitVar(fall.recover)とGetHitVar(fall.recovertime)というものもあり、これは前者が攻撃側hitdefのfall.recover設定が1であるかどうか、
後者が攻撃側が設定したfall.recovertimeが経過するまであと何フレームか、というトリガーである。
つまり、
trigger1 = CanRecover = 1
はGetHitVarを使って、
trigger1 = GetHitVar(fall.recover) = 1
trigger1 = GetHitVar(fall.recovertime) < 0
と記述しても同じ意味になる(一行にしてtrigger1 = (GetHitVar(fall.reocover)=1) && (GetHitVar(fall.recovertime)<0) と書いてもいい)。

MUGENのデフォルト(common1.cns)での受け身の条件記述はファイルのstatedef 5050(吹き飛びの落下中)の中にあり、
[State 5050, 4] ;Recover near ground
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5200 ;HITFALL_RECOVER

[State 5050, 5]; Recover in mid air
type = ChangeState
triggerall = Vel Y > -1
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5210 ;HITFALL_AIRRECOVER
とあるのがそれである。
5050, 4がnear groundつまり地上受け身の成立分岐条件、5050, 5がin mid airつまり空中受け身の条件であるが、
基本的な条件はどちらも上記のCanRecoverを満たしてコマンド"recovery"を入力であり、
単に地面(Pos Y >= -20)まで落下しているかどうかで地上と空中が分かれているのみに過ぎない。

ところで、ここで一つ問題がある。
MUGENでキャラ製作をしていると、特に『ストリートファイター』系や『KOF』など、
地上戦主体の(元々空中受け身が無い)ゲームのキャラを作ろうとしている場合などに、
技の性能として「浮かせてから落下するまでの間に空中受け身を取られたくないが、しかしダウン回避(地上受け身)は取らせたい」
ということは非常に非常に非常に非常に多い、というより当たり前に必要になってくる仕様なのであるが、
デフォルトのcommon1の条件記述では地上受け身と空中受け身の可否条件が共用であるため、
地上受け身が可能=高さが足りていれば空中受け身が取れる(空中受け身になる)であり、
逆に空中受け身が不可能=地上受け身も不可能であるのでこの仕様を作ることができないのである。
そこで、往年の『CVS』や『KOF』、『アカツキ電光戦記』のキャラなどでは、
  1. 基本全ての攻撃のhitdefをfall.recover=0に設定して受け身自体を完封する
  2. 自分はCanRecover条件を参照しない、地上付近まで落ちれば無条件に実行可能な自作の地上受け身を取る
ことで「空中受け身は取れないが、地上受け身は取れる」状態を作り出すことがしばしば行われた(というか今でもその仕様で作られているキャラは多い)。

これはそのように設定してあるキャラ同士のコンプゲーとしてであれば問題は無いのだが、
全ての攻撃をCanRecover=0(受け身不可)に設定しているということは、CanRecover無視の受け身を搭載していない、
即ちデフォルト条件の受け身しか搭載していない一般キャラは全く受け身ができなくなってしまうこと、
また、逆に自分はCanRecover無視の受け身を取ることによって他のキャラがこれらのキャラに対して、
hitdefでCamRecover=0を設定しても受け身を取れてしまうため、これによって「受け身不可能の攻撃」を行うことができない
(ステート奪取を使えばできなくはないが、バーストのような本来食らい時に使用できるはずのやられ側のシステムを封印してしまう別の問題は生じる)、
などの問題があり、実質的に受け身の存在自体が有名無実化してしまう所があった。
そこでもう少しこれを改良し、かつ簡易化したのが先ほどのCanRecoverの二条件参照を利用した方法で、
common1の地上受け身条件記述(state 5050, 4)を以下のように改変するものである。
[State 5050, 4] ;Recover near ground
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive
triggerall = GetHitVar(fall.recover) = 1
trigger1 = Command = "recovery"
value = 5200 ;HITFALL_RECOVER

これに対して、攻撃側はhitdefのfall.recovertimeの設定を9999や99999といった極端に大きな数値に設定することで、
その攻撃を「空中で受け身を取られないが、地上受け身は取られる」ように設定することができる。
本来であればCanRecover = 1を条件にしている所をGetHitVar(fall.recover) = 1とすることで、
hitdefが受け身を許可しているかどうかだけを参照しfall.recovertimeのみを無視するのだが、地上受け身のみをこの条件にすることで、
地上付近で地上受け身が可能な高度では地上受け身に移行するが、空中ではfall.recovertimeの条件の影響を受けるため受け身ができないままとなるのである。
これも従来の方法と同様、やられる側が攻撃側に対応するつもりでcommon1から受け身を改変していなければならないというのは変わっていないのだが、
改変する箇所が非常に少なく簡単に済むということと、hitdefでfall.recover=0(受け身不可)としている攻撃には普通に地上受け身も不可能になるので、
受け身を取れてほしくない攻撃に対しても受け身が取れてしまうということが起きない、という点が優れている。

細かいことを言えば「空中受け身は取れるが地上受け身は取れない」攻撃などは対応外であるし、
fall.recovertimeに関係なく地上に近ければすぐに受け身が取れるので、
「高所で追撃すれば受け身が取れるが、低空で追撃すると受け身可能になる前に地面に到達して受け身不能になる」
などの仕様も対象外だが、どちらも理論上想定はできるがかなりレアケースというか実際原作再現の分野でも遭遇するものかどうかよく分からないので、
普通はあまり気にしなくてもいいであろう。

現状ではdataフォルダ内のcommon1をそのまま使用するキャラというのは殆どおらず、
キャラごとに自前のcommonファイルを持った上でリアクション(やられ)系の挙動に関しても多少の改変が加わっているケースも多いため、
導入済みのキャラ全てにこの仕様を適用するのは少々骨だとは思われるが、
これから新たにキャラを製作する場合には採用を検討してみてはいかがであろうか。


関連項目



最終更新:2023年07月19日 12:57