三选一爬塔:把「选择空间」做成旋钮的策略决策实验室
每回合从攻击/护盾/经济卡中选 1 张,数值累积对抗逐回合增强的拦路怪,撑过 12 回合即胜;可选卡数与敌人成长斜率直接做成滑块,亲手体会「选择空间大小本身就是难度」。
玩法拆解
- 每回合从 N 张卡(2/3/4 可调)中选 1 张:攻击 +X / 护盾 +X / 经济 +X,其余作废
- 选卡后战斗自动结算:击杀出手数 = ceil(敌HP/你攻),受击伤害 =(出手数−1)× max(1, 敌攻−你防)
- HP 归零败北;撑过第 12 回合胜利,终局得分 = 300 + 金币 + 剩余 HP
- 读局势(自身三维 + 当前怪与下回合怪预告)→ 发牌(攻 35% / 防 30% / 经济 35%)→ 选 1 张
- 自动结算 → 击杀赏金 +3 → 休整:每 10 金币自动换 3 HP(缺多少补多少,上限 30)
- 敌人按斜率逐回合变强(HP ≈ 3 + 回合×斜率×2.2,攻 ≈ 1 + 回合×斜率×0.8),回到读局势
- 基于 AtomCore 原子试玩引擎的纯静态单文件 demo:Canvas 2D 竖屏自适应,零依赖零外部请求
- 回合仅 choose / resolve 两态;选卡后 550ms 延迟推进,token 防「重开后旧定时器推进新局」竞态
- 两个滑块(敌人成长斜率 / 每回合卡数)经 game.params 实时生效于发牌与敌人生成
关键代码
Demo
点开始,每回合从攻击/护盾/经济卡中选 1 张(其余作废),数值累积自动与拦路怪结算,撑过 12 回合即胜;侧栏两个滑块可实时调敌人成长斜率与每回合可选卡数。
文章
三选一爬塔:把「选择空间」做成旋钮的策略决策实验室
一句话本质
这是为「策略决策(Choice / Strategy)」母型建造的实验室级最小游戏实例:每回合从攻击/护盾/经济卡中选 1 张,数值累积后自动与逐回合增强的拦路怪结算,撑过 12 回合即胜。它不假装是商业游戏——没有美术包装、没有卡组 meta——而是一台「选择空间实验装置」:把母型的两根设计主轴(每回合可选卡数、敌人成长斜率)直接做成滑块,让你亲手拧一拧,看难度如何随之改变。
行为循环
- 读局势:看自己的 HP/攻/防/金,看当前拦路怪的 HP/攻,以及画面直接给出的下回合怪预告。
- 发牌:按攻 35% / 防 30% / 经济 35% 的权重发 N 张卡(N = 2/3/4 可调)。
- 选 1 张:选中即生效(攻 +X / 防 +X / 金 +X),其余作废——机会成本立刻落地。
- 自动结算:击杀出手数 = ceil(敌HP/你攻),受击伤害 =(出手数−1)× max(1, 敌攻−你防),公式就印在手卡上方。
- 休整:击杀赏金 +3,随后每 10 金币自动换 3 HP(缺多少补多少,上限 30)——经济是「存起来的血」。
- 推进:HP 归零败北;撑过第 12 回合胜利;否则敌人按斜率变强,回到第 1 步。
原语标注
Choose(cardId)— 从 N 张卡中选 1 张,其余作废(choose)Compare(卡面收益, 敌方威胁)— 权衡「这张卡现在值多少」与「这回合会挨多少打」(compare)Accumulate(攻/防/金)— 卡牌数值永久累积到玩家面板(accumulate)ResolveCombat()— 按公开公式自动结算,战报逐条可回溯ConvertGold(10金→3HP)— 休整时经济自动折算为续航AdvanceRound()— 敌人按 slope 成长,回合推进,12 回合封顶
参数速查表
| 参数 | 说明 | 默认值 | 范围/公式 | |------|------|--------|-----------| | slope | 敌人成长曲线斜率(滑块) | 1.2 | 0.6 ~ 2.0,步进 0.1 | | cards | 每回合可选卡数(滑块) | 3 | 2 / 3 / 4 | | 敌人 HP | 逐回合增长 | 6(首回合) | round(3 + 回合 × slope × 2.2),默认斜率下末回合 35 | | 敌人攻击 | 逐回合增长 | 2(首回合) | round(1 + 回合 × slope × 0.8),默认斜率下末回合 13 | | 玩家初始面板 | HP / 攻 / 防 / 金 | 24(上限30) / 5 / 1 / 0 | 固定 | | 攻/防卡数值 | 随回合缓慢升值 | — | 2 + ⌊回合/4⌋ + 随机 0~1 | | 经济卡数值 | 随回合明显升值 | — | 5 + ⌊回合×1.2⌋ + 随机 0~3 | | 击杀赏金 | 每杀一怪 | +3 金 | 固定 | | 休整比例 | 金币换血 | 10 金 → 3 HP | 最多补到上限 30 | | 胜利条件 | 撑过回合数 | 12 | 固定;终局分 = 300 + 金 + 剩余 HP |
设计取舍
- 两个滑块就是母型的两根主轴。
cards调选择空间大小:卡越少,想要的类型越可能没来,决策从「选最优」退化为「将就」——选择空间本身就是难度。slope调风险累积速度:斜率越高,只堆攻或只攒钱的单一策略越早被放大惩罚。难度不藏在数值表里,而是暴露给玩家亲手体会。 - 公式印在画布上。受击伤害公式直接写进画面,每回合战报逐条可回溯——落实母型交付清单的「后果可解释」:玩家能说出「我输在第几回合的哪一张卡」。
- 经济即存起来的血。金币只在休整时按 10:3 换血且缺多少补多少,成为延迟兑现的防御,三条卡型真·此消彼长,而非净收益趋同的伪选择。
- 下回合敌人预告。信息全公开,把难点从「猜」压回「权衡」;残余不确定性由卡牌随机供给承担——避免纯猜测,也避免纯算术。
- 实验室的诚实。跨局战绩只有两行胜/负计数,数值模型一眼看穿。它刻意只做一件事:让你调滑块,观察「选择空间 × 成长斜率」如何改写「能否撑过 12 回合」的答案。
实现要点
- 纯静态单文件:基于 AtomCore 原子试玩引擎(Canvas 2D,2:3 竖屏自适应),零依赖、零外部请求,
?lang=zh切换中文。 - 两态回合机:
phase只有choose/resolve;选卡后 550ms 延迟推进回合,并用 token 防止「重开后旧定时器推进新局」的竞态。 - 发牌与结算分离:
dealCards按权重随机发牌,pick只做「生效 → 结算 → 休整 → 战报」四步;战斗全自动,操作成本为零,决策成本就是全部。 - 滑块即配置:
game.params实时读入enemyFor与dealCards,改斜率下一回合敌人立刻变强,改卡数下一次发牌立刻变化。 - 调试钩子:
window.__atomGame暴露只读游戏对象,便于自动化验证与数值回放。
你可能也喜欢

文章深度拆解 Match-3 核心玩法机制,聚焦 3/4/5 消的强度分层逻辑。通过量化分析消除爽点投放节点与动态卡点控制策略,揭示如何以规则驱动用户留存。内容涵盖可控随机生成算法与关卡节奏设计,旨在帮助开发者构建高粘性消除体验,提升游戏数值平衡度与可玩性。

深度解析合成与升级玩法,拆解合并规则、产出节奏及局内反馈机制。文章梳理从玩法目标到核心循环的实现路径,提供高复用数据结构与数值设计要点,助开发者构建低门槛高成长的放置类合成系统。

文章深度拆解多结局触发条件编写与玩家路径引导机制。通过量化核心要素明确通关门槛,构建从强提示到无引导的分级提示体系,并设计动态反馈以平衡探索自由度,帮助开发者高效构建多结局叙事结构。