--------------------
◆ DX2における行為判定のシミュレーションツール

--------------------

萌えとイタイは紙一重ですよ?(挨拶)

と、これは声優の小暮英魔さんの知る人ぞ知る名言である。
にゃふぅ。

そんなわけで、今回のエントリは完全に勢いだけで作ってしまった、TRPG「ダブルクロスThe2ndEdition」の行為判定をシミュレーションするツールについて。
はっきり言ってTRPGユーザ向けの話題なのか、それともプログラマアマグラマ向けの話題なのか非常に分類しにくいのはご愛敬。

なお、いつもの通り無意味な挨拶は絶賛放置中。





ツール本体及び試行結果は、拙作OD TOOLと同様、ODプロジェクトWikiからダウンロード出来る。
現時点でのバージョンは1.0.0。バグは幾つかあるが修正する予定は今のところ無い。
「GUI? 何それ?」なコマンドラインツールなので、バッチファイルからの実行をオススメする。

実行ファイルを起動するには、必ず以下のような実行時オプションを指定する必要がある。
現時点でオプションの省略や、順番の入れ替え等には対応していない。
dx2simulator [出力形式] [ダイス数] [ダイスの面数] [クリティカル値] [試行回数]

  1. [出力形式]
    データの出力フォーマット。-t(表形式)または -c(CSV形式)を指定する。
  2. [ダイス数]
    行為判定に用いるダイスの数を示す。1以上の整数を指定。
  3. [ダイスの面数]
    何面体のダイスを使用するか。1度のロールごとに1~[ダイスの面数]までの整数がランダムで出る。通常は10。
  4. [クリティカル値]
    行為判定のクリティカル値。2~11までの整数を入力。11を指定した場合はクリティカルは発生しない。
  5. [試行回数]
    指定された条件で何度試行するか。1000000~10000000くらいが妥当かと思われる。

例えば、
dx2simulator -t 12 10 6 10000000
というオプションを指定して実行した場合、10面ダイスを12個、クリティカル値6のロールを1000万回試行し、その結果を表形式で出力することを示す。
なお、出力先は標準出力(大概の場合はコマンドプロンプトがデフォルトの出力先)なので、リダイレクトでテキストファイルを作成するのが無難か。

擬似乱数生成のアルゴリズムには、やはりOD TOOLと同様にMersenne Twister法を使用。
極めて優秀な擬似乱数生成器ではあるが、試行回数がかなり多く(実際に平均値を出すために合計50億回の試行を行っている)、あまりメリットを活かせていないような気もする。
と言っても乱数の精度に問題があるほどではないだろう。


単にシミュレータを作るだけでは面白くないので、実際に試行してみることにした。
試行条件はダイス数を1~50、クリティカル値を2~11、他は固定とする。
ゲームでの実用性を考えれば、こんなもんだろう。
それでも各試行を1000万回ずつ行って検証したので、合計試行回数は50億回である。
計算に費やした時間だけで、5時間15分もかかってしまった。
まあ、パソコンを起動したまま自分は寝てしまったのだが。(ちなみに起床時点で作業は終了していなかった)

DX2行為判定の平均値.html

ダブルクロス、ないしTRPGに馴染みの無い方もいるだろうし、簡単に試行内容の説明をしたい。詳細はルールブックを参考にされたい。
  1. 1~10までの出目が出るサイコロ(実在する)を決められた数だけ振り、その最大値を求める。これを達成値と呼ぶ。
  2. [クリティカル値]以上の出目が出たサイコロについては、その出目を10として扱い、更に振り足すことが出来る。[クリティカル値]以上の出目が出続ける限り、振り足すことが可能。
  3. なお、最初のロールで全ての出目が1だった場合はファンブルとし、達成値は必ず0とする。
使用するダイス数が多いほど、クリティカル値が低いほど最終的に出力される結果(達成値)は大きな値になりやすい。無論、処理時間もそれに比例して延びていく。


クリティカルなしの時の1D10の平均値が5.4(10面ダイスの平均値は5.5)なのはファンブルを考慮しているため。
また、シミュレータの内部仕様上(面倒だったとも言う)、本来ダイス目に足されるべき技能レベルは0として扱われるので、技能レベルが高くなると、「(シミュレータで出た平均値)+技能レベル」と「5.5+(技能レベル)」の差が広がっていくことになる。
例えば技能レベルが0のとき
ファンブルあり:5.4
ファンブルなし:5.5
となるが、技能レベルが仮に100あったとすると
ファンブルあり:95.4
ファンブルなし:105.5
と無視できない差になってしまう。
ただし、これはあくまでもダイスを1個だけ振ったときの値であり、ダイスを3個でも振ればもはやファンブル率は誤差の範囲内であることをお忘れなく。(3個の場合のファンブル率は0.1%)

実際に色々と求めてみたものの、数学的に求めた値の確かさには足元にも及ばないし、そもそもゲームである以上、最も重要なのは楽しむことなのは間違いない。
それを理解した上で、何らかの参考になってくれればツール製作者としても幸いである。
[PR]
R.F.D. | by odprfd | 2006-12-15 04:33 | TRPG支援ツール

--------------------

<< if (true) | BRバトン、これはある男の戦い... >>