CardWirthエンジン分析-カードの自動選択
CardWirthの戦闘シーンにおけるカードの自動選択処理はかなり複雑にできている。
この記事では 手札カードの並びが自動選択に影響を与える という事実や、
CardWirthの手札カードの選択処理 についての検証結果を述べる。
手札カードの並びが自動選択に与える影響
以下に述べる実験でこの事実は確認可能。 実験用のシナリオ も用意したので、確かめてみてほしい。
実験環境
[レベル3/身体的特徴オール6/精神的特徴オール0]と設定した敵キャスト100体 の毎ラウンドの手札を以下の構成に固定し、10ラウンド戦闘する(PCは何もしない)。
- 1枚目…アクションカード「カード交換」
- 2枚目…アイテムカード「アイテム1」
- 3枚目…アイテムカード「アイテム2」
- 4枚目…アイテムカード「アイテム3」
- 5枚目…アイテムカード「アイテム4」
- 6枚目…技能カード「スキル」(ラウンドイベントなどで、強制配付する)
ここで、手札ウィンドウの左上から1枚目、2枚目…と数えるものとする。
上記の手札カードの適性・効果を全て「カード交換」と同じものにする。
即ち、[自分自身/無属性/必中属性/知力+慎重性/カード消去(全属性)]と設定する。
実験結果
筆者の環境でこの実験を5回繰り返した結果は以下のようになった。
- 1枚目…13回、11回11回、10回、7回
- 2枚目…229回、222回、227回、240回、274回
- 3枚目…229回、216回、238回、227回、214回
- 4枚目…217回、208回、189回、199回、202回
- 5枚目…160回、183回、163回、175回、158回
- 6枚目…152回、160回、172回、149回、145回
カード交換の引かれる確率が極端に小さいこと、 それから一番上のアイテムが概ね25%の確率で引かれるのに対して、 一番下のアイテムは概ね17%の確率で引かれることが見て取れる。
同等のカードであっても 手札のどこにあるのかで使用確率がかなり違っている のだ。
手札カードの選択エンジンの推測
経験的には、CardWirthの思考エンジンは、得意なカードをよく引き、苦手なカードは避ける傾向にある。 しかしながら、カードの効果モーションや使用時修正の値を詳細に見ているものではないようである。そこで、以下の仮説に基づいて検証を行う。
仮説
- CardWirthの思考ルーチンは 1回目の記事 における「有効条件」を満たすカードについて、その中でどのカードにすべきかという比較を行わない。
- 「有効条件」を満たす手札カードの使用優先度は、手札内の位置と適性によってのみ決まる。
手札の自動選択処理
推測した手札の自動選択処理を以下に述べる。優先度をつける判定には 2回目の記事 で出てきた命中率の計算式と同等のものが用いられていると推測できた。
- 各カードの 適性値=身体的特徴+精神的特徴 を計算する。
- 「カード交換」の適性値を6減らしておく。
- 「最大達成値」を適当な小さい数にしておく。
- 手札の2枚目~最後のカード、1枚目(「カード交換」)の順番で、以下の判定を繰り返す:
- 達成値 = (1 + 適性値) / 2 + 2d6 を計算する。
- 達成値が「最大達成値」を超えた場合、そのカードを選択候補とし「最大達成値」を更新する。
- 選択候補のカードを使用する。
※能力判定と異なり、絶対的成功と絶対的失敗はない。
具体例は割愛するが、実験した限りでは推測通りの結果となった。
まとめ・論点
- CardWirthの思考エンジンは手札の左側のカードを優先してチェックする。
- 自動選択においては、有効で、(1 + 適性値) / 2 + 2d6 が最大のカード選ばれる。
- ただし「カード交換」のチェックは一番最後に行い、適性値は6減らした上で判定する。
参考ページ
-
CardWirthPy開発者の長月氏らの検証によれば、キャストの残りHPに基づき、「生命力-回復」モーションを持つカードの優先度が上がる。逃走についても同様。
- BitBucket>CardWirthPy Reboot>Issue #20 手札自動選択ルーチンの改良