这是一个自动数值卡牌 PK 游戏。
- 选两张卡。
- 调等级(1–100)。
- 开始战斗。
- 看谁赢。
实力体系分两类:输入(决定战斗表现)与评价(事后衡量)。
输入 —— 决定战斗表现:
- Level — 第一实力维度。Lv100 与 Lv40 之间存在巨大差距(超指数成长)。
- Rarity — 第二实力维度。C / C+ / B / B+ / A / A+ / S / SS / SSS / SSS Collector / XS / XS Collector,共 12 档,使用显式倍率表(C=1.00 → XS Collector=13.20)。Rarity 越高,相邻档之间实力提升越明显;Collector 档对前一普通档有明显跳升。
- 12 个战斗属性 — 生命 / 攻击 / 防御 / 速度 / 命中 / 闪避 / 暴击率 / 暴击伤害 / 穿透 / 吸血 / 每回合回复 / 波动,是实际战斗内容。
评价 —— 不参与战斗:
- Battle Power — 只读最终属性计算的综合数字,帮你快速判断两张卡谁更强。它不参与战斗、不修改伤害、不强制胜者;BP 越高长期平均越强,实力接近时互有胜负。
- 打开
index.html(或npm run serve后访问 http://127.0.0.1:8774)。 - 左侧选蓝方卡,右侧选红方卡。
- 拖动等级滑条,双方 HP / 攻击 / 防御 / 速度 / Battle Power 实时变化。
- 点「开始战斗」:先完整模拟,再按 慢 / 快 / 瞬 回放事件。
- 看战斗日志、回合数、双方 HP、胜者,点「再战」换一个 Match Seed 再来。
内置 96 张固定卡牌(12 档 × 8 张):保留原始 24 张,并新增 72 张来自动漫、游戏、电影、神话与流行文化的角色/人物名。所有新增卡仍只使用现有 12 项战斗属性,不增加技能系统;玩家不需要创建卡牌。
每回合双方各行动一次,速度(SPD)决定先后手:
再生 → 命中判断 → 暴击判断 → 防御/穿透修正 → 伤害 → 吸血 → 下一回合
直到一方 HP = 0。战斗保留随机性(命中/闪避、暴击、伤害波动、速度先手概率),但全部随机来自内部确定性 PRNG:同两张卡 + 同 Match Seed → 完全相同的对局。播放速度(慢/快/瞬)只改变事件之间的延迟,绝不改变结果。
- 等级曲线:
g(L) = exp(0.02143·L + 0.0002253·L²),g(40)=3.38,g(55)=6.42,g(100)=81.12 - 稀有度表(显式倍率,无公式拟合):
| Rarity | C | C+ | B | B+ | A | A+ | S | SS | SSS | SSS Collector | XS | XS Collector |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 倍率 | 1.00 | 1.15 | 1.35 | 1.60 | 1.90 | 2.30 | 2.90 | 3.75 | 4.90 | 6.60 | 9.10 | 13.20 |
- 最终属性:
p = g(L) × rarityMul(稀有度),HP/ATK/DEF/SPD = 基准 × 卡牌形状 × p - 产品关系:
Lv55 XS Collector × g(55) ≈ Lv100 C × g(100)(p ≈ 84.8 vs 81.1)→ 总体对抗有悬念 - 基础伤害:
ATK² / (ATK + DEF×(1−PEN)),再乘暴击与波动 - Battle Power:12 项最终属性的透明非线性评价
npm test # node:test 全量测试(零依赖)
npm run verify # 静态检查 + 全量测试 + 产品实战验收
npm run serve # 本地静态服务器测试覆盖:Level 单调性、Rarity 层级、Battle Power 排序、同 Match Seed 确定性、播放速度独立、战斗终止、无 NaN、HP 合法、近战力双方都能赢、大差距不翻盘、相邻档梯度与 Collector 跳升;npm run verify 还包含多等级 BP 审计(Lv25/55/100 循环赛,Spearman ≥ 0.90)。
index.html 单页入口(只加载 4 个模块)
styles.css
src/cards.js 96 张内置卡 + 12 档稀有度(含 24 张 legacy BP 参考卡)
src/power.js Level 曲线 + Rarity 倍率表 + 属性计算 + Battle Power
src/battle.js 确定性自动战斗引擎(先模拟后播放)
src/app.js 页面交互与回放
tests/ node:test 测试
scripts/ 静态检查 / 产品验收 / 本地服务器
BP 对七组固定参考属性估计命中、穿透后伤害、暴击期望、生存与有限续航,再取几何平均;只用最终属性,不读等级、稀有度、身份或当前 HP。速度仅估计先手价值,波动取中性,单一 BP 不表达尾部风险,也不是胜率百分比。公式及参考常量见 src/power.js。
scripts/bp-evaluation.js 固定卡对划分、等级组合、seeds 与门槛,输出 SHA-256。BP v4 的冻结深度审计继续只运行在原始 24 张 LEGACY_CARDS 上;扩展后的 96 张全卡池另由产品验收执行轻量循环赛与 BP 相关性检查,因此扩卡不会偷偷重写历史校准集。校准和保留池卡对、seed 隔离;历史全卡池诊断已被查看,因此保留池是系数拟合独立数据,不声称卡牌身份从未被观察。全共同对手仅作最终回归:Lv25/55/100 分别 rho≥0.90,每 seed 聚合 22 对手和两个座位,用 512 个配对差计算 t 区间;按实测及用户批准,显著差门槛为 1 个百分点。
近/中/远 BP 分别为 ≤1.06、(1.06,1.25)、≥1.25。近 BP 全部检查双方 wins/total≥5%(total 包括平局),同时约束数量和类别/等级覆盖。远 BP 要求总体得分≥70%,且至少85%组合的高BP方实际胜率≥70%。常数、Level×Rarity、反向负面对照必须按预期原因失败。保留集一旦用于调参,永久转为回归集,不可继续称为保留集。完整审计失败意味着 BP 尚未完成,不得降低门槛。
评价清单 v4:v2、v3 保留池永久转为历史回归并全量保留。新保留池使用 [14,31,57,81,94] 级锚点与新的 seeds,排除参与拟合的全部修复卡对;保持与校准/修复卡对隔离,并与历史池的单位等级组合及 seeds 不重叠。历史上出现过的卡牌身份不被宣称为从未观察。先手收益与参考属性已重新校准;再生采用 50% 的可用性估计系数,模拟器规则不变。