補正


格闘ゲーム全般において、何らかの数値が増減するシステムの総称。
その多くはコンボ、特にコンボのダメージ(火力)に関するもので、
コンボができる経験者とできない初心者との格差を埋めるべく導入された。
多くの場合、 自分が有利になるほど数値上では不利な扱いを受ける。

またこれが転じて、設定上の本来の能力をゲーム用に調整する格ゲー補正というものもある。
こちらは該当項目を参照。




補正の例

ダメージ補正

ヒット数によるダメージ補正

攻撃のヒット数に応じてダメージにかかる補正。「コンボ補正」とも。
ほとんどの場合、ヒット数が増えるにしたがってダメージは減る。

体力によるダメージ補正

自分もしくは相手の体力に応じてダメージにかかる補正。
根性値」(ないし「逆根性値」)と同一。詳細は当該項目にて。

キャンセルによるダメージ補正

特定の技を特定の技でキャンセルした際にかかる補正。
  • THE KING OF FIGHTERS』シリーズや『ストリートファイターIII』の「スーパーキャンセル」
  • GUILTY GEAR』シリーズの「基底ダメージ補正」
  • MELTY BLOOD』シリーズの「リバースビート」「A連打補正」
などがこれに分類される。

相手の状態によるダメージ補正

相手がダウンしている時や空中に浮いている時などにかかる補正。


ノックバック補正

ヒット数に応じて自分や相手のノックバック速度にかかる補正。
多くの場合、ヒット数が多くなるほどノックバックが大きくなり、
より長い時間コンボを続けるのが難しくなる。




MUGENにおける補正

攻撃側で設定される補正

AttackMulSet

ステートとトリガー次第で自由に攻撃力の増減を設定可能。
ほとんどのダメージ補正はこれを使って再現されている。
以下は「コンボ補正」を設定した例。
[State -2,AttackMulSet]
Type = AttackMulSet
TriggerAll = NumEnemy
TriggerAll = Alive
Trigger1 = Enemy,GetHitVar(HitCount) < 50
Value = 0.50+(0.50-(Enemy,GetHitVar(HitCount)*0.01))

[State -2,AttackMulSet]
Type = AttackMulSet
TriggerAll = NumEnemy
TriggerAll = Alive
Trigger1 = Enemy,GetHitVar(HitCount) >= 50
Value = 0.50

;GetHitVar(HitCount)は相手のMoveTypeがHではなくなった後も値が0にならないので、
;始動については別個に設定してやらないとコンボの始動技にもヒット数による補正がかかってしまう。
[State -2,AttackMulSet]
Type = AttackMulSet
TriggerAll = NumEnemy
TriggerAll = Alive
Trigger1 = p2MoveType!= H
Trigger2 = p2StateNo = [150,155]
Value = 1.0

しかし仕様に若干のクセがあり
  • targetlifeaddには適用されない。
  • ガード時の削りダメージには適用されない。
  • hitdefコントローラが実行されたときにかかっていた補正が、hitdefが上書きされるまでそのままかかり続ける。
  • projectileでもhitdefと同様最初に適用された補正がかかり続ける。またprojectileの特性上上書きもできない。
  • 本体とhelperでは別個に処理される。helperの攻撃に補正をかけたければhelperのステートでattackmulsetを実行する必要あり。
  • 同一フレームで複数回実行しても最初に適用された補正だけがかかり、乗算、加算、上書きなどは行われない。本体とhelperで別々に設定することは可能。
  • helperからprojectileを出した場合、projectile自体は本体管理になるがattackmulsetに関してはhelperにかかっている値が適用される。
攻撃力を一律で変動させられるのは便利だが、各攻撃の個別管理ができないため特定の攻撃にだけ補正をかけるということができない。
また投げには補正をかけられないという致命的な問題があるので、
変数を使ってdamageやtargetlifeaddの値に直接倍率をかけておいた方が融通が利く。
またdisplayclipboardで直接倍率を確認できるので、挙動を把握しやすいという利点もある。

Ground.Velocity(Air.Velocity)

ステートコントローラー「HitDef」内で設定可能。
相手のノックバックの初速度を決定する。ヒット数を値の式に使えばノックバック補正が再現可能。
ただし決められるのは初速度のみで、地上を滑っていく相手のx軸方向の加速度は、相手のStand.Friction(Crouch.Friction)依存になる。
なお相手が浮いている場合、ステートを奪うなどしない限りx軸方向の加速度は発生しない。y軸方向の加速度は以下のYaccelで設定できる。

Yaccel

ステートコントローラー「HitDef」内で設定可能。
攻撃によって相手のphysicsがAになったとき(y方向のvelocityを付けたとき、または空中くらい)の相手のy軸方向の加速度を決定する。
値を変動させることでキャラクターによってはコンボが続けにくくなり、補正として機能する。
パラメータを指定しなかった場合、0.35と指定したものとして扱われる。
ちなみに再現できるのは等加速度運動のみ。加速度を変動させたいときはステートを奪うしかない。

Fall.RecoverTime

ステートコントローラー「HitDef」内で設定可能。
攻撃ヒット時の受身不能時間を設定する。パラメーターを値の式にすることで受身不能時間の補正を再現可能。
ただしこの受身不能時間はPauseTime(所謂ヒットストップ)も含むため、
補正を組む際はPauseTime+受身不能時間算出式という形でパラメーターを設定するとよい。
ただし受身不能時間とは言うものの、kfmに存在する受身条件はRecoverTime以外にも存在するため、
この受身条件をそのまま使っていると受身可能なのに受身が取れないという事態が起こることも。
逆に悪咲氏のCVS2仕様キャラやアフロン氏およびJin氏の一部KOFキャラなどRecoverTimeを無視して受身を取るキャラや
レトロゲー仕様キャラを中心にそもそも受身を持っていないというケースも存在する。
ただし受身を持っていないケースの場合、受身可能時は攻撃側でHitDefそのものを発生させない、
或いは防御側でNotHitByを実行するといった対策を行なっているキャラも存在する。
(前者は黄昏フロンティア製ゲームの仕様を再現したキャラ、
後者はrei氏制作のスパ4仕様リュウ、DHQ氏改変のエルザ・ラ・コンティなど)

Super.TargetDefenceMul

キャラクターのCNSファイルではなく、mugen.cfg内で設定可能。
防御力を変動させているように見えるが、実際には攻撃力を変動させている。
SuperPauseを実行した際にp2defmulを指定しないか0にした場合、
SuperPause実行後に始まったコンボが終了するまでダメージに補正がかかる。
また相手がDefenceMulSetが実行されている場合、この補正は適用されない。
DefenceMulSetと同じように、攻撃を受ける側のmovetypeがHになっていないと適用されないという問題がある。


防御側で設定される補正

Fall.Defence_Up

CNSファイルの「[Data]」セクションで設定可能。
ダウン中(statetypeがLになっているとき)、この数値だけ防御力が上昇する。
なおDefenceMulSetが実行されている場合、この補正は適用されない。

Stand.Friction(Crouch.Friction)

CNSファイルの「[Movement]」セクションで設定可能。定数であるためヒット数による操作などはできない。
キャラクターの摩擦係数に相当し、この値が小さいほど地上で滑りにくくなる。
phisicsがSまたはCに設定されているステート全てにかかってくるため、ダメージを受けたときのノックバックが変化する。
下手に値をいじると相手のコンボがつながらなくなったり、
逆に永久になってしまったりと相手が意図しない挙動になることも。むやみに変更しない方が無難。

DefenceMulSet

ステートとトリガー次第で自由に防御力の増減を設定可能。
Valueで設定される値はダメージにかかる係数なので注意。
以下は「根性値」を設定した例。
[State -2, DefenceMulSet]
Type = DefenceMulSet
TriggerAll = Alive
Trigger1 = Life <= 300
Value = 0.70

ただし、予めmovetypeがHの状態でダメージを受けたときにしか適用されないという致命的な問題がある。
このためmugenで根性値を厳密に再現するのは不可能。
一応かなりそれらしくはできるが、内部でイレギュラーな処理をすることになる。