♠ Chaos Blackjack 百科
English

平衡模拟器

bjsim 让脚本机器人打成千上万局和整轮游戏,用来测量庄家优势、每条混沌规则的影响、道具价值、商店定价和一轮的长度。它在独立的仓库里(black-jack-sim):游戏从不 import 它,它也从不修改游戏。实测结果见平衡数据页。

怎么保证结果可信

  • 只有一个接口。 只有模拟器的 bjsim/adapter.py 会 import 游戏。游戏接口变了,只改这一个文件。
  • 只用可见信息。 机器人只能看到玩家能看到的东西,有两个写明的例外:信息类道具刚揭示的牌,以及定价实验里改写的商店价格。
  • 不产生费用。 混沌 AI 始终是脚本替身,从不调用真实模型。
  • 可复现。 同一个种子得到同样的结果,与并行进程数无关。默认模拟游戏随附的默认平衡数值,而不是你本地数据库里的值。

运行

需要 Python 3.10+,不需要额外的包。在 black-jack-sim/ 里运行,旁边要有游戏仓库。

命令用法
careerpython -m bjsim career --policy mixed --careers 200 --length 40 [run options]
checkpython -m bjsim check [--bands bands.json] regression gate (exit 1 if out of band)
edgepython -m bjsim edge [--rules all|none|<name>,...] EV per chaos rule
itemspython -m bjsim items [--rules none,...] [--items ...] EV gain per item use
runspython -m bjsim runs [--chaos off|stub|mix|<rule>] [--bet pct25] [--shop never] [--prices game]
sweeppython -m bjsim sweep --param prices --values game,scaled:3,scaled:5 [run options]
upgradespython -m bjsim upgrades [run options] value and payback of every meta upgrade

通用选项:--profile NAME(模拟游戏数据库里的某个平衡配置)、--rounds N、--runs N、--seed N、--jobs N(进程数,不影响结果)、--out FILE(.md 或 .json)。

选项可选值
--chaosoff, stub, mix, mix:a+b, modify_card_value-1, modify_card_value+1, reverse_bust, great_crash, odd_even_chaos, suit_power, fragile_bust, tiebreaker_dealer, tiebreaker_player
--betflat10, pct10, pct25, max, pct25_max_with_item
--shopnever, eager, value
--pricesgame, fixed:<factor>, scaled:<pct>
  • --chaos stub 是游戏自带的离线混沌 AI,行为由平衡配置决定;mix 从所有规则里均匀抽取。
  • --shop eager 有用的都买(保留一点余钱);--shop value 只在押最大注值得时买一件。
  • --prices fixed:<倍数> 把游戏价格乘以倍数;scaled:<百分比> 让偷看的价格等于资金的这个比例,其他道具按比例换算。
  • upgrades 用相同牌局比较升级等级,报告胜率、每轮代币的变化及代币回本轮数。
  • career 模拟连续多轮和局外购买,使用 --policy none|permanent|consumable|mixed、--careers N 和 --length N;用逗号分隔多个策略可在一份报告中比较。

机器人

机器人按经典基本策略打(不分牌),规则改变爆牌线时会相应调整,但不会针对混沌规则做其他变通。所以混沌规则下的结果是"普通玩家"视角:会利用规则的玩家表现更好。

回归区间

模拟器维护一份关键指标及允许范围的清单(bands.json)。python -m bjsim check 会测量它们;某个值超出区间,说明游戏改动影响了平衡。如果这是有意为之,就在同一次改动里重新测量并更新区间。

本次报告有超出回归区间的测量,下表保留原始结果;调整区间属于独立的模拟器仓库。离线替身指标名称仍描述过去仅修改点数的场景,而当前配置按权重混合抽取规则,也包含平静局。

python -m bjsim check · 种子 1 · 平衡配置 default@b574fce2d1a5 · 游戏 108b5e1 · 模拟器 d11d84e · Balance bands

指标样本实测值允许区间在区间内
EV, no chaos50000 局+0.0000[-0.020, +0.020]是
EV, offline stub chaos (values -1)50000 局-0.0239[-0.120, -0.075]否
EV, uniform mix of all rules50000 局-0.0117[-0.015, +0.025]是
EV with one peek per hand50000 局+0.1309[+0.110, +0.150]是
Win rate, no chaos, bet 25%2000 轮+0.2570[+0.165, +0.235]否
Win rate, offline stub chaos, bet 25%2000 轮+0.2340[+0.075, +0.130]否

百科怎么用它

每次运行 python -m wiki sync,百科都会用模拟器 main 的干净 checkout,对游戏 main 的干净 checkout 跑一遍模拟,并把结果存为事实。两边的提交都没变时直接复用结果,所以本百科上的数值总会注明来自哪个游戏提交和哪个模拟器提交。

对应 origin/main @ 108b5e1(2026-10-17)· 游戏 v0.2.0