HANDのページ

CardWirthエンジン分析-カードの自動選択

CardWirthの戦闘シーンにおけるカードの自動選択処理はかなり複雑にできている。

この記事では 手札カードの並びが自動選択に影響を与える という事実や、
CardWirthの手札カードの選択処理 についての検証結果を述べる。

手札カードの並びが自動選択に与える影響

以下に述べる実験でこの事実は確認可能。 実験用のシナリオ も用意したので、確かめてみてほしい。

実験環境

[レベル3/身体的特徴オール6/精神的特徴オール0]と設定した敵キャスト100体 の毎ラウンドの手札を以下の構成に固定し、10ラウンド戦闘する(PCは何もしない)。

ここで、手札ウィンドウの左上から1枚目、2枚目…と数えるものとする。

上記の手札カードの適性・効果を全て「カード交換」と同じものにする。
即ち、[自分自身/無属性/必中属性/知力+慎重性/カード消去(全属性)]と設定する。

実験結果

筆者の環境でこの実験を5回繰り返した結果は以下のようになった。

カード交換の引かれる確率が極端に小さいこと、 それから一番上のアイテムが概ね25%の確率で引かれるのに対して、 一番下のアイテムは概ね17%の確率で引かれることが見て取れる。

同等のカードであっても 手札のどこにあるのかで使用確率がかなり違っている のだ。

手札カードの選択エンジンの推測

経験的には、CardWirthの思考エンジンは、得意なカードをよく引き、苦手なカードは避ける傾向にある。 しかしながら、カードの効果モーションや使用時修正の値を詳細に見ているものではないようである。そこで、以下の仮説に基づいて検証を行う。

仮説

手札の自動選択処理

推測した手札の自動選択処理を以下に述べる。優先度をつける判定には 2回目の記事 で出てきた命中率の計算式と同等のものが用いられていると推測できた。

  1. 各カードの 適性値=身体的特徴+精神的特徴 を計算する。
  2. 「カード交換」の適性値を6減らしておく。
  3. 「最大達成値」を適当な小さい数にしておく。
  4. 手札の2枚目~最後のカード、1枚目(「カード交換」)の順番で、以下の判定を繰り返す:
    1. 達成値 = (1 + 適性値) / 2 + 2d6 を計算する。
    2. 達成値が「最大達成値」を超えた場合、そのカードを選択候補とし「最大達成値」を更新する。
  5. 選択候補のカードを使用する。

※能力判定と異なり、絶対的成功と絶対的失敗はない。

具体例は割愛するが、実験した限りでは推測通りの結果となった。

まとめ・論点

参考ページ