このページでは,JBSクエスト・トリビュートで採用したアルゴリズムの考え方と根拠を説明します.
国立国会図書館にて,以下の資料を閲覧して,JBSクエストおよびJBSクエストIIにおけるダメージ計算式を推定しました.
「ジャンプ放送局」『週刊少年ジャンプ』1989年10月9日号 408~413頁
「ジャンプ放送局」『週刊少年ジャンプ』1989年10月16日号 402~407頁
「ジャンプ放送局」『週刊少年ジャンプ』1989年10月23日号 418~423頁
「ジャンプ放送局」『週刊少年ジャンプ』1990年7月30日号 402~407頁
「ジャンプ放送局」『週刊少年ジャンプ』1990年8月6日号 402~407頁
「ジャンプ放送局」『週刊少年ジャンプ』1990年8月13日号 432~437頁
JBSクエストのコンピュータコードはマル秘ですが,公開されている情報から以下のように推定しました.
まず,ダメージは,攻撃力と守備力の差に基づいて計算されると考えられます.
しかし,右上の散布図(黒色:JBSクエスト,赤色:JBSクエストII,直線:理論線)からわかるとおり,JBSクエストとJBSクエストIIでは,ダメージ計算式が異なることがわかります.実際に誌面からも,使われたプログラムの名称は,JBSクエストでは「JBS Quest system ver1.0」,JBSクエストIIでは「JBS Quest II system ver2.01」と書かれていますから,2つのプログラムが同一でないことがわかります.
この散布図に示されているデータを統計学的に解析すると,ダメージの計算式は,以下のモデルで近似されます.
JBSクエストのダメージ計算式(通常の最小二乗法による推定)
ダメージ = 2.729 + 0.214(攻撃力-守備力) + ε
ε~N(0, 1.604^2)
JBSクエストIIのダメージ計算式(加重最小二乗法による推定:不均一分散の兆候があるため)
ダメージ = 10.833 + 0.451(攻撃力-守備力) + u
u~N(0, 1.125^2)
ここで,εとuは,確率的に発生するランダムな誤差です.ここでは,平均ゼロ,分散σ^2の正規分布に従うと仮定しています.
JBSクエストではσ = 1.604,JBSクエストIIではσ = 1.125と推定されます.
2つのアルゴリズムの違いは,JBSクエストよりもJBSクエストIIの方が,ダメージが大きくなる傾向があって,決着までのターン数が減る傾向があります.
JBSクエスト・トリビュートでは,上記2つのダメージ計算式を選択できるようにしています.このモデルから計算されたダメージ値を四捨五入しています.また,JBSクエストでは最低ダメージ値1が保証されていたので,四捨五入した値が0以下の場合には,最低ダメージ保証として1に変換します.ただし,攻撃力が0のキャラが与えるダメージは常に0として処理します.
なお,2回連続攻撃の判定は,「素早さの差」に基づいて計算します.「のみ003」と「なっとうかぶり」の対戦において,「素早さの差」が88あり,全体で9ターンのうち3ターンにおいて,「のみ003」が2回連続攻撃をしました.ここから,「素早さの差」を0.375倍した値を2回連続攻撃が起こる確率と定義しています.素早さが相手よりも下回る場合にはマイナスとなるためゼロとして処理し,2回連続攻撃は発生しません.
相手からの攻撃を回避する確率は,素早さの差で定義します.したがって,素早さが相手よりも下回る場合にはマイナスとなるためゼロとして処理し,攻撃を回避することはできません.
先攻と後攻は,原則として素早さの大きい方が先攻ですが,区間[0, 1]の一様乱数によるゆらぎを加えていますので,運次第で素早さの遅いキャラが先攻することもあります.
以上は,当時の誌面において公開されたいくつかの対戦結果をデータとして,統計学的に推定したものです.実際のアルゴリズムを完全再現したものではありませんが,判明している限りの情報から,できるだけ忠実にJBSクエストに準拠したアルゴリズムとして独自に制作しました.