第 24 章 难度、平衡与随机:让一局既公平又上头
往前数两章(第 22 章)我们聊了”好玩”这件玄学,把它拆成了动机、核心循环和心流三块零件。你学得很快,已经能画出自己塔防的核心循环、也能说出”玩家为什么愿意再动一次手指”。但第 22 章末尾我埋了几个钩子,你大概还记得:
难度曲线要跟着玩家技能长,让玩家尽量待在心流窄带里——那是第 24 章的活。
今天就是这第 24 章。它要解决的困惑是另一个你做游戏一定会撞上的墙:
你做出一局能玩的塔防,可为什么玩家要么第一关就摔键盘,要么第三关就无聊到睡着?敌人放多了他说”太难”,放少了他说”没意思”。
这一章不教你写新代码,但比写代码更要命——它讲的是”怎么调那一堆数字,让一局既公平又有劲”。你作为后端程序员,习惯”逻辑对了就对”。可难度、平衡、随机这三件事,逻辑永远是对的,但玩家就是不爽。它们不是布尔判断题,是手感判断题。我会用”现实问题 → 设计师方案 → 落进游戏成了什么参数”这条你熟的线,把这三个词一个个拆开。
先给你一句定调,整章围着它转:
难度是”敢不敢接”,平衡是”有没有得选”,随机是”惊不惊喜”。三样调好,一局才既公平又上头。
24.1 难度曲线:为什么第一关要”白给”、后面才上强度
我们先从一个现象聊起。你回想自己玩任何一款新游戏,第一关是什么样的?多半是:敌人慢吞吞、血量薄、你随便点点就赢了。你当时可能心想”这游戏也太简单了吧”。可你有没有想过——如果第一关就上强度,你还会玩第二关吗?
这里要先分清两个常被混为一谈的词,术语首现,我先解释。
学习曲线(Learning Curve):说的是”玩家从不会到会,需要爬多少坡”。爬坡越陡,玩家越难入门。它是关于”操作复杂度”的。
难度曲线(Difficulty Curve):说的是”游戏本身越来越难还是越来越易”的走势。它是关于”挑战强度”的。
这两个是独立的。一个游戏可以”学习曲线很平缓”(操作一看就会),但”难度曲线很陡”(后面越来越硬核)。你做塔防,目标就是学习曲线尽量平(拼方块建塔谁都会),难度曲线缓缓往上走(前期白给、后期上强度)。
为什么第一关必须”白给”?回到第 22 章的心流模型你就秒懂了。心流说:玩家待在”挑战难度 ≈ 我的技能”那条窄带里才爽。可你第 22 章没展开讲的残酷事实是——新手进游戏时,他的”技能”是零,甚至连”技能”都还没长出来。他连塔往哪摆、怪从哪来都不知道。这时候如果你第一波就丢 boss,难度 >> 技能,他直接掉进”焦虑区”,摔手柄卸载,心流窄带他连边都没摸到。
设计师的方案就叫”难度爬坡”:第一关故意弱、故意慢、故意让你赢,目的是两件事——一是让玩家先把”核心循环”跑顺(建塔、抵挡、得币、升级,这套动作先变成肌肉记忆),二是让”技能”这条线先长起来。等玩家技能长到 3,你难度给到 4;技能到 6,难度给到 8。始终咬住那条窄带。这就像健身教练第一节课不让你举最大重量,先让你把动作做对、把信心建立起来,再慢慢加片。
落进你的塔防,这成了几个具体参数:
- 敌人血量成长:第一波小兵 30 血,第二波 45,第三波 70……别线性猛加,跟着”玩家当前塔的总 DPS”走。
- 敌人数量成长:第一波 5 只,第二波 8 只,后期才算多。
- 敌人速度:前期慢,给玩家从容布置的时间;后期掺快速兵,逼你调整布局。
- 引导密度:前期旁边塞提示箭头、高亮可建塔位;后期撤掉,把决策权交还玩家。
这几个数字不是你拍脑袋定的,是调出来的(下一节讲怎么调)。但方向先锁死:曲线必须向上,而且第一关必须”白给”。
你做大富翁也一样。第一圈,别让”命运卡”出太狠的惩罚、别让对手 AI 一上来就抬价逼你破产。让新手先体会到”掷骰、走路、买地、收租”这个闭环是好玩的,技能长出来之后,再用更强 AI、更刁钻的事件卡把难度顶上去。
反问问你:你塔防第一波如果就放 boss,玩家掉进第 22 章说的哪个区?如果永远只放最弱小兵、玩到第十波还一样,他又掉进哪个区?你打算用什么节奏,把这两个极端隔开?
24.2 塔防波次设计思想:波次表是难度曲线的”施工图纸”
上一节说了”难度要爬坡”,但爬坡不是一句口号,它得落成一张你能执行的表。塔防里,这张表就叫波次表(Wave Table)——它规定”第几波、放什么怪、隔多久、给多少奖”。我把它叫难度曲线的”施工图纸”,因为你整章调的那条曲线,最后全写在这张表里。
先讲波次设计的”三段式”思想,这是几乎所有塔防的通用骨架:
早期(教学波):只放一种最弱的小兵,走得慢、血薄、路直。目的不是”考你”,是”教你怎么玩”。让玩家在零压力下学会:怪从哪来、塔怎么建、金币怎么花。这呼应第 24.1 的”第一关白给”——早期波次就是难度曲线最左端那个”几乎贴着地面”的起点。
中期(混合波):开始混兵种。出”快速兵”(血少但跑得快,逼你补减速塔或路口塔)、出”重甲兵”(血厚防高,逼你堆高 DPS 塔)、出”飞行兵”(地面塔打不到,逼你建对空塔)。关键设计心法是:每一种新兵种,都是逼玩家用出一种新策略。你第 20 章说塔防是”建塔升级”的循环,那中期就是让这个循环”被迫变复杂”——玩家不能一套塔用到死,得开始搭配。
后期(精英 / Boss 波):放”精英怪”(自带特殊能力,比如回血、分裂)和”Boss”(超高血量 + 范围技能)。这时候难度曲线到顶,玩家技能也得是满级。Boss 不是来”恶心你”的,是来”给你一场配得上前面所有努力的决战”的。赢了,成就感爆棚(喂第 22 章的成就动机);输了,也心服(因为是你布局没调好,不是游戏耍赖)。
那波次表长啥样?我给你一个思路模板,你照着填数字:
波次 | 怪物组成 | 出现间隔 | 波次间隔 | 奖励
-----+---------------------+----------+----------+--------
1 | 弱兵 x5(慢) | 1.2s | 8s | 金币 50
2 | 弱兵 x8 | 1.0s | 8s | 金币 60
3 | 弱兵 x6 + 快速兵 x3 | 0.9s | 7s | 金币 70
5 | 重甲兵 x4 | 1.5s | 9s | 金币 90
8 | 飞行兵 x5 | 1.0s | 8s | 金币 110
10 | Boss(血量 3000) | — | 12s | 金币 300 + 解锁
几个字段解释一下,都是你落进 Unity 能直接变成变量的:
- 怪物组成:这波刷哪些怪、各几只。它是”难度”的主体——怪的”种类组合”比”单纯数量”更决定难度。一只重甲兵可能比五只弱兵还难顶。
- 出现间隔:同一波内,怪一只接一只刷出来的间隔。间隔越短,玩家火力空窗越小,压力越大。
- 波次间隔:上一波清完到下一波开始,留给玩家”建塔升级”的喘息时间。前期长(教学)、后期短(压迫)。这其实就是第 24.1 说的”给玩家从容布置的时间”的旋钮。
- 奖励:清完这波给多少金币、是否解锁新塔。奖励要和难度挂钩——越难的波给越多,让”硬仗”有”甜头”,玩家才愿意接。
最关键的设计直觉:波次表不是一次写对的,它是”难度曲线”的具象。你画完一张表,实际跑两局,发现第 5 波玩家总崩,那就不是怪太强,是”第 4 波给的金币不够他补塔”——你调的是第 4 波的奖励,而不是第 5 波的怪量。难度是张网,牵一发动全身。
你大富翁没有”波次”,但有等价的”节奏表”:前几圈宽松(少出惩罚卡),中段开始命运卡变多、地价涨,后段有人快赢时塞”均富卡”制造翻盘悬念。本质一样——把”难度”铺在时间轴上。
反问你:你塔防第 3 波想引入”快速兵”,但玩家前期只建了伤害塔、没建减速塔,结果被冲家。这是该改第 3 波的怪量,还是该在第 2 波结束多给金币、让他有机会补塔?先想清楚”难度是张网”再答。
24.3 平衡(Balance)的本质:没有无敌策略,也没有必败局
难度曲线管”一局里难度怎么走”,平衡管的是另一件事:在同一个难度下,玩家有多少种”活法”,且每种活法都”可能赢也可能输”。
先给术语。游戏设计里**平衡(Balance)**指的是:各个可选策略、各个单位、各个角色之间,没有哪一个”强到无解”、也没有哪一个”弱到没用”。理想状态是”石头剪刀布”——你出石头我出布赢你,你出布我出剪刀赢你,谁都别想一套打穿全场。
为什么平衡这么要命?你想想现实生活。考试如果只有”背公式”能拿分,那所有人都会变成背公式机器,考试就失去区分意义;反过来如果某道题谁都做不出,那道题就是废题。游戏也一样:
- 某个塔强到无解 → 玩家只用这一种塔就通关,其他塔设计全白费,游戏变成”单键游戏”,无聊(掉进无聊区)。
- 某个怪强到无解 → 玩家怎么打都输,焦虑区,卸载。
- 某种策略必败 → 玩家试了发现”我按攻略走还输”,觉得游戏耍赖,信任崩塌。
所以平衡的目标,用一句话说就是:让”没有无敌策略”和”没有必败局”同时存在。玩家的胜负,应该由”他这局决策好不好”决定,而不是由”他选没选版本答案”决定。
现在我必须给你泼一个你作为程序员最难受的冷水——平衡不是算出来的,是试出来的。
你写 Go,习惯”需求明确 → 建模 → 推导 → 出正确结果”。可数值平衡没有解析解。你以为”塔 DPS 100、怪血 1000、十秒打死”算得挺美,真跑起来发现:玩家根本不会把塔摆满,他留了钱防意外;怪不是站桩让你打,它边走边脱离射程;前期金币紧张,他建不起十座塔。你那一堆”精确计算”全在现实玩法面前破产。
设计师的方案只有一个字:试(playtest)。你(或找几个朋友)一遍遍真玩,记录”哪波崩了、哪个塔没人用、哪个怪太畜生”,然后改一个数字,再玩。这就是游戏行业的”数值迭代”——它不是数学题,是”调参 + 实测 + 再调参”的循环。你第 20 章做 MVP 时,阶段一单机原型就是为了这个:先把单机跑顺,你才能看清”是数值没平衡,还是我代码写错了”。
这里我要塞给你一句这一章最重要的话,请你刻进脑子:
设计师要自己玩自己的游戏。
很多程序员做游戏翻车,就翻在”我把逻辑写完、丢给测试/玩家去玩,自己从不上手”。你写 Go 后端,业务逻辑错了有单测兜底;可游戏手感没有单测——“难不难、爽不爽”只有人坐下来玩才知道。你塔防做完,你自己连玩二十局,每局记录”第几波我觉得憋屈”,那张波次表你才有资格调。你大富翁做完,你自己连掷五十次骰子,才知道”命运卡是不是太坑新手”。不自己玩,你调的所有数字都是瞎蒙。
落进参数,平衡给你的是一组”相对关系”而不是”绝对值”:
- 塔 A 的 DPS 应该 ≈ 塔 B 的 DPS(同价位下),否则 B 成废塔。
- 怪的”血量 × 数量”应该 ≈ “玩家在该波能有的总输出”,留出 10%~20% 余量(near-miss 的伏笔,见 24.5)。
- 资源产出速度应该 ≈ 玩家”想补塔”的花费速度,别让玩家”钱多到没处花”(无聊)也别”穷到建不起”(焦虑)。
记住:这些数字永远是从”玩”里长出来的,不是从”算”里推出来的。你第 22 章清单第 3 条问”难度是否跟着技能长”,答案就在你一次次 playtest 的手感里。
反问问你:假设你塔防里”火焰塔”DPS 是”冰霜塔”的三倍、价格却只贵一点。这违反了平衡的哪条原则?玩家会怎么应对?你要怎么改,才让它回到”石头剪刀布”?
24.4 随机性(RNG)的妙用:紧张感、惊喜,和”可控的随机”
难度和平衡管的是”公平”,可光公平还不够——太公平的游戏,像做数学题,精确但枯燥。真正让玩家”上头”的,往往是一味叫**随机性(RNG,Random Number Generator,随机数生成器)**的调料。
先讲现象。你大富翁掷骰子那一刻,手是不是会抖一下?明明你知道”掷出 6 能买到那块地”,但骰子不听你的,它可能在 1 到 6 之间随便落。这零点几秒的”不确定”,就是紧张感的来源。你塔防里怪死后”掉落”一张卡或一笔额外金币,你不知道掉不掉、掉什么——那一下”开盲盒”的惊喜,就是随机给的甜。
为什么随机这么灵?因为它制造了两样确定性的游戏给不了的东西:
第一,紧张感(悬念)。确定的事没有悬念。如果大富翁棋子是”你按按钮它走固定格数”,那掷骰的期待感瞬间蒸发。随机让每一步都”可能好可能坏”,玩家的心就被吊着。
第二,故事 / 梗。这是随机最妙的地方。你打一局塔防,第 7 波本来稳赢,结果掉落系统”恰好”给你一张关键塔的图纸,你逆风翻盘——这局结束你跟朋友吹的是”你信不信我第 7 波欧了”。随机制造了”只属于你这局的独特故事”。确定性的游戏,十局长得一模一样,没得吹。随机让每局都是”限量版”。
但——我必须立刻给你踩刹车。纯随机 = 失控,失控 = 玩家骂娘。
你想想最糟的随机长啥样:你塔防,玩家布局完美、操作无误,结果第 5 波怪”随机”刷出一堆飞行兵,而他刚好没对空塔,直接崩。他明明打得好,却因为”运气”输了——这叫”随机惩罚了技术”,玩家会觉得游戏不公平(回到 24.3 的信任崩塌)。或者大富翁,玩家运气爆棚连掷三个 6,别人全程没机会,那三个”非酋”直接弃游。纯随机,会让”努力”贬值。
所以设计师的方案是可控随机(Controlled Randomness)——表面随机,实则暗藏”保底”和”权重”。我给你三个最常用、你做游戏必碰的手段:
1. 保底(Pity / 保底机制):抽卡连续 N 次没出稀有,第 N+1 次必出。游戏行业管它叫”pity timer”(保底计数器)——你抽卡次数到了阈值,系统强制把稀有概率拉到 100%。这保证”再非也有人权”,玩家不会因为一直脸黑而弃游。你做塔防掉落,可以设”连续 3 波没掉图纸,第 4 波必掉一个”,就是这个思想。
2. 权重(Weighted Random):不是每个结果等概率,而是你给”想要多出现的”高权重、“想少出现的”低权重。比如掉落池里”金币”权重 70、“普通卡”权重 25、“稀有卡”权重 5。这样玩家大多时候拿普通的、偶尔欧一把,既不会穷到没反馈,也不会稀有无价值。你写 Go 时 math/rand 配权重表就能实现,逻辑层和这没两样。
3. 伪随机(Pseudo-Random,PRD):这是最精巧的一种。很多游戏(尤其 MOBA 的暴击)不用”每次独立 20% 暴击”,因为独立随机会出现”连续五次不暴”或”连续三次暴”的极端手感。它们用 PRD:你越久没暴击,下一次暴击概率悄悄升高,直到命中后重置。这样玩家感觉”暴击大约每五下就来一次”,既随机又不过分欺负人。你塔防里”精英怪特殊技能触发”用 PRD,手感会比纯随机稳得多。
落进你的游戏,可控随机是几个参数 + 一段逻辑:
- 掉落池的权重表(
map[string]int{"gold":70,"card":25,"rare":5})。 - 保底计数器(抽 N 次没 rare 就强制 rare)。
- 伪随机的”当前概率”变量(每次未触发就 += 步长,触发归零)。
注意一个工程细节:如果你做联机(第 19 章),随机必须由服务器算,不能由客户端算。否则 A 客户端”随机”出稀有、B 客户端”随机”出普通,状态就不一致了(第 19.1 节的”一致性”麻烦)。而且客户端算随机还能作弊改结果。所以你塔防的掉落、大富翁的发牌,随机种子和判定都放你的 Go 后端——这又是你”服务器权威”的老本事。
反问问你:你塔防想做”击杀掉落稀有塔图纸”,但怕玩家脸黑十波都不掉、直接弃游。用本节哪个手段能救他?如果同时又怕”欧皇”每波都掉、图纸烂大街没价值,你再加哪个手段压一压?
24.5 失败设计:好游戏让你”差一点”才输
难度、平衡、随机讲完,最后一节讲一个你大概从没想过、但决定玩家”还来不来”的隐藏开关——失败怎么设计。
先抛现象。你玩过那种”差一点就赢了”的局吗?塔防第 10 波 boss,你基地就差一丝血被攻破,但你刚把最后一座塔升满、反手秒了它——你赢的那一刻,比轻松通关爽十倍。反过来,你玩过”刚开局就被秒、完全没反应机会”的局吗?那种输,你只会觉得”这游戏垃圾”,然后卸。
这两种”输”的区别,就是失败设计的核心。游戏设计里有个词叫 near-miss(差一点):玩家失败时,如果离成功”只差一步”,他不但不会气馁,反而会被激起”再来一局、这次我肯定行”的冲动。
为什么 near-miss 这么毒?回到第 22 章的动机和心流。玩家输在”差一点”,他的心流不是掉进焦虑区(太难),而是停在”我技能已经够、只差一点运气/一点布局”——这反而强化成就动机:“我不是不行,我是差一点。“人的大脑对”差一点”的遗憾,远大于”差很多”的认命。考试 59 分比 30 分让人更想重考,一个道理。
那怎么把”失败”设计成 near-miss?几个动作:
- 留 10%~20% 余量(呼应 24.3):怪的总血量别卡死在”玩家刚好能打死”,留一点buffer。玩家布局稍好就能过,布局差一点就”差一丝血没守住”——这就是 near-miss 的温床。
- 失败给”诊断”:玩家输了,界面告诉他”你第 8 波金币不够补塔、第 9 波被飞行兵冲了”。让他知道”我输在决策,不是输在游戏耍赖”。这和第 24.3 的”信任”一脉相承。
- 即时重开:输的那一刻,“再来一局”按钮要大、要近。near-miss 的火苗,冷却五秒就灭了。你大富翁如果一家破产就直接结束、还要走繁琐流程,那股”再来”的劲就被流程浇灭。
near-miss 不是让游戏”假难真易”,是让”真难”的失败也有”值得再试”的钩子。它直接连着下一章(第 25 章)的留存——玩家为什么明天还来?很多时候不是因为赢了,是因为”我昨天差一点,今天想翻盘”。 你第 25 章会看到,留存钩子大半是 near-miss 种下的种子。
落进参数,near-miss 是:
- boss 血量留 buffer(玩家总 DPS × 波次时间 × 0.85 这种系数,别卡 1.0)。
- “失败复盘”面板的触发(对局结束统计哪波崩)。
- 重开路径的 UI 成本(按钮离手指多近)。
顺带一句:near-miss 和”保底”是同一枚硬币两面——保底管”随机别太坑你”(24.4),near-miss 管”失败别太劝退你”(本节)。两者合起来,就是”公平又有劲”的最后一块拼图。
反问问你:你塔防如果”要么轻松通关、要么被秒”,中间没有 near-miss 的灰色地带,玩家输了会怎么想?你要往波次表里加什么,才能造出”差一点”的张力?(提示:回到 24.3 留余量那句。)
到这,难度、平衡、随机三块你都拿到了。它们不是三个孤立旋钮,是一台机器的三个齿轮:难度曲线决定”一局怎么爬坡”(24.1/24.2),平衡决定”爬坡时有多少种活法”(24.3),随机决定”活法里有多少惊喜与悬念”(24.4),而 near-miss 决定”摔下来时你还想不想爬起来”(24.5)。你第 20 章做塔防/大富翁的波次表,今天全是它的调参手册;你第 22 章的心流窄带,今天全是它的目标。下一章我们顺着”差一点才输”这根线,讲玩家为什么”明天还来”——引导、留存与奖励。
【思考题】
- 学习曲线和难度曲线有什么区别?你塔防第一关如果就放 boss,玩家掉进第 22 章心流的哪个区?为什么”第一关白给”反而是在帮他爬坡?
- 你塔防第 3 波想引入快速兵,但玩家前期只建了伤害塔没建减速塔被冲家。按”难度是张网”的思想,你应该改第 3 波的怪量,还是调第 2 波的奖励让他有机会补塔?为什么?
- 平衡(Balance)的本质是”没有无敌策略也没有必败局”。假设你火焰塔 DPS 是冰霜塔三倍、价格只贵一点,玩家会怎么应对?你要怎么改才回到”石头剪刀布”?为什么平衡”算不出来、只能试出来”?
- 你塔防做”击杀掉落稀有塔图纸”,怕脸黑十波不掉(弃游)又怕欧皇每波掉(烂大街)。用第 24.4 节的哪些可控随机手段能同时压下这两个极端?如果做联机,随机判定该放在哪(连回第 19 章)?
【参考答案】
- 学习曲线是”玩家从不会到要爬多少坡”(操作复杂度),难度曲线是”挑战强度随局进程怎么走”。第一关放 boss,玩家技能还是 0、连核心循环都没跑顺,难度 >> 技能,直接掉进第 22 章的”焦虑区”,摔手柄卸载,心流窄带边都没摸到。“第一关白给”是故意把难度压到贴地,先让玩家把建塔→抵挡→得币→升级这套动作变肌肉记忆、让”技能”线先长出来,再缓缓顶难度——这就是难度曲线最左端的起点,目标是始终咬住心流窄带。
- 应该调第 2 波的奖励(多给金币),而不是改第 3 波怪量。因为难度是张网:玩家第 3 波崩,根因常是”第 2 波结束他没钱补减速塔”,而不是”第 3 波怪太强”。直接砍怪量只是把问题藏起来,玩家后面照样不会用减速塔。给他喘息资源和补塔机会,他这局自己学会搭配,难度爬坡才健康。牵一发动全身,先找根因再调参。
- 火焰塔强到无解,玩家会”只用火焰塔通关”,冰霜塔成废塔,游戏变单键游戏、掉进无聊区,其他塔设计全白费。改法:要么降火焰塔 DPS(或加副作用,比如贵、射程短),要么升冰霜塔价值(比如减速是火焰塔没有的控场功能,让两者各有不可替代的场景)——回到”石头剪刀布”的互相克制。平衡算不出来只能试,是因为真玩法里玩家不会把塔摆满、怪边走边脱射程、前期金币紧张建不起十座塔,你纸面”精确计算”全在现实面前破产;只有一遍遍 playtest 记录”哪波崩、哪个塔没人用”才能长出正确数字。设计师必须自己玩自己的游戏。
- 用两个手段:保底(pity timer)——连续 N 波没掉图纸第 N+1 波必掉,救脸黑弃游;权重(Weighted Random)——掉落池里金币/普通卡高权重、稀有图纸低权重,压住欧皇每波掉、保住稀有价值。两者合起来”大多普通、偶尔欧、再非也有人权”。做联机时,随机种子和判定必须放你的 Go 后端(服务器权威),不能客户端算——否则 A、B 客户端掉落不一致违反第 19.1 节一致性,且客户端算随机能被改内存作弊。这又是你”服务器说了算”的老本事。