- edited description
タスク: 行動順決定アルゴリズムをCWに近づける
HAND氏の次の実験結果により、現在のアルゴリズムはCWとはかなり異なる結果が出る事が分かります。
- https://twitter.com/hand_cw/status/535793956496211968
- https://twitter.com/hand_cw/status/535794154723225600
- https://twitter.com/hand_cw/status/535804761430179841
- https://twitter.com/hand_cw/status/535796179049525248
4.の他に読み取れる事は、
- おそらく、計算式上は、6点以上能力値が離れた時には100%高い方が先手を取る(1D6を使用?)。
- その上で、クリティカルかファンブルがある。Aの方がBより6点以上能力が高い時、Bが先手を取る確率は1/36に一致する。
そこで次のような実験コードを書いてみましたが、傾向としては近いものの、結果は微妙に異なるようです。
vocations = [
( 6, 12),
( 6, 11),
( 6, 10),
( 6, 8),
( 6, 6),
( 6, 4),
( 6, 2),
( 6, 0),
(-4, -2),
( 6, 8),
]
def calc_order(vocation_val):
d = diceroll(1, 6)
value = vocation_val + d
return value
import random
def diceroll(n=2, side=6):
sum = 0
for x in xrange(n):
sum += int(random.randrange(1, side+1))
return sum
for x in vocations:
count = 0
for i in xrange(500):
if calc_order(x[0]) >= calc_order(x[1]) and diceroll(2, 6) < 12:
count += 1
print "%2d:%2d -> %3d" % (x[0], x[1], count)
出力結果は例えば次のようになります。どうもAが先手を取る事が多すぎるようです。
6:12 -> 0
6:11 -> 8
6:10 -> 42
6: 8 -> 132
6: 6 -> 280
6: 4 -> 405
6: 2 -> 477
6: 0 -> 492
-4:-2 -> 137
6: 8 -> 140
Comments (8)
-
reporter -
reporter ところで今のアルゴリズムではAが6でBが0の能力値の時にBが先手を取る事が多くなります。これは明らかにおかしいので当面の対策として上の式に差し替えておきます。
-
reporter pull request
#646 -
データを提供します。規則性はいまいちわかりません。 検証時にPCを行動不能にして実験しましたが、 それでもPCが干渉している可能性があります。
実験状況 A,B はレベル1、敏捷以外は身体6、慎重/大胆以外は精神0 500ラウンド試行し、Aの先取回数を数える。
Aの敏捷+大胆:Bの敏捷+大胆->Aの先取回数
6:13-> 0 6:12-> 0 6:11-> 3 6:10-> 24 6: 9-> 59 6: 8->103 6: 7->188 6: 6->235 6: 5->300 6: 4->376 6: 3->428 6: 2->451 6: 1->483 6: 0->487 6:-1->497 6:-2->500
10:17-> 0 10:16-> 0 10:15-> 11 10:14-> 45 10:13-> 63 10:12->143 10:11->178 10:10->257 10: 9->335 10: 8->388 10: 7->431 10: 6->464 10: 5->489 10: 4->493 10: 3->496 10: 2->498 10: 1->500
-
reporter ありがとうございます。もっと差を大きくするとB先手500回に到ってしまうのですね。ということは1/36に見えたのは偶然で、クリティカルは無いと考えたほうがよさそうです。
1D6でも説明がつかなそうなので根本的に考え方を変える必要があるのかもしれません。
-
上記のデータですが、行動不能PCの影響がありました。完全なタイマン(PC一人・敵一人)の場合、「PCの(敏捷+大胆)+1d6<敵の(敏捷+大胆)+1d6ならば敵が先攻、そうでなければPCが先攻」となるようです。
PC一人の場合も、PCの敏捷+大胆が全ての敵でのそれより5大きければPC先攻確定、6小さければ敵先攻確定のようです。
検証シナリオ:http://www.geocities.jp/handmademidis/cdwirth/koudou.zip
また、敵同士の行動順の判定で、 https://twitter.com/hand_cw/status/650156704085078016 https://twitter.com/hand_cw/status/650044542075310080 のようにPCに影響される場合があります(後者は左右の敵のどちらが先攻するかを比較してます)。
-
reporter ありがとうございます。
手札選択と同じく、後から判定した方が前の値を超えるか以上であれば先に動くという事のようですが、行動不能でも影響があるというのがどうも不可解です。そのようなロジックであれば行動不能者が影響できるはずがありません。
敵を5体並べた時に2番めが最も遅くなるというのも謎……もしかするとハッシュテーブルのような不確定な順序のデータ構造を使って判定ループを回しているのではないかとも疑ってしまうくらいですが、何かうまい説明ができないものでしょうか。
-
reporter - marked as minor
当面解決できないと思われるので、優先度を下げさせてください。
- Log in to comment