15.1 从指标反推参数
反推是正推的逆问题:给定目标集成胜率 500‰,求哪个 enemyHp 让曲线穿过它。本节用整数二分把反推从 O(区间) 次正推压到 O(log 区间),实测只花全网格 131‰ 的算力且结果逐格一致;B 层再对种子池偏移与种子数扰动,检验反推值自身的漂移与分辨率下限。
category
反推是正推的逆问题:给定目标集成胜率 500‰,求哪个 enemyHp 让曲线穿过它。本节用整数二分把反推从 O(区间) 次正推压到 O(log 区间),实测只花全网格 131‰ 的算力且结果逐格一致;B 层再对种子池偏移与种子数扰动,检验反推值自身的漂移与分辨率下限。
相变图要读三样东西:序参量、临界点、临界带宽。本节用粗扫定位跨越区间、二分把临界点收到整数、再在邻域量出过渡带宽,并用纯 xml.etree 手绘序参量曲线与两相着色的相图,两张图都回读重建逐格比对;胜率是代理指标,只作相对比较,禁绝对化。
热力图不是新指标,而是把「策略族 × 参数档」两张一维表压成一张二维切片,用颜色承载第三个量。本节用纯 xml.etree 逐格画 rect、整数色阶插值、手绘色标图例,画出四种策略族在六档 enemyAttack 下的胜率矩阵并回读重建逐格比对;格值胜率是代理指标,只作相对比较。
动态可视化只需两族图:横轴是有序参数的曲线、横轴是离散分箱的谱。本节用纯 xml.etree 手绘坐标轴、网格线、刻度与图例,画出胜率随 enemyAttack 变化的曲线与按牌型分箱的伤害与次数谱,并用 ET.fromstring 回读重建逐格比对;胜率与占比都是代理指标,只作相对比较。
跨配置到底能不能比:四分量单位不同,比较前必须先归一化,而换一种归一化口径排序就会翻盘。S 层算 6 个配置的可玩性矩阵,量出两种归一化口径下的同序比例 concordance,并暴露相变宽度对测量 regime 的依赖;B 层再扰动闸门阈值、测量 regime 与种子池,数出判决翻盘的次数。
把可玩性向量当成一个采样问题:四个分量对种子数的敏感度完全不同——熵是规格属性、与种子无关,相变宽度最慢。S 层以全 16 种子为真值,量出每个分量进容差的最小 k 与闸门判决稳定的最小 k,并给出 |A|^D 超过枚举上限时必须改采样的判据;B 层把容差按倍率扫一遍,看 min-k 到底跟着谁动。
把可玩性操作化成四个机制量组成的向量:策略空间熵、支配缺失度、涌现度、相变宽度,再用多指标联合闸门判定。S 层在规格上把四个量算出来,四个变体里退化变体在三个分量上塌下来;B 层把每一维的闸门下限扫一遍,报出每个变体的临界下限与相对余量,看哪一维再抬一点就翻盘。
换一批种子,指标就变了——点估计是错觉。本节给两个全整数区间口径:块极差与整数 Wilson(z=2,用 isqrt 求)。实跑两个场景、六档种子数:临界场景胜率 222‰ 的 Wilson 区间从 n=8 的 [134,698] 收窄到 n=256 的 [175,277],而小样本区间并不总能盖住大样本值。
仿真快照里的一个字段还不是体验指标。本节把「字段到指标」拆成四段固定管线——每种子取值、聚合、归一化、减基线——再实跑 5 个字段 × 4 个聚合算子 × 12 个配置:同一个字段换成最大值而非均值就是另一个指标,某些字段在特定策略下恒为零,区分度全丢。
体验指标不能凭直觉堆。本节给一个八条候选的可算池,再用两条整数判据——跨配置区分度与两两同序冗余度——做贪心筛选;实跑《灰烬牌库》十二个配置,8 个候选里只有 band / entropy / domFree 三条互不冗余,其余五条要么分不开配置,要么与入选者几乎同序。
练满之后还拦得住玩家吗?本节把天花板定义为熟练度全 1000 时的胜率、地板定义为全 0 时的胜率,用留一法算出每个技巧维度的边际增益,在难度网格上找出瓶颈归属、被证伪的维度、以及会变号的维度;B 层换四组种子池看瓶颈标签稳不稳、冠亚军差距会不会被摆动淹没。全程只用代理指标做相对比较,不绝对化。
难度不该是固定的一条线,而该跟着技巧走。本节把 11.1 的习得曲线反过来用:在难度轴上逐格反推「需要多少熟练度才能把胜率做到 500‰」,得到一条必需能力曲线,再比较固定难度与按习得反推两种排布,用落在目标带内的关卡占比当作对齐度;B 层换四组种子池与三个目标带,看对齐度这个代理指标到底能引用到什么程度。
技巧不是一个数,而是一组可播种的决策熟练度。本节把《灰烬牌库》的出牌纪律、防御时机、免费牌三个维度写成 0..1000 的整数参数,用指数逼近与幂律两种整数递推模拟越练越强,再在固定评测场景与固定种子池上实测胜率,得到一条可复现的习得曲线;B 层换四组种子池与三个速率假设检验达标 trial 数稳不稳。
有了带宽,难度曲线该怎么排?本节用 10.2 的带宽表对照两条排法:定点排布把挑战全程钉在开局技巧档的带宽中心,带宽跟随排布把挑战排在当前技巧档的中心。12 关逐关实跑,报出带宽内关数与偏离代价,并说明带宽跟随排布为什么依赖实测的技巧曲线与带宽表。
带宽是一段挑战区间,不是单点。本节给带宽一个可算的定义:代理胜率落在 [hard, easy] 内的连续整数区间;再用粗扫定位、整数二分把上下沿各钉到 ±1,报出每个技巧档的带宽宽度、中心位移、相邻档重叠,以及技巧轴饱和时带宽如何随之饱和。
心流常被讲成「挑战等于技巧」的一个点,但整数机制里没有那个点。本节把技巧轴落成每回合出牌预算、挑战轴落成敌人攻击强度,逐格跑出《灰烬牌库》的匹配图:每个技巧档的匹配是一段连续区间(带宽)而非单点,并如实报告技巧轴在能量上限处饱和、带宽不再右移。
策略空间 |A|^D 会爆炸,深度 25 时是 2.8×10^19 条。本节把规模压回可算的三道闸——剪枝、去重、采样——逐道量化:合法序列占粗上界 107‰,去重后深度 8 只剩 1877 个状态;采样器先在可枚举的深度 6 上校准(均值差 111‰),再外推到不可枚举的深度 12,并给出「何时改用采样」的整数判据 D*=8。
策略空间是全部合法动作序列的集合。本节先用 |A|^D 给出规模粗上界,再用广度优先把深度 8 以内的合法前缀树真的枚举出来——1679616 条粗上界里只有 181166 条合法,剪枝率 107‰;再在枚举出的空间上算四个整数定点 Shannon 熵,并解释为何深度 8 时结果熵会塌成 0。
策略是「状态到动作」的映射,在规格里有两种写法:定长的动作序列与按状态分支的决策树。本节用《灰烬牌库》把两种写法并排跑一遍——同一份 play_spec.json,固定序列在 16 个种子上只实现出 1 条序列,贪心决策树实现出 16 条,而自实现步进器的 digest 与公共库逐字一致。
《游戏设计》卷二《策略、涌现与体验度量》目录:16 章 48 节,从卷一的可执行规格出发,把机制跑起来之后的动态与体验全部操作化为可计算指标——策略空间与 Shannon 熵、支配策略检测、极小极大与均衡、涌现与退化解、平衡与相变、玩家动因与类型、情绪曲线与心流带宽、技巧习得、体验度量与可玩性、参数反推。本页给出与既有内容的分工、六档可运行性口径与全书 16 章 48 节完整清单。