<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gamedesign on PlumePHP</title><link>https://plumephp.com/categories/gamedesign/</link><description>Recent content in Gamedesign on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 17 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://plumephp.com/categories/gamedesign/index.xml" rel="self" type="application/rss+xml"/><item><title>《游戏设计》卷三《原型、可玩性与品类》目录</title><link>https://plumephp.com/gd-proto-toc/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-toc/</guid><description>《游戏设计》卷三《原型、可玩性与品类》目录：16 章 48 节，把同一份玩法规格 config/play_spec.json 实例化到六个品类变体（卡牌构筑 / 塔防 / 三消 / 平台跳跃 / 自走棋 / 放置），跑同一套仿真与确定性内核，要求 6/6 通过可玩性闸门，并给出 6×6 品类机制距离矩阵。本页给出与既有内容的分工、六档可运行性口径与全书 16 章 48 节完整清单。</description></item><item><title>1.1 不写代码先验规则</title><link>https://plumephp.com/gd-proto-01-1-validate-rules-before-code/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-01-1-validate-rules-before-code/</guid><description>把规则先写在纸面上，不写一行代码就能判断它是否完整：纸面规则表把每条规则写成触发、条件、效果、状态增量，脚本再校验它是「可执行的全函数」——没有悬空状态变量、条件可判定、引用不越界，并用负对照证明检查非空。这是《灰烬牌库》从纸面走向可执行规格的第一步。</description></item><item><title>1.2 纸面原型的记录与回放</title><link>https://plumephp.com/gd-proto-01-2-paper-prototype-record-replay/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-01-2-paper-prototype-record-replay/</guid><description>纸面推演只有结论就是无法复现的轶事。本节把一次两回合推演记成「动作序列 + 每步全量整数状态」的 JSON，再用引擎回放它、逐字段比对，误差必须是 0；每步还校验牌数、伤害、能量、格挡四条守恒。负对照把第 7 步抄错 1 点，回放必须精确定位到那一步。</description></item><item><title>1.3 纸面到规格的转换</title><link>https://plumephp.com/gd-proto-01-3-paper-to-spec-conversion/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-01-3-paper-to-spec-conversion/</guid><description>把纸面规则表与纸面记录机械地转成与 play_spec.json 同构的结构：字段一一对应，标出哪些能机械转（M）、哪些必须人工裁决（X）。X 补齐后回放纸面记录覆盖的动作序列，摘要必须与原始规格逐字一致——「机械部分无信息丢失」这才算被证明。</description></item><item><title>10.1 放置的机制解剖</title><link>https://plumephp.com/gd-proto-10-1-idle-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-10-1-idle-mechanic-anatomy/</guid><description>把放置的五个机制字段——自动产出、离线收益、升级成本、里程碑、转生——各绑到 core/genre/idle.ts 里一段确定性代码：增长曲线用整数递推与 BigInt 闭式两种口径，规格骨架与 play_spec.json 同构、只覆盖 rules / params 两段；W 层把五格画进单文件 HTML 并真玩，P 层逐格断言 15 条全绿。</description></item><item><title>10.2 放置的曲线与相变</title><link>https://plumephp.com/gd-proto-10-2-idle-curve-phase-transition/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-10-2-idle-curve-phase-transition/</guid><description>把放置的增长曲线钉成整数：升级成本给递推与 BigInt 闭式两种口径并实测整数溢出边界（Number 幂在 n=7 越过 2^53、n=103 起失真、n=104 起 NaN）；再扫升级成本增长率，粗扫加二分找到里程碑达成率跌破 500‰ 的临界点 1042，端相分别对应进度失控与进度卡死。</description></item><item><title>10.3 放置的动因</title><link>https://plumephp.com/gd-proto-10-3-idle-motivation/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-10-3-idle-motivation/</guid><description>把自我决定理论的三要素映射成三个可算的代理指标——自主看可选升级路径数、胜任看升级成功间隔、关联看里程碑间隔——并在同一份规格上扫五档升级成本增长率（1020 至 1100），验证三个指标同向移动；全文显式声明它们只是 proxy，只做相对比较、禁绝对化、不证明好玩。</description></item><item><title>11.1 战斗的机制解剖：伤害、时序、资源</title><link>https://plumephp.com/gd-proto-11-1-combat-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-11-1-combat-mechanic-anatomy/</guid><description>把《灰烬牌库》的战斗拆成三组可断言字段——伤害结算（min 截断与守恒）、时序（出牌次序与谁先手）、资源（能量门控与三分区守恒），每组各绑内核里一段确定性代码：S 层枚举手牌全排列，同一手牌同能量总伤害从 6 变到 20（极差 14）；P 层六条断言全绿。</description></item><item><title>11.2 战斗的策略空间与平衡</title><link>https://plumephp.com/gd-proto-11-2-combat-strategy-space-balance/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-11-2-combat-strategy-space-balance/</guid><description>用固定下标族 slot0…slot4 在 16 个种子上跑出得分矩阵，算严格/弱支配对、支配策略缺失度（千分比）与结果分布的 Shannon 熵（×1000）：没有支配策略（缺失度 1000‰），但 slot4 被其余四条策略严格支配——策略空间既没被解死、也不是全有效，是一个有真实弱选项的可玩空间。</description></item><item><title>11.3 战斗的相变与支配</title><link>https://plumephp.com/gd-proto-11-3-combat-phase-transition-dominance/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-11-3-combat-phase-transition-dominance/</guid><description>把 enemyAttack 从 8 扫到 48，序参量取「slot1 严格支配 slot4 的种子比例」（千分比）：参数小时为 1000‰，调大后一路下滑。粗扫步长 4 框住跨越 500‰ 的区间，二分两轮到临界 enemyAttack=30，步长 1 全网格复验一致，相变带宽 13，全程 41 格 656 次 run。</description></item><item><title>12.1 手感不是渲染：输入-反馈的机制</title><link>https://plumephp.com/gd-proto-12-1-game-feel-is-not-rendering/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-12-1-game-feel-is-not-rendering/</guid><description>把手感从渲染层剥出来，写成整数帧的确定性状态机：输入采样 → 缓冲 → 状态推进 → 反馈触发。同一段输入脚本、同一段美术表现，只改土狼时间与输入缓冲两组窗口参数，就得到四条互不相同的帧序列——手感差异全部落在可断言的整数帧上，并由 7 条 P 层断言固定住。</description></item><item><title>12.2 手感参数的可计算化</title><link>https://plumephp.com/gd-proto-12-2-game-feel-params-computable/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-12-2-game-feel-params-computable/</guid><description>把手感参数可计算化：八个参数全是整数，帧数类与单位类都能断言逐位相等；只有帧到毫秒的感知派生量要按声明容差（60 fps 下一帧约 17 ms）断言。给出土狼时间与输入缓冲的整数边界、击退衰减的精确整数递推，并用一张敏感度表划清改时序与只改表现的参数。</description></item><item><title>12.3 手感的度量与断言</title><link>https://plumephp.com/gd-proto-12-3-game-feel-metric-assertion/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-12-3-game-feel-metric-assertion/</guid><description>把「手感」操作化为三条可断言的帧级不变量——反馈延迟上界、缓冲窗口内输入不丢失、土狼窗口单调——再用真断言跑一遍。另给一个代理指标 responsePermille（响应率千分比），并显式声明它只是 proxy：只做相对比较、禁绝对化，粒度粗到 baseline 与 noCoyote 同为 1000，必须靠帧级不变量才分得开。</description></item><item><title>13.1 规格的品类参数化</title><link>https://plumephp.com/gd-proto-13-1-spec-genre-parameterization/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-13-1-spec-genre-parameterization/</guid><description>把六份品类规格投影到同一份六段 schema（id / naming / state / rules / params / invariant）：本体要一层 view 投影，五个品类变体本来就在这六段上。划出「不变量」——骨架一致、naming 的 8 个槽位、无浮点、invariant 非空——与「自由度」——规则条目 11~52、参数字段 2~8、内容指纹两两不同。</description></item><item><title>13.2 六个品类变体的实例化</title><link>https://plumephp.com/gd-proto-13-2-six-genre-variant-instantiation/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-13-2-six-genre-variant-instantiation/</guid><description>把六份规格各自真跑一遍——卡牌构筑（本体）/ 塔防 / 三消 / 平台跳跃 / 自走棋 / 放置——并列成一张表：规格 id、规则段条目数、状态段字段数、参数字段数、不变量条数、确定性 digest。表同时证明结构同构（快照都投影进同一套 12 个契约槽位）与内容不同（四组计数与 digest 两两不同）。</description></item><item><title>13.3 变体的可玩性闸门</title><link>https://plumephp.com/gd-proto-13-3-variant-playability-gate/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-13-3-variant-playability-gate/</guid><description>给六个品类变体定一套统一的五条判据——确定性、不变量、终态可达、契约同构、扰动非退化——逐个判通过或不通过，落成机器可读的 out/gd_proto_13_gate.json 并在正文逐字贴出。平台跳跃的种子轴惰性（16 个种子只出 1 个结果桶）如实记录、不掩盖；胜率与主桶占比都显式声明为代理指标。</description></item><item><title>14.1 品类的特征向量</title><link>https://plumephp.com/gd-proto-14-1-genre-feature-vector/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-14-1-genre-feature-vector/</guid><description>给六个品类各造一个十维整数特征向量：机制计数、状态字段数、策略空间对数与熵、非支配率、状态空间对数、决策深度、随机结构计数、相变宽度、平均步数。说明每维的选择理由与「机制无关 vs 品类特有」的边界，从规格文本数出六维、从内核真跑出四维，落成可复现的 6×10 矩阵。</description></item><item><title>14.2 距离矩阵与可区分性</title><link>https://plumephp.com/gd-proto-14-2-distance-matrix-distinguishability/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-14-2-distance-matrix-distinguishability/</guid><description>先逐维 min-max 归一化到 0..1000，再用整数 L1 定义距离、用 floor(1000×d/maxd) 归一化成千分比，落成 6×6 对称矩阵，并验证对称性、三角不等式与「最小非零距离 &gt; 0」的可区分性。实测塔防↔自走棋最近（268‰）、自走棋↔放置最远（1000‰），全部整数、无浮点。</description></item><item><title>14.3 距离的读法与边界</title><link>https://plumephp.com/gd-proto-14-3-distance-reading-boundary/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-14-3-distance-reading-boundary/</guid><description>把 6×6 距离矩阵读出来，并老实交代三条边界：距离依赖维度选择（留一维度敏感性实测 Δ 在 33~63‰，最近一对在 4/10 次留一下改判）、整数地板除的量化误差上界（归一化传播到 L1 每对 ≤20、千分比每格 &lt;1），以及「距离只是代理指标、只做相对比较、禁绝对化」，并给出与风格距离矩阵的分工。</description></item><item><title>15.1 六品类变体的回归</title><link>https://plumephp.com/gd-proto-15-1-six-variant-regression/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-15-1-six-variant-regression/</guid><description>把 13.3 的闸门报告当基线、把 14 章的距离口径并进来，合成一套回归套件，对六个品类变体重跑一遍并断言结果不变——回归 = 稳定性，不是正确性。三层：结构回归（六变体规格骨架同构）、数值回归（六条 digest 逐字相同）、判据回归（五条闸门判据的通过状态不变），并附一个负例证明回归不是恒真。</description></item><item><title>15.2 六分之六通过闸门</title><link>https://plumephp.com/gd-proto-15-2-six-of-six-gate-pass/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-15-2-six-of-six-gate-pass/</guid><description>正式判定六个品类变体 6/6 通过闸门，并给出 6 变体 × 5 判据 = 30 格的通过矩阵。权威输入是 13.3 的 out/gd_proto_13_gate.json，但本节不照抄——重跑六个内核重新判五条，再断言与权威输入逐格一致；另加一层扰动幅度稳健性扫描，报告通过状态保持的幅度区间，只软告警不硬失败。</description></item><item><title>15.3 失败的诚实报告</title><link>https://plumephp.com/gd-proto-15-3-honest-failure-report/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-15-3-honest-failure-report/</guid><description>把 13.3 如实记下的三处保留逐条分类并给出处置：平台跳跃种子轴惰性是设计使然、不是缺陷；塔防种子轴只有 10 桶是真实区分度不足、可改进但不是 bug；「胜率不得为 0‰ 或 1000‰」这条直觉判据被实测证伪、是判据本身错。同时划清闸门的诚实边界：它只覆盖机制侧，玩家体验、美术、性能、网络、商业化需真实业务环境。</description></item><item><title>16.1 三卷装配检查表</title><link>https://plumephp.com/gd-proto-16-1-three-volume-assembly-checklist/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-16-1-three-volume-assembly-checklist/</guid><description>把三卷 150 节的产物汇成一张可勾选的检查表：三卷各回答一个问题，每项给出证据路径、真命令、通过判据与档位（S/P/W/D/X/B）。检查表本体是数据文件，执行器逐项核对产物是否存在、档位是否合法；X 档一律显式标注「需真实业务环境，命令行不可复现」。19 项全部 ok、fail=0，本节也说明检查表为什么不能写成许愿池。</description></item><item><title>16.2 一份规格的全链路回放</title><link>https://plumephp.com/gd-proto-16-2-one-spec-full-chain-replay/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-16-2-one-spec-full-chain-replay/</guid><description>把 16.1 检查表里最硬的一条展开成全链路回放：从 config/play_spec.json 出发，在 S 层 Python、P 层 TypeScript、W 层浏览器与第 13 章六个品类变体上各取一次 digest，证明逐字相同；再给出 B 层稳健性证明——只改一个规则参数 energyMax，链上三处宿主同步改变且仍逐字一致。附四个节点的 digest 对照表与六个变体的结果摘要。</description></item><item><title>16.3 交付与后续</title><link>https://plumephp.com/gd-proto-16-3-deliverable-and-next/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-16-3-deliverable-and-next/</guid><description>三卷本收官清点：150 节正文加一条跨语言工具链（config / sim / core / web / out 七个目录），三卷各留一份交接产物；说明三条使用入口——照着读、照着复现、换成自己的规格当模板；划清边界——机制侧可算，主观体验只能用代理指标做相对比较，美术 / 性能 / 网络 / 商业化需真实业务环境（X 档）；最后交代三个后续方向，并让三卷的三个问题在此闭合。</description></item><item><title>2.1 数字原型的最小内核</title><link>https://plumephp.com/gd-proto-02-1-digital-prototype-minimal-kernel/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-02-1-digital-prototype-minimal-kernel/</guid><description>数字原型的最小内核不是「写得少」，而是「可数的少」：一份 config 进、一条 digest 出，5 个模块、4 条不变量、本版 134 行运行时逻辑；单局 4 微秒是原机历史记录。本节把「最小」换成三条可数判据——多少行、几个不变量、跑多久，并用 P 层断言与 S 层实测把它钉死。</description></item><item><title>2.2 数字原型的迭代循环</title><link>https://plumephp.com/gd-proto-02-2-digital-prototype-iteration-loop/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-02-2-digital-prototype-iteration-loop/</guid><description>迭代循环只有三步：改一个参数、跑一次内核、重跑一次原型。一轮的代价是可数的——规格里改 1 行、内核跑几微秒、代理指标重采样几百微秒。本节用 5 轮真实迭代给出这个代价，并用一个负例（energyMax 改成 -1）演示不变量断言如何拦住坏参数。</description></item><item><title>2.3 原型的范围与止损</title><link>https://plumephp.com/gd-proto-02-3-prototype-scope-stop-loss/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-02-3-prototype-scope-stop-loss/</guid><description>原型最大的风险不是做不出来，而是做不完：范围一旦失控，迭代就变成无限拉锯。本节给「该停了」两条可算的判据——连续 3 轮代理指标无变化即停、总轮数上限兜底——并真跑到触发为止：主循环停在第 5 轮，抽掉唯一让指标动过的那轮后 control 停在第 3 轮。</description></item><item><title>3.1 可玩原型的规格内联</title><link>https://plumephp.com/gd-proto-03-1-playable-prototype-spec-inline/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-03-1-playable-prototype-spec-inline/</guid><description>把 config/play_spec.json 与 core/src/ashdeck/ 的五个确定性内核模块塞进一个自包含 HTML：无构建工具、无网络、无外部 script，拷走一个文件就能玩。本节给出构建脚本与产物级断言——页面里内联的规格必须与磁盘上的规格逐字段相等，任何外部引用都会让「可离线、可分享」失效。</description></item><item><title>3.2 浏览器里的真玩与断言</title><link>https://plumephp.com/gd-proto-03-2-browser-play-and-assert/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-03-2-browser-play-and-assert/</guid><description>在无头浏览器里真的玩一局：注入的是整段 25 条策略序列，不是逐帧点按；断言的是胜负与状态（won / over / enemyHp / dealt 与不变量），而不只是一条摘要。页面 digest 必须与 Node 侧 digestSnap(runSpec(...)) 逐字相同——同一段源码的两个宿主本就该给出同一个答案。</description></item><item><title>3.3 原型的可分享与可回放</title><link>https://plumephp.com/gd-proto-03-3-prototype-shareable-replayable/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-03-3-prototype-shareable-replayable/</guid><description>把「种子 + 整段策略序列」编码成可回放的链接片段 #s=301&amp;seq=...，页面读取 location.hash 后逐字重现同一局。本节给出编解码契约、页面侧 replay() 的三步、以及回放一致性的断言：Python 侧重跑与 Node 构建期 digest 逐字相同，再编码必须无损。</description></item><item><title>4.1 测试的目标与假设</title><link>https://plumephp.com/gd-proto-04-1-test-goal-hypothesis/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-04-1-test-goal-hypothesis/</guid><description>「我想验证难度会不会太高」不是假设，是愿望——它没法被判伪。本节把测试目标写成可机检的五元组：指标、方向、阈值、样本量与一对互斥命题；先做可证伪性自检，再用 32 个种子的试点反推所需样本量，实跑得 nRequired=256，与设计门槛 Δ=150‰ 对齐。</description></item><item><title>4.2 采样与置信区间</title><link>https://plumephp.com/gd-proto-04-2-sampling-confidence-interval/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-04-2-sampling-confidence-interval/</guid><description>样本量决定「看得见的最小差别」。本节把样本量落到整数 Wilson 区间上：对占比类可解率用 z=2 的整数近似（isqrt，非 1.96），对非占比类用块极差；六档种子数实跑显示半宽之和从 n=8 的 545‰ 收到 n=256 的 117‰，刚好跨过 Δ=150‰。</description></item><item><title>4.3 从测试到决策</title><link>https://plumephp.com/gd-proto-04-3-test-to-decision/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-04-3-test-to-decision/</guid><description>区间要变成决策，判据必须是三态而不是两态。本节用整数判据输出通过 / 不通过 / 样本不足：先看半宽之和能否分辨 Δ，再看点差够不够。实跑三个案例恰好各出一态，其中小样本案例点差高达 375‰ 却被诚实地判为「样本不足」，而参数微调案例点差为 0 判不通过。</description></item><item><title>5.1 卡牌构筑的机制解剖</title><link>https://plumephp.com/gd-proto-05-1-deckbuilder-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-05-1-deckbuilder-mechanic-anatomy/</guid><description>把《灰烬牌库》的五个机制字段——洗牌袋、抽牌、出牌、能量、弃牌——各绑到确定性内核里的一段代码，用一张字段表把机制名词与可断言的实现对齐：W 层把五个字段画进单文件 HTML 并真玩，P 层逐字段断言，两处 digest 与基线逐字一致，W 层 3 断言、P 层 7 断言全绿。</description></item><item><title>5.2 构筑的方差与平衡</title><link>https://plumephp.com/gd-proto-05-2-deckbuilding-variance-balance/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-05-2-deckbuilding-variance-balance/</guid><description>把构筑的方差量成整数：精确枚举 C(12,5)=792 种起手，三副牌组的起手强度方差相差 5.8 倍；「均匀」与「起伏」两副牌起手期望完全相同（均值 30），方差却是 12727 对 57272，胜率一样而结束回合的方差相差 2.3 倍——方差不是坏东西，它是节奏的来源。</description></item><item><title>5.3 构筑的相变</title><link>https://plumephp.com/gd-proto-05-3-deckbuilding-phase-transition/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-05-3-deckbuilding-phase-transition/</guid><description>把牌组规模当成被扫的构筑参数：往《灰烬牌库》里加废牌，牌组从 12 张膨胀到 32 张，128 个种子上的胜率从 1000‰ 掉到 46‰。粗扫步长 4 框住跨越 500‰ 的区间 [20, 24]，二分 2 轮钉出临界牌组规模 22，与步长 1 的全网格逐个一致；相变带宽 13，2688 次 run 实跑约 28 毫秒。</description></item><item><title>6.1 塔防的机制解剖</title><link>https://plumephp.com/gd-proto-06-1-tower-defense-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-06-1-tower-defense-mechanic-anatomy/</guid><description>把塔防的五个机制字段——路径、波次、索敌、塔位、升级——各绑到 core/genre/towerdefense.ts 里一段确定性代码，用一张字段表把机制名词与可断言实现对齐：规格骨架与 play_spec.json 同构、只覆盖 rules / params 两段，W 层把字段画进单文件 HTML 并真玩，P 层逐字段断言，两处 digest 与基线逐字一致。</description></item><item><title>6.2 塔防的策略空间</title><link>https://plumephp.com/gd-proto-06-2-tower-defense-strategy-space/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-06-2-tower-defense-strategy-space/</guid><description>把塔防的「塔位 × 塔种 × 升级次序」枚举成策略空间：忽略花费剪枝的上界 271453 经剪枝压到 529 条可达布防，空间熵 9046、结果分布熵 2293、支配缺失度 331‰；全配置上界 469070941 远超枚举上限，只能按索引采样 512 次，并给出「何时改用采样」的判据。熵与支配度是代理指标，只做相对比较。</description></item><item><title>6.3 塔防的难度曲线</title><link>https://plumephp.com/gd-proto-06-3-tower-defense-difficulty-curve/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-06-3-tower-defense-difficulty-curve/</guid><description>把波次强度 waveHpStep 从 0 往上推，用粗扫 + 二分找「防守被解开」的临界点：临界点是 14，两侧胜率 13→937‰、14→343‰、15→0‰，临界宽度只有 1；粗扫 + 二分只用 7 格 224 run 就钉到，占步长 1 全网格的 114‰，并给出二维网格超预算时退回采样的判据。胜率是代理指标，只做相对比较。</description></item><item><title>7.1 三消的机制解剖</title><link>https://plumephp.com/gd-proto-07-1-match3-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-07-1-match3-mechanic-anatomy/</guid><description>把三消的五个机制字段——棋盘、交换、消除、掉落、连锁——各绑到 core/genre/match3.ts 里一段确定性代码，用一张字段表把机制名词与可断言实现对齐：规格骨架与 play_spec.json 同构、只覆盖 rules / params 两段，W 层把字段画进单文件 HTML 并真玩，P 层逐字段断言，两处 digest 与基线逐字一致。</description></item><item><title>7.2 三消的随机与保底</title><link>https://plumephp.com/gd-proto-07-2-match3-randomness-pity/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-07-2-match3-randomness-pity/</guid><description>三消的随机不是抽一张牌，是整块棋盘：每次补牌都可能补出一个没有任何合法交换的死局。本节用同一批 256 个种子量死局率，再把「连续 N 次无可消就重排整板」的保底写成可播种的整数代码——保底把死局率从 121‰ 压到 0‰，同时把分数标准差从 265 削到 132；死局率与方差是代理指标，只做相对比较。</description></item><item><title>7.3 三消的节奏</title><link>https://plumephp.com/gd-proto-07-3-match3-rhythm/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-07-3-match3-rhythm/</guid><description>三消没有回合，节奏量不出时长，只能量每步结算的形状：256 局 6144 步的连锁长度分布（1 层 639‰、2 层 232‰、尾巴拖到 10 层）与每步消除数分布（3-5 格 533‰、平均 6.182 格），加代表种子 70701 的24 步节奏线与 CSV + 纯 xml.etree SVG，并用 Python 镜像做跨语言逐字对账；节奏指标是代理指标。</description></item><item><title>8.1 平台跳跃的机制解剖</title><link>https://plumephp.com/gd-proto-08-1-platformer-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-08-1-platformer-mechanic-anatomy/</guid><description>把平台跳跃的六个机制字段——水平速度、跳跃高度、重力、土狼时间、输入缓冲、平台判定——各绑到 core/genre/platformer.ts 里一段确定性代码，位置与速度一律用千分格整数表达，禁浮点；规格骨架与 play_spec.json 同构、只覆盖 rules / params 两段，W 层把字段画进单文件 HTML 并真玩，P 层逐字段断言，两处 digest 与基线逐字一致。</description></item><item><title>8.2 平台跳跃的技巧曲线</title><link>https://plumephp.com/gd-proto-08-2-platformer-skill-curve/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-08-2-platformer-skill-curve/</guid><description>把「技巧」操作化成一个可算的量：玩家每一跳的按压时刻相对帧级完美点偏移 ±n 帧，枚举 (2n+1)^跳数 条序列报通关率，得到一条单调不增的技巧曲线；n≤2 恒为 1000‰，tol1000 = 2 帧、tol500 = 8 帧。通关率是代理指标，只做相对比较。</description></item><item><title>8.3 平台跳跃的心流带宽</title><link>https://plumephp.com/gd-proto-08-3-platformer-flow-band/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-08-3-platformer-flow-band/</guid><description>把「挑战（关卡要求的容差帧数）− 技巧（玩家可达到的容差帧数）」做成带宽区间而不是单点：扫第一块落点平台宽度得到单调不降的容差曲线，再给高手 / 熟练 / 休闲三档玩家各算一条带宽上下界与越界判据，全部读数都是代理指标，只做相对比较、禁绝对化。</description></item><item><title>9.1 自走棋的机制解剖</title><link>https://plumephp.com/gd-proto-09-1-autobattler-mechanic-anatomy/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-09-1-autobattler-mechanic-anatomy/</guid><description>把自走棋拆成六个机制字段——商店刷新、购买、合成升星、上阵、利息、连胜连败——每格都绑到新建品类内核里的一段确定性代码：W 层把六格商店与待命、上阵画进单文件 HTML 并真玩，P 层逐字段做变异断言，改一格摘要必变，两处 digest 与基线逐字一致。</description></item><item><title>9.2 自走棋的经济与平衡</title><link>https://plumephp.com/gd-proto-09-2-autobattler-economy-balance/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-09-2-autobattler-economy-balance/</guid><description>把自走棋的三个花钱方向——存钱吃利息、刷新换棋子、升级扩容量——都写成整数模型，在 32 个种子上实测：利息是 min(金币整除台阶, 上限)，刷新不亏利息的阈值是 12 金；实跑给出一条可算判据（升级换的是新位、刷新只换最弱）和两个平衡破坏点。</description></item><item><title>9.3 自走棋的涌现</title><link>https://plumephp.com/gd-proto-09-3-autobattler-emergence/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-09-3-autobattler-emergence/</guid><description>把涌现度写成「可达阵容数 / 规则条数 × 1000」的代理指标：本规格枚举出 9390 个可达阵容、16 条规则，涌现度 586875‰；但如实报告一个退化解——敌方强度扫到 20 时只剩 1 个阵容每回合都能赢，21 起无解，涌现度必须与退化检测同读。</description></item><item><title>附录 A 品类参数表、机制距离矩阵与数据集索引</title><link>https://plumephp.com/gd-proto-appendix-a/</link><pubDate>Wed, 14 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/gd-proto-appendix-a/</guid><description>《游戏设计》卷三《原型、可玩性与品类》附录：把六个品类变体的规则段与参数段关键字段汇成品类参数表、把 6×10 整数特征向量与 6×6 机制距离矩阵（L1 与归一化千分比两级）汇成距离表、把全卷 16 章的 S/P/W/D/B 产物按章汇成数据集索引。距离与全部指标都是代理指标，只做相对比较，禁绝对化。</description></item><item><title>《游戏设计》卷二《策略、涌现与体验度量》目录</title><link>https://plumephp.com/gd-play-toc/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-toc/</guid><description>《游戏设计》卷二《策略、涌现与体验度量》目录：16 章 48 节，从卷一的可执行规格出发，把机制跑起来之后的动态与体验全部操作化为可计算指标——策略空间与 Shannon 熵、支配策略检测、极小极大与均衡、涌现与退化解、平衡与相变、玩家动因与类型、情绪曲线与心流带宽、技巧习得、体验度量与可玩性、参数反推。本页给出与既有内容的分工、六档可运行性口径与全书 16 章 48 节完整清单。</description></item><item><title>1.1 策略的表示：动作序列与决策树</title><link>https://plumephp.com/gd-play-01-1-strategy-representation-action-sequence/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-01-1-strategy-representation-action-sequence/</guid><description>策略是「状态到动作」的映射，在规格里有两种写法：定长的动作序列与按状态分支的决策树。本节用《灰烬牌库》把两种写法并排跑一遍——同一份 play_spec.json，固定序列在 16 个种子上只实现出 1 条序列，贪心决策树实现出 16 条，而自实现步进器的 digest 与公共库逐字一致。</description></item><item><title>1.2 策略空间枚举与 Shannon 熵</title><link>https://plumephp.com/gd-play-01-2-strategy-space-enumeration-entropy/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-01-2-strategy-space-enumeration-entropy/</guid><description>策略空间是全部合法动作序列的集合。本节先用 |A|^D 给出规模粗上界，再用广度优先把深度 8 以内的合法前缀树真的枚举出来——1679616 条粗上界里只有 181166 条合法，剪枝率 107‰；再在枚举出的空间上算四个整数定点 Shannon 熵，并解释为何深度 8 时结果熵会塌成 0。</description></item><item><title>1.3 策略空间的规模控制</title><link>https://plumephp.com/gd-play-01-3-strategy-space-scale-control/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-01-3-strategy-space-scale-control/</guid><description>策略空间 |A|^D 会爆炸，深度 25 时是 2.8×10^19 条。本节把规模压回可算的三道闸——剪枝、去重、采样——逐道量化：合法序列占粗上界 107‰，去重后深度 8 只剩 1877 个状态；采样器先在可枚举的深度 6 上校准（均值差 111‰），再外推到不可枚举的深度 12，并给出「何时改用采样」的整数判据 D*=8。</description></item><item><title>10.1 心流：挑战与技巧的匹配</title><link>https://plumephp.com/gd-play-10-1-flow-challenge-skill-match/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-10-1-flow-challenge-skill-match/</guid><description>心流常被讲成「挑战等于技巧」的一个点，但整数机制里没有那个点。本节把技巧轴落成每回合出牌预算、挑战轴落成敌人攻击强度，逐格跑出《灰烬牌库》的匹配图：每个技巧档的匹配是一段连续区间（带宽）而非单点，并如实报告技巧轴在能量上限处饱和、带宽不再右移。</description></item><item><title>10.2 心流带宽的可计算化</title><link>https://plumephp.com/gd-play-10-2-flow-band-computable/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-10-2-flow-band-computable/</guid><description>带宽是一段挑战区间，不是单点。本节给带宽一个可算的定义：代理胜率落在 [hard, easy] 内的连续整数区间；再用粗扫定位、整数二分把上下沿各钉到 ±1，报出每个技巧档的带宽宽度、中心位移、相邻档重叠，以及技巧轴饱和时带宽如何随之饱和。</description></item><item><title>10.3 带宽与难度设计</title><link>https://plumephp.com/gd-play-10-3-band-and-difficulty-design/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-10-3-band-and-difficulty-design/</guid><description>有了带宽，难度曲线该怎么排？本节用 10.2 的带宽表对照两条排法：定点排布把挑战全程钉在开局技巧档的带宽中心，带宽跟随排布把挑战排在当前技巧档的中心。12 关逐关实跑，报出带宽内关数与偏离代价，并说明带宽跟随排布为什么依赖实测的技巧曲线与带宽表。</description></item><item><title>11.1 技巧习得的建模</title><link>https://plumephp.com/gd-play-11-1-skill-acquisition-modeling/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-11-1-skill-acquisition-modeling/</guid><description>技巧不是一个数，而是一组可播种的决策熟练度。本节把《灰烬牌库》的出牌纪律、防御时机、免费牌三个维度写成 0..1000 的整数参数，用指数逼近与幂律两种整数递推模拟越练越强，再在固定评测场景与固定种子池上实测胜率，得到一条可复现的习得曲线；B 层换四组种子池与三个速率假设检验达标 trial 数稳不稳。</description></item><item><title>11.2 习得曲线与难度曲线</title><link>https://plumephp.com/gd-play-11-2-acquisition-difficulty-curve/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-11-2-acquisition-difficulty-curve/</guid><description>难度不该是固定的一条线，而该跟着技巧走。本节把 11.1 的习得曲线反过来用：在难度轴上逐格反推「需要多少熟练度才能把胜率做到 500‰」，得到一条必需能力曲线，再比较固定难度与按习得反推两种排布，用落在目标带内的关卡占比当作对齐度；B 层换四组种子池与三个目标带，看对齐度这个代理指标到底能引用到什么程度。</description></item><item><title>11.3 天花板与瓶颈</title><link>https://plumephp.com/gd-play-11-3-ceiling-bottleneck/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-11-3-ceiling-bottleneck/</guid><description>练满之后还拦得住玩家吗？本节把天花板定义为熟练度全 1000 时的胜率、地板定义为全 0 时的胜率，用留一法算出每个技巧维度的边际增益，在难度网格上找出瓶颈归属、被证伪的维度、以及会变号的维度；B 层换四组种子池看瓶颈标签稳不稳、冠亚军差距会不会被摆动淹没。全程只用代理指标做相对比较，不绝对化。</description></item><item><title>12.1 体验指标的选取</title><link>https://plumephp.com/gd-play-12-1-experience-metric-selection/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-12-1-experience-metric-selection/</guid><description>体验指标不能凭直觉堆。本节给一个八条候选的可算池，再用两条整数判据——跨配置区分度与两两同序冗余度——做贪心筛选；实跑《灰烬牌库》十二个配置，8 个候选里只有 band / entropy / domFree 三条互不冗余，其余五条要么分不开配置，要么与入选者几乎同序。</description></item><item><title>12.2 从机制仿真到体验指标</title><link>https://plumephp.com/gd-play-12-2-mechanic-sim-to-experience-metric/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-12-2-mechanic-sim-to-experience-metric/</guid><description>仿真快照里的一个字段还不是体验指标。本节把「字段到指标」拆成四段固定管线——每种子取值、聚合、归一化、减基线——再实跑 5 个字段 × 4 个聚合算子 × 12 个配置：同一个字段换成最大值而非均值就是另一个指标，某些字段在特定策略下恒为零，区分度全丢。</description></item><item><title>12.3 指标的置信区间</title><link>https://plumephp.com/gd-play-12-3-metric-confidence-interval/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-12-3-metric-confidence-interval/</guid><description>换一批种子，指标就变了——点估计是错觉。本节给两个全整数区间口径：块极差与整数 Wilson（z=2，用 isqrt 求）。实跑两个场景、六档种子数：临界场景胜率 222‰ 的 Wilson 区间从 n=8 的 [134,698] 收窄到 n=256 的 [175,277]，而小样本区间并不总能盖住大样本值。</description></item><item><title>13.1 可玩性的操作化定义</title><link>https://plumephp.com/gd-play-13-1-playability-operational-definition/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-13-1-playability-operational-definition/</guid><description>把可玩性操作化成四个机制量组成的向量：策略空间熵、支配缺失度、涌现度、相变宽度，再用多指标联合闸门判定。S 层在规格上把四个量算出来，四个变体里退化变体在三个分量上塌下来；B 层把每一维的闸门下限扫一遍，报出每个变体的临界下限与相对余量，看哪一维再抬一点就翻盘。</description></item><item><title>13.2 可玩性指标与采样</title><link>https://plumephp.com/gd-play-13-2-playability-metric-sampling/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-13-2-playability-metric-sampling/</guid><description>把可玩性向量当成一个采样问题：四个分量对种子数的敏感度完全不同——熵是规格属性、与种子无关，相变宽度最慢。S 层以全 16 种子为真值，量出每个分量进容差的最小 k 与闸门判决稳定的最小 k，并给出 |A|^D 超过枚举上限时必须改采样的判据；B 层把容差按倍率扫一遍，看 min-k 到底跟着谁动。</description></item><item><title>13.3 指标的可比性</title><link>https://plumephp.com/gd-play-13-3-metric-comparability/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-13-3-metric-comparability/</guid><description>跨配置到底能不能比：四分量单位不同，比较前必须先归一化，而换一种归一化口径排序就会翻盘。S 层算 6 个配置的可玩性矩阵，量出两种归一化口径下的同序比例 concordance，并暴露相变宽度对测量 regime 的依赖；B 层再扰动闸门阈值、测量 regime 与种子池，数出判决翻盘的次数。</description></item><item><title>14.1 曲线与谱</title><link>https://plumephp.com/gd-play-14-1-curve-and-spectrum/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-14-1-curve-and-spectrum/</guid><description>动态可视化只需两族图：横轴是有序参数的曲线、横轴是离散分箱的谱。本节用纯 xml.etree 手绘坐标轴、网格线、刻度与图例，画出胜率随 enemyAttack 变化的曲线与按牌型分箱的伤害与次数谱，并用 ET.fromstring 回读重建逐格比对；胜率与占比都是代理指标，只作相对比较。</description></item><item><title>14.2 策略空间的热力图</title><link>https://plumephp.com/gd-play-14-2-strategy-space-heatmap/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-14-2-strategy-space-heatmap/</guid><description>热力图不是新指标，而是把「策略族 × 参数档」两张一维表压成一张二维切片，用颜色承载第三个量。本节用纯 xml.etree 逐格画 rect、整数色阶插值、手绘色标图例，画出四种策略族在六档 enemyAttack 下的胜率矩阵并回读重建逐格比对；格值胜率是代理指标，只作相对比较。</description></item><item><title>14.3 相变图的读法</title><link>https://plumephp.com/gd-play-14-3-phase-diagram-reading/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-14-3-phase-diagram-reading/</guid><description>相变图要读三样东西：序参量、临界点、临界带宽。本节用粗扫定位跨越区间、二分把临界点收到整数、再在邻域量出过渡带宽，并用纯 xml.etree 手绘序参量曲线与两相着色的相图，两张图都回读重建逐格比对；胜率是代理指标，只作相对比较，禁绝对化。</description></item><item><title>15.1 从指标反推参数</title><link>https://plumephp.com/gd-play-15-1-metric-to-parameter-inversion/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-15-1-metric-to-parameter-inversion/</guid><description>反推是正推的逆问题：给定目标集成胜率 500‰，求哪个 enemyHp 让曲线穿过它。本节用整数二分把反推从 O(区间) 次正推压到 O(log 区间)，实测只花全网格 131‰ 的算力且结果逐格一致；B 层再对种子池偏移与种子数扰动，检验反推值自身的漂移与分辨率下限。</description></item><item><title>15.2 反推的可行域</title><link>https://plumephp.com/gd-play-15-2-inversion-feasible-region/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-15-2-inversion-feasible-region/</guid><description>一个指标带反推出的不是一个点，而是二维参数平面上的一条带。本节在 enemyHp×enemyAttack 网格上用「胜率带 + 子池稳定性」两条约束圈出可行域，粗扫后逐行二分把边界钉到步长 1，实测域含 9 行、面积 54；B 层再扫带宽与种子数，看域怎么伸缩。</description></item><item><title>15.3 反推的代价与取舍</title><link>https://plumephp.com/gd-play-15-3-inversion-cost-tradeoff/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-15-3-inversion-cost-tradeoff/</guid><description>反推不是免费的：代价 = 正推次数 × 每次正推的成本。本节实测一维二分在 5 个精度上的真实正推次数与耗时，据此标定代价模型，再算出二维全网格在同样精度下要贵一个 R/ε 的因子；最后给预算判据——同样 20 万 runs，一维能钉到 ε=1，二维只能到 ε=2。</description></item><item><title>16.1 动态度量装配</title><link>https://plumephp.com/gd-play-16-1-dynamic-metric-assembly/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-16-1-dynamic-metric-assembly/</guid><description>把本卷前 15 章的动态与体验度量装配成一条可核对的链：19 个 stage 各自声明所属章节、档位、指标名、单位、代理标记与证据文件。S 层核对契约自洽与规格对齐，B 层用 leave-one-out 找出结构承重件。全部体验指标都是代理指标，只做相对比较，禁绝对化。</description></item><item><title>16.2 体验度量的联调</title><link>https://plumephp.com/gd-play-16-2-experience-metric-integration/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-16-2-experience-metric-integration/</guid><description>把 S / P / W 三处真的跑一遍：Python 仿真、TS 内核 node --test、浏览器 Playwright 真玩，三处产出同一条 172 字符 digest，并把同一个体验代理指标（血量余裕度）算成同样的整数。这是「规格跑起来」主张的可验证形态，代理指标只做相对比较，禁绝对化。</description></item><item><title>16.3 交付卷三</title><link>https://plumephp.com/gd-play-16-3-deliverable-handoff-volume3/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-16-3-deliverable-handoff-volume3/</guid><description>卷二的交付物不是一份报告，而是一组冻结的动态接口：规格版本、digest 键清单、PRNG 常数、params 键、基线 digest、代理指标口径（含容差）与采样协议。用一个脚本逐条核对它们是否被冻住，并说明卷三《原型、可玩性与品类》接住什么。</description></item><item><title>2.1 支配关系：严格与弱</title><link>https://plumephp.com/gd-play-02-1-dominance-strict-weak/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-02-1-dominance-strict-weak/</guid><description>支配策略是玩家迟早会发现、然后只用它的那条路——其余策略沦为摆设。本节给严格支配与弱支配的可判定定义，用《灰烬牌库》的固定下标策略族乘 16 个种子，算出 5 条严格支配对、7 条弱支配对、0 条支配策略，并验证严格支配对随种子集合单调增。</description></item><item><title>2.2 检测算法与复杂度</title><link>https://plumephp.com/gd-play-02-2-detection-algorithm-complexity/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-02-2-detection-algorithm-complexity/</guid><description>支配检测问的是：一张 |S|×|Ω| 的得分矩阵里，哪些策略被别的策略处处压住。本节给三种等价实现——全对枚举、按行和剪枝、迭代删除（IESDS），复杂度上界是 |S|·(|S|−1)·|Ω| 次元素比较；在 5×16 实例上朴素法用掉上界的 346‰、剪枝法 309‰，三者结论逐字一致。</description></item><item><title>2.3 支配策略的修复</title><link>https://plumephp.com/gd-play-02-3-dominant-strategy-repair/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-02-3-dominant-strategy-repair/</guid><description>找到支配对只是诊断，修复才是设计动作。本节把「消除全部严格支配对」写成带约束的搜索目标——strictPairs==0 且最优策略仍能赢够局数，再扫 7 个候选旋钮：enemyHp 拉到 79 确实消掉支配，但全员必败（治死）；最小可行修复是 energyMax 3→2，代价 1 步、最优胜局仍 15。</description></item><item><title>3.1 minimax 与极小极大</title><link>https://plumephp.com/gd-play-03-1-minimax/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-03-1-minimax/</guid><description>零和博弈里玩家想最大化最坏结果（maximin），对手想最小化最好结果（minimax）；两者相等时存在纯策略鞍点，即纯策略纳什均衡。本节把《灰烬牌库》的 4 张牌 × 5 种敌人架势写成整数收益矩阵，实跑得到 maximin=−6、minimax=−3、间隙 3、鞍点 0 个——这张矩阵没有纯策略均衡。</description></item><item><title>3.2 混合策略与纳什直觉</title><link>https://plumephp.com/gd-play-03-2-mixed-strategy-nash-intuition/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-03-2-mixed-strategy-nash-intuition/</guid><description>纯策略没有鞍点时，双方按概率混着出招——混合策略把 maximin 与 minimax 之间的间隙补上。本节用整数行列式精确解出 2×2 子博弈，再在完整 4×5 矩阵上验证：重击/格挡按 1/3 与 2/3 混、强攻/反击按 1/4 与 3/4 混，博弈值恰为 −4，且任一纯策略单方面偏离都不会更好。</description></item><item><title>3.3 最优解的代价</title><link>https://plumephp.com/gd-play-03-3-optimal-solution-cost/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-03-3-optimal-solution-cost/</guid><description>最优解有两笔代价。算它：minimax 搜索树有 b^d 个叶，b=6、d=20 时是 3.6×10^15，预算 10^7 下穷举只够到深度 8，alpha-beta 最好情况也只到 16——再深必须改用采样。用它：均衡把概率压在 2/4 的支撑上，熵 919 只有均匀 2000 的 459‰，最优一旦落地就压窄了可玩空间。</description></item><item><title>4.1 涌现：从规则到模式</title><link>https://plumephp.com/gd-play-04-1-emergence-rules-to-patterns/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-04-1-emergence-rules-to-patterns/</guid><description>规则是局部的，模式是全局的。本节把《灰烬牌库》一回合内合法打出的卡牌多重集定义成「回合程序」，解析枚举出合法闭包 35 个，再用状态去重 BFS 算出默认种子可达 34 个、8 种子并集 35 个，得出涌现度 2692‰，并声明它是只做相对比较的代理指标。</description></item><item><title>4.2 涌现的度量</title><link>https://plumephp.com/gd-play-04-2-emergence-metric/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-04-2-emergence-metric/</guid><description>涌现度 = 1000 × 可达模式数 // 分母。它同时依赖粒度（卡牌多重集 / 费用多重集 / 张数）、分母（13 条规则 / 6 个动作符号）与种子集三个声明。本节对 3 粒度 × 2 分母各算一遍：fine 2692‰、cost 1307‰、size 384‰，说明绝对数不可比，但换粒度后 9 个变体的排序不变。</description></item><item><title>4.3 退化解与退化模式</title><link>https://plumephp.com/gd-play-04-3-degenerate-solution-pattern/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-04-3-degenerate-solution-pattern/</guid><description>退化 = 可达模式数不少、但实际打法全挤在一条主模式上。退化指数 = 1000 × 主模式出现次数 // 非空回合程序总数。本节对 64 个优先序策略算胜率与退化指数，按胜线/退化线分成退化解、健康解、退化模式、弱解四象限：退化解 22 个，最退化的 heavy&gt;strike&gt;guard 胜率 1000‰、退化 631‰；B 层证明退化线一动名单就变。</description></item><item><title>5.1 平衡的定义与层次</title><link>https://plumephp.com/gd-play-05-1-balance-definition-layers/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-05-1-balance-definition-layers/</guid><description>平衡不是一个数，是四个层次：卡层看有没有被支配的卡，策略层看胜率带宽，反制层看有没有互相克制，参数层看判定会不会随采样翻转。本节把四层各写成一个可算的整数，用《灰烬牌库》六条打法乘八组遭遇跑出胜率矩阵，结果卡层说平衡、策略层说不平衡、反制层说无反制——同一个机制，四层各说各话。</description></item><item><title>5.2 平衡的度量</title><link>https://plumephp.com/gd-play-05-2-balance-metric/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-05-2-balance-metric/</guid><description>四层结论互相打架时，得把平衡压成一组可比的整数。本节给五个分量——胜率带宽、策略胜率熵、支配缺失度、可用策略数、互有胜负对数——再合成一个复合平衡分，全部是千分比整数。实跑《灰烬牌库》得到 band=703‰、熵=914‰、domFree=166‰、可用 2/6、复合分 605‰，并验证复合分对采样规模不敏感、但分量对容差敏感。</description></item><item><title>5.3 平衡与多样性</title><link>https://plumephp.com/gd-play-05-3-balance-and-diversity/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-05-3-balance-and-diversity/</guid><description>平衡与多样性常被当成一回事，其实是两条轴。本节扫一个旋钮——重击卡的伤害从 6 到 24——同时算平衡度（1000−带宽）与多样性（胜率熵）。结果是一条反例：重击伤害压到 6 时带宽掉到 0，看起来「最平衡」，但熵也掉到 0，六个打法一起赢不了，复合分反而是九行里最低的 500‰。</description></item><item><title>6.1 相变：参数扫过临界点</title><link>https://plumephp.com/gd-play-06-1-phase-transition-critical-point/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-06-1-phase-transition-critical-point/</guid><description>参数扫过某个值之后系统的宏观性质整体改变，这就是相变。本节用二维粗扫画出《灰烬牌库》的相图（enemyHp × enemyAttack，每格 32 个显式种子、胜率千分比），再用一维二分把临界点钉到 ±1；B 层换四组种子池检验临界点与曲线高度是否稳。</description></item><item><title>6.2 序参量与临界指数</title><link>https://plumephp.com/gd-play-06-2-order-parameter-critical-exponent/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-06-2-order-parameter-critical-exponent/</guid><description>序参量是把两相区分开、且在一相里趋于零的宏观量。本节在 enemyHp=75 切片上细扫 enemyAttack，对胜率、残余兵力、未输出比例三个候选序参量各减胜相基线使其归零，再用整数二进对数斜率估出临界指数 beta；B 层换六个拟合窗口检验 beta 有多可信。</description></item><item><title>6.3 相变扫描的实现</title><link>https://plumephp.com/gd-play-06-3-phase-scan-implementation/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-06-3-phase-scan-implementation/</guid><description>相变扫描的工程做法：先用粗扫定位跨越 500‰ 的相邻区间，再用二分把临界点钉到 ±1。本节比较扫描器与全网格的格数、run 数与临界点是否一致，算出扫描只花全网格 255‰ 的算力；B 层再扫六个候选步长，检验步长过细与过粗各自的代价与软告警阈值。</description></item><item><title>7.1 自我决定理论：自主、胜任、关联</title><link>https://plumephp.com/gd-play-07-1-self-determination-autonomy-competence-relatedness/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-07-1-self-determination-autonomy-competence-relatedness/</guid><description>自我决定理论说人有自主、胜任、关联三种基本心理需要，但它们都不可直接测量。本节把每种需要落成代理指标（proxy）：自主用决策点上的合法动作数、胜任用胜率与残余血量、关联因内核没有社交接口而显式记为 N/A，并在松中紧三个遭遇点上跑出 9 组读数。</description></item><item><title>7.2 动因模型的可计算化</title><link>https://plumephp.com/gd-play-07-2-motivation-model-computable/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-07-2-motivation-model-computable/</guid><description>动因要能被工程使用，必须把归一化、权重、缺失处理三件事全部写成声明。本节把自主与胜任归一化到 0–1000，在 energyMax × handSize 网格上算出 20 个动因总分 M，并用三组权重各算一遍：最优格不变，但最优与次优的差距从 50 变到 66 再变到 33。</description></item><item><title>7.3 动因与机制的对齐</title><link>https://plumephp.com/gd-play-07-3-motivation-mechanic-alignment/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-07-3-motivation-mechanic-alignment/</guid><description>对齐在本节只有一个可判定的含义：每个动因分量能不能被某个旋钮单独推动。本节在固定工作点上逐个扰动五个旋钮，量出它们对自主与胜任的 Δ，判定专属、共享、死旋钮三类归属：自主有两个专属旋钮，胜任一个都没有，关联无任何旋钮，对齐度只有 333‰。</description></item><item><title>8.1 玩家类型学</title><link>https://plumephp.com/gd-play-08-1-player-taxonomy/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-08-1-player-taxonomy/</guid><description>玩家类型在散文里是四个标签，在机制里必须是四条目标函数。本节把类型写成六个结果轴（胜率、伤害进度、存活、出牌量、速通、伤害效率）上的整数权重向量，在 4096 条回合模式策略上枚举出 150 个结果画像，让四个类型各自挑出最优策略：主种子池上四类选出四条不同代表策略，换池掉到两条。</description></item><item><title>8.2 类型到机制的映射</title><link>https://plumephp.com/gd-play-08-2-type-to-mechanic-mapping/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-08-2-type-to-mechanic-mapping/</guid><description>映射度 = 施加一个机制旋钮后某类型的最优得分动了多少（千分比整数）。本节把 12 个旋钮逐个施加到切片规格上，对四个类型各重跑一遍策略空间，得到旋钮 × 类型矩阵：8 个普适、2 个偏向、2 个对照旋钮必须全零；而四个让战斗变短的旋钮反而让探索者受损。</description></item><item><title>8.3 类型的分布与漂移</title><link>https://plumephp.com/gd-play-08-3-type-distribution-drift/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-08-3-type-distribution-drift/</guid><description>类型分布不是常数。本节用整数最佳回应动力学让人口占比按各类型最优得分相对平均分迭代，敌人攻击从 12 扫到 18，同一初始分布漂移 244‰ 到 278‰；再把每条策略当成行为固定的玩家做归类，分类漂移率从 0‰ 涨到 156‰——类型边界本身也在动，重排集中在 14 到 16 这一段。</description></item><item><title>9.1 张力与释放</title><link>https://plumephp.com/gd-play-09-1-tension-and-release/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-09-1-tension-and-release/</guid><description>张力不是主观感受，而是可观测状态的代理指标。本节把每回合张力定义为「推进度」与「承压度」两个千分比分量的整数均值，在《灰烬牌库》上量出单局曲线，看峰值如何随 enemyAttack 抬高、取胜时张力怎样在决胜回合被释放、落败时又怎样无处释放；峰值只描述拉得多紧，释放落差才描述松没松开。</description></item><item><title>9.2 情绪曲线的可计算化</title><link>https://plumephp.com/gd-play-09-2-emotion-curve-computable/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-09-2-emotion-curve-computable/</guid><description>单局张力是一条读数，多局张力才是一条曲线。本节把固定种子池上的每局张力按回合取整数均值，并规定「已结束的局按 0 计入」这一释放口径，于是曲线自带上升—高潮—回落的形状；再从曲线抽出峰值、峰值回合、面积、蓄势、释放落差五个整数特征，画成纯 xml.etree SVG。</description></item><item><title>9.3 情绪与节奏的对齐</title><link>https://plumephp.com/gd-play-09-3-emotion-rhythm-alignment/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-09-3-emotion-rhythm-alignment/</guid><description>曲线画得好不等于节奏对得上。本节把「节奏」操作化为每回合的行动数，用整数同序率量张力曲线与行动节奏是否同向：baseline 只有 290‰（低于 500‰ 随机基线，说明节奏前置、张力后置），把动作后置的策略能升到 810‰，而调高能量反而把同序率压到 0‰。</description></item><item><title>附录 A 动态与体验指标公式、参数表与数据集索引</title><link>https://plumephp.com/gd-play-appendix-a/</link><pubDate>Wed, 14 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/gd-play-appendix-a/</guid><description>《游戏设计》卷二《策略、涌现与体验度量》附录：把全卷 16 章的动态与体验指标定义式汇成一张整数公式表、把共享种子池与各章工作点汇成一张参数表、把 48 节的产物与生成脚本汇成一张数据集索引表，并给出一段真跑过的全卷指标总表聚合内核。全部指标都是代理指标，只做相对比较，禁绝对化。</description></item></channel></rss>