【イナスト2013】答え合わせの向こう側へ ~ gauge reduction - ゲージ反発量

この記事は、前記事【イナスト2013】完全同格の定理 の続編です。

infi-nity.hatenablog.com

 

【始めに】訂正案件

  • 技サークルの開き始めの挙動について

    過去記事で開くのが完了する最初の3秒間はゲージが減らない、としたが厳密には開始1.5秒くらいからゲージは消費する。よって、完全同格の定理と合わせてゲージが減らないためには相打ちになるキャラ同士がある程度接近している(サークルが開き始めてすぐ衝突する)必要がある。実戦での影響はない。

  • 完全同格の定理 条件について

ステータス・威力・選手属性・技属性が全て同等 という条件の追加。修正前だと、ゴウズvs一乃のような技属性と選手属性で打ち消しあうパターンについて記載なし。


【導入】

先日、完全同格の定理について記事を執筆し、答え合わせを済ませましたが、その翌日、新たな動きがありました。なんでも、海外の解析勢がこの記事を読み、実際にリバースエンジニアリングを行ったところ、当記事の内容と一致する結果が得られたとのこと。その根拠となるデータを提供していただき、かくしてこちらでも更に深いところまで解説する、という流れでした。

解析されたその内容とは、技同士の衝突によるゲージの減少量についてです。前記事でも述べたように、またこのゲームの一般的な話として、技同士がぶつかれば多くの場合互いのゲージが減ります。至近距離でブロック技を当て、コマンドバトルに負けた時など、微量のゲージが減るのは、今更言うには及びませんが、今回はこうした場面での具体的な減少量が判明することとなりました。

 

【今回の発見】

 まず、技サークル同士がぶつかったり、コマンドバトルを仕掛けた結果技が不発になり、ゲージがわずかに減る現象について、この記事ではゲージ反発量、と定義する。

このゲージ反発量は、コマンドバトルの勝敗に関わる要素である

ステータス技ランク選手属性技属性技火力 いずれかの優劣によって、決定する。これは、優劣の合計ではなく、どれか1要素の優劣が選択され、計算されるということである。もちろん規則があり、上述の優先順位がつけられている。
つまり、ステータスで負けている場合はその他の要素にかかわらず、反発量はステータス差によって決定される。計算については各要素ごとに対応表が、そして反発量導出の式が存在するが、わかりやすいよう実際の例を使います。

 

【計算・導出過程】

図に示すと、以下のようになる。今回は、青山ブリタニアクロス” と木瀧アイスグランド" で実験を行う。

f:id:Infi:20220314225420p:plain

  1. ステータス

    f:id:Infi:20220318233942p:plain

    青山はボディA+、木瀧がガードA+であるので、この表に基づくとステータスの差は0である。0の時は互いの反発量はなしで、次へ進む。
  2. 技ランク
    今回初出の概念。技威力とは異なり、同レベル帯で一括りにまとめられている。

f:id:Infi:20220317233650p:plain

今回は、青山はレベル3技を、木瀧はレベル1技を使っているので、青山に+2,木瀧に-2がかかる。反発量は負けている側のみに当てはまるので、木瀧のゲージ反発係数が-2と定まる。

なお、上の表は簡略化することができます。

f:id:Infi:20220317233734p:plain

 

3.選手属性

画像比率おかしくてすみません。
当然風林火山の相性に従って、-1,0,1のいずれかがあてはめられる。今回は青山が林属性、木瀧が火属性なので青山に‐1がかかる。

f:id:Infi:20220318235250p:plain

4.技属性 
3と同じ。今回技同士の相性は等倍であるので、反発量は0だが、優先順位の関係で相性優劣が存在したとしても影響しない。

 

5.技火力
f:id:Infi:20220317233558p:plain

この表に基づくと、青山はレベル3技を、木瀧はレベル1技を使っているので、青山に+2,木瀧に-2がかかるが、すでに上のステップで二名とも反発係数が決まっているため、一切の影響がない。なお、威力110のDF技はこのゲームに存在せず、また正規の方法で使うこともできないので、提供元のデータの該当部分は灰色塗りをしている。

このように、上から順に処理して、ドリブル側・ブロック側両方のゲージ反発係数を決定させる。最後に、係数*(-10%)をすることで減少量が求まる。青山は係数-1,木瀧が-2であるため青山はゲージが10%、木瀧はゲージが20%減少する。

 

なお、実際に計算に使われているコードを教えてもらったので、この記事の最後に引用しておきます。
こちらは、ドリブル側を主体とみて、ドリブル側にステータスアドバンテージ・技ランクアドバンテージを求めた後、その正負に応じてドリブル・ブロックどちらの反発量が決定されるか定義しています。
ここまでくるともうお気づきかと思いますが、全ての項目で0を出した場合、ゲージ反発量は0と計算されます。これはまさに前記事の完全同格の定理そのものであり、導入の話につながるわけです。


この記事はここまでですが、答え合わせの向こう側、地下室の奥があるのでもう少しだけこのトピックは続きます。察しの良い方は、この先の話題が見えていることでしょう。

進撃の巨人エルヴィンが裏切り黒幕だという真相は? | 進撃の ...

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

for power and stat, divide the difference by 10 and clamp it between -2 and 2 
powerAdv => -2, -1, 0, 1, 2 (difference in move power between the dribbler and the defender) 
tierAdv => -2, -1, 0, 1, 2 (difference in move tier)
statAdv => -2, -1, 0, 1, 2 (difference in stat value)
elemAdv => -1, 0, 1 (element bonus for the dribbler)
moveElemAdv => -1, 0, 1 (element bonus for the dribbling move)
the actual algorithm (I simplified it and wrote it in python so it's a bit readable)

dribblerGaugeReduction = 0
defenderGaugeReduction = 0

 

(I)
if statAdv <= -1:
    dribblerGaugeReduction = -statAdv
elif statAdv > 0:
    defenderGaugeReduction = statAdv

(II)

if tierAdv <= -1:
    dribblerGaugeReduction = -tierAdv
elif tierAdv > 0:
    defenderGaugeReduction = tierAdv

 

(III)

if elemAdv <= -1:
    dribblerGaugeReduction = -elemAdv
elif elemAdv > 0:
    defenderGaugeReduction = elemAdv


(IV)    

if moveElemAdv <= -1:
    dribblerGaugeReduction = -moveElemAdv
elif moveElemAdv > 0:
    defenderGaugeReduction = moveElemAdv


(V)    
if powerAdv <= -1:
    dribblerGaugeReduction = -powerAdv
elif powerAdv > 0:
    defenderGaugeReduction = powerAdv
    
defenderGaugeReduction = 20 * defenderGaugeReduction
dribblerGaugeReduction = 20 * dribblerGaugeReduction

ー-------------------------------------

※ I changed all rows and columns of the tables because for Japanese it is more usual.
※ To explain, I substitute some formulas about gauge reduction (of course it will reach the same goal )