分身

広義の意味

ぶんしん 【分身】
(1)一つの身体や、一つのものが、二つ以上に分かれること。また、その分かれ出たもの。
「主人公は作者の—だ」
「我国の神仏は…幾柱にも—して/当世書生気質(逍遥)」
(2)〔仏〕 仏や菩薩が衆生(しゆじよう)を教化するために慈悲によって種々の姿をとって出現すること。また、その姿。化身。
大辞林 第二版より

様々な分野で使われる言葉だが、格闘ゲーム界では忍者キャラが使う忍術「分身の術」で見かける事があるかと思われる。
この「分身の術」に限って説明すると、
  • 敵を騙す用途として、本体のみ攻撃可能な防御型(他は全て残像か幻)
  • 分裂した全ての分身が攻撃可能な攻撃型
の2種類に分けられる。しかし絵面的な問題のせいか、防御型の方は数が少なく、攻撃型の方が多く見受けられる。
実際にいた忍者なら、防御型かつ逃げるために使うだろうが(実際に出来るかどうかは、また別の問題)。

+ 参考:ニコニコMUGENwikiに存在する「分身」のタグが付けられたページ一覧


MUGENにおける分身


キャラクター本体と同じ姿の「Helper」(ヘルパー)を「分身」と呼ぶ(ただ広義の意味だとスタンドも入る事がある)。
元々原作で分身を使う技を持つキャラや、製作者がきちんと意図して分身を出すキャラを作る事はある。
だが、そのつもりでは無いHelperが何らかの理由で分身になってしまうという事もあり、この場合「分身バグ」と呼ばれる。

「Helper」の外見がキャラ本体と同じになってしまうと、まず第一に「見た目が非常に滑稽」という問題がある。
「DestroySelf」が実行されない(つまり消えない)場合がほとんどで、そうなってしまうとそのラウンド中は雰囲気台無しと言えるだろう。
問題はそこだけではない。このバグが起こったという事は、本来その「Helper」が担当する筈の処理が完遂されなかったという事なので、
その「Helper」が担当していた処理次第では、 どんな酷い不具合を招くか分からない という問題があるのだ。

この「分身バグ」は、「Helper」側が適正に「HitOverride」を使っていない場合や、
ちゃんと「HitOverride」を使っていても、「Helper」が直に「HitDef」を出しており、
なおかつ相手側が適切に「attr」を設定していない「ReversalDef」を使用した場合*1などに起こってしまう。
分身が無敵でない場合は試合にも影響する

よって防止するためには、
  • 「Helper」には必ず「HitOverride」*2を使わせる。
  • 「Helper」にはなるべく直接「HitDef」を持たせない。
    JOJOキャラでスタンドを再現しようとしたりするとそうも言っていられなくなるのだが、それでも最低限に抑える努力はした方が良い*3
  • 「ReversalDef」で「P2StateNo」を使用する時は必ず「attr」を適切に設定する。
などが必須である。

また防止策だけでなく起こってしまった場合の対処として、コモンステートのどこかに、
「IsHelper」をトリガーにして、「DestroySelf」や「ChangeState」を記述しておく事が推奨される。
これは「StateNo 0」や「StateNo 5120」など、投げ技を作る側が「SelfState」の移行先に選択しがちなステートに記述しておくのが望ましい。
一箇所でなく複数のステートに記述しておいても構わない。これにより、想定外のステートに移行し分身になってしまった「Helper」を、
任意で消滅させたり元の処理に復帰させたり出来る。特に「Helper」に直接「HitDef」を持たせているキャラの場合、この記述の有用性が高い。

なお、投げ技や当て身技を利用した側が、独自判断で投げ・当て身ステート内で「Helper」を消滅させる事は推奨されない。
これは自由度の高いMUGENでは、例えばボーナスカンフーマンのように、敢えて「Helper」に「HitOverride」をかけずに、
投げ・当て身投げを受け付けるようにしているキャラも存在するからである。

「P2StateNo」、「TargetState」に関連した注意事項

  • -2ステートに「ChangeState」を記述すると相手にステートを奪われている時も作動してしまい、
    勝手に相手のcnsの該当ステートに移行してしまうという双方にとって予想外の事が起きかねない。
    記述の位置を-1ステート*4か-3ステートに移すと防止出来る。
  • 着地の内部処理は「ChangeState」命令なので、ステートを奪っている時に着地の内部処理が割り込むと、
    自分のcnsの52ステートに移行してしまうため注意が必要。「Physics = N」にして「VelMul」や「Gravity」で摩擦、重力処理するのが無難。
  • 「P2StateNo」、「TargetState」で指定したステートでは「VarSet」「VarAdd」「ParentVarSet」「ParentVarAdd」を使わない
    (Var、FVar、SysVarの変更をしない)ようにする事。予期せぬ不具合の原因になる。これは公式のドキュメントにもある通り相手に大変失礼である。
  • 「P2StateNo」「TargetState」で指定したステートで「NotHitBy」のSCAを使う時は、「SelfState」までの流れを邪魔されないようする事。
    無敵のまま固まって勝負が付かなくなる可能性がある。

豆知識

「P2StateNo」と一緒に「P2GetP1State = 0」を設定すると、相手のcnsの該当ステートに移行させる事が出来る。
…コモンステート以外では使い道が難しそうではあるが。

なお、意図的に分身バグを発生させたネタ動画も存在するが、自分のMUGENで再現する際は自己責任で。
D4C
ちっけーね


*1
「HitOverride」は相手の「HitDef」および「ReversalDef」の「attr」を指定して使用するものなのだが、
その「attr」が未設定の「ReversalDef」に対しては指定のしようが無いためそうなってしまう。

*2
「ReversalDef」に「HitDef」を取られた同フレームは「ReversalDef」の仕様のため、「NotHitBy」等の効果が無効になる。
そのため、「HitDef」を持つ「Helper」では「NotHitBy」を設定してあるからと適切な「HitOverride」の記述を怠ると、分身を誘発させてしまう可能性がある。
(打撃と投げに無敵の「Helper」の飛び道具で相殺のために飛び道具のみに「HitOverride」を設定していると、
 飛び道具を取れる「ReversalDef」で当て身投げされた時に「NotHitBy」等の無敵が無効になり、
 タッグ等でその飛び道具に同時に重なっていた本来当たらないはずの打撃などが当たり分身してしまう) 。

*3
DOS版の頃にはそうではなかったのだが、当初Win版MUGENでは「Projectile」が、
本体の「PalFX」の影響を受けるようになっていた。しかも 必ず である(「Explod」や「Helper」と違い「ownpal」を設定出来なかった)。
なおMUGEN1.0でもこの「Projectile」が本体「PalFX」の影響を受ける問題は未解決のままであった。
それを嫌ってかWin版MUGEN用のキャラでは、ただまっすぐ飛んでいくだけの波動拳程度の飛び道具でも、
「Projectile」ではなく「HitDef」を持たせた「Helper」で作られている場合がある。
これは分身バグ回避のためも勿論だが、「Helper」では「projpriority」を設定出来ないなどの問題もあるので可能な限り避けた方が良い。
例えば悪咲氏の『CVS』キャラに見られるような 「Projectile」に攻撃判定を担当させ、外見を「Helper」に担当させる という処理が、
一番手軽に見た目の良さと処理の安全性を両立させられるだろう。
なお、MUGEN1.1では「Projectile」が本体「PalFX」の影響を受ける問題は修正された上に、
「OwnPal」が有効になったり、「RemapPal」が追加されたため、
単独でカラーパレットを使用出来るようになっている(これは「Helper」や「Explod」も同様)。

*4
ちなみに「Helper」の場合に、-1ステートに置いてある記述を実行するためには「keyctrl」を1にする必要がある。
この場合「HelperType」が「Player」か「Normal」かは無関係である。


最終更新:2023年06月17日 08:23