質問するログイン新規登録

Q&A

0回答

163閲覧

スマブラのKBを算出したい

Hadashi

総合スコア2

ゲーム制作

ゲーム制作は、UnityやUnreal Engineなどを使ったゲームの開発に関する投稿です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2025/12/12 01:41

0

0

実現したいこと

Smash Ultimate CalculatorのTotal KBの計算結果と一致させたい
リンク内容https://rubendal.github.io/SSBU-Calculator/
ゲームの仕様が関わってくるので、ゲームの掲示板などで聞いたのですが、全然分かる方がいなかったので、ここでも質問させていただきました。

発生している問題・分からないこと

計算結果がSmash Ultimate Calculatorhttps://rubendal.github.io/SSBU-Calculator/のTotal KBと一致しない。
ルイージ(重量97)が30%の時に、マリオが0%の時の上強(5.5ダメージ)、BKB=28、KBG=130を初めて当てる時のKBを求めたいのですが、SSBU計算のTotal KBの計算結果と異なり、困っています。手を貸してくださると、助かります。
私の計算 77.09716434010153
SSBU 76.460932
ふっとばし力 - スマブラSPECIAL 検証wiki - atwiki(アットウィキ):https://w.atwiki.jp/smashsp_kensyou/pages/58.htmlによると、KBの計算は、
KB = (((0.1+ダメージ*0.05)敵%/W1.4+18)KBG0.01+BKB)*補正値
※W = (100 + 敵重量) / 200

補正値にはほかほか補正などが入りますが、今回はマリオが0%の時なので1.0倍で構いません。
敵%には、「1on1補正(1.2倍)が適用されなかったと仮定した場合における、攻撃ヒット後の敵の蓄積ダメージ」を使用します。
また、wikiによると基本計算式内のダメージの部分は実戦では ワンパターン相殺を考慮する必要があり、以下のように計算した値を用いるらしいです。
ダメージ(ワンパターン補正有) = ダメージ * (1 + 0.3 * (ワンパターン補正倍率 - 1))
今回は初めて技を当てるので、ワンパターン補正倍率は1だと思うのですが、wikiによるとワンパターン補正倍率が1の場合、OPボーナスにより、ダメージが1.05倍になるそうです。
従って、マリオの上強(5.5)のダメージは
5.5*1.05 = 5.775
になると思います。
ここに1on1補正1.2倍を加えると、
5.775×1.2 = 6.93
となり、このダメージはSSBU計算と一致します。しかし、冒頭にも述べたように、KBの計算における敵%には1on1補正なしのダメージを与えた場合の蓄積%が適用されるので、ルイージの蓄積%は35.775として計算されると思います。
これらを考慮して、以下のプログラミングしてみました。
しかし、初めにも述べたように、SSBU計算とはTotal KBの値イメージ説明が異なり、よく分かりません。
なので、どなたか分かる方いましたら、教えてくださると助かります。

該当のソースコード

Luigi_W = 97 #ルイージの重量 Luigi_P = 30 #ルイージの蓄積% Mario_Up = 5.5 #上強のダメージ BKB = 28 #上強のBKB KBG = 130 #上強のKBG Op = 1 #OP補正倍率 Hoka = 1 #ほかほか補正 35%以下では常に1.0倍 W = (100+Luigi_W)/200 #print(f"W={W}") if Op == 1: #OP補正倍率が1の時 D_OP = Mario_Up * 1.05 #OPボーナス1.05 print(f"マリオの上強(OPボーナス)={D_OP}") Hit_P = D_OP + Luigi_P #敵%は1on1補正なしの攻撃がヒットした後の蓄積% print(f"ルイージの蓄積%{Hit_P}%") KB = ((0.1 + D_OP * 0.05) * Hit_P/W * 1.4 + 18) * KBG * 0.01 + BKB #補正値なしKB TKB = KB #Total KB print(f'マリオの上強({Mario_Up})', f"ルイージ({Luigi_W})", f"{Luigi_P}%の時", f"Total KB={TKB}") #TKB=77.09716434010153 #SSBUは76.460932 #1on1補正1.2倍込みのダメージ D_on = D_OP * 1.2 print(f"マリオの上強1on1込み{D_on}")

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ダメージや蓄積%の値をfloorしたりすると、値が近くなったりしました。しかし、値が異なることには変わりないので、何が正しいかはよく分かりません。

補足

ちなみに、
76.460932/77.09716434010153=0.9917476557594921

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

fiveHundred

2025/12/12 02:26 編集

コードは公開されているので、比較してみるのはどうでしょうか? https://github.com/rubendal/SSBU-Calculator 私は全く調べていませんが、「途中でint型に格納するために切り捨てる」などの処理があって、それでずれている可能性が考えられます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問