游戏设计:原型与开发 12:概率和反馈与数值平衡实战
- [🎲 桌游里的随机数:骰子、转盘、卡牌](#🎲 桌游里的随机数:骰子、转盘、卡牌)
- ⚖️加权随机:让部分事件更容易发生
- 🔢排列:顺序很重要的随机密码
- ↗↘正反馈与负反馈,决定游戏节奏
- 🛠实战:用电子表格完成武器数值平衡
- 📝写在最后
很多人觉得游戏设计全靠灵感与脑洞,但一款玩起来舒服、公平有趣的游戏,背后藏着大量数学逻辑。从桌游掷骰子,到电子游戏武器数值,概率统计、正负反馈、加权随机,都是设计师手中的利器。今天我们就聊聊游戏平衡中那些不可或缺的数学知识,以及如何用表格工具完成数值原型调试。
🎲 桌游里的随机数:骰子、转盘、卡牌
随机是游戏乐趣的重要来源,桌面游戏发展出了三套成熟的随机生成方案:骰子、转盘、扑克牌。
骰子:理解概率分布
-
单颗骰子:结果属于线性概率分布,每个面出现机会均等。
-
多颗骰子相加:骰子数量越多,结果越容易向平均值靠拢,远离均匀分布。举个例子,2d6 掷出 7 的概率远高于 2 或者 12。
💡设计师小提醒:不必死磕复杂概率公式,蒙特卡罗模拟法可以帮你。写程序模拟成千上万次投掷,就能得到现实层面的概率结果,《大富翁》就可以用这种方式模拟百万次掷骰,统计玩家高频落脚格子。
常用桌游骰子类型:d4、d6、d8、d10、d12、d20。其中2d10 百分位骰子很特殊,一颗控制个位,一颗控制十位,可以实现 0‑99 均匀随机。
转盘:自由定制概率
转盘由固定底座与旋转部件组成,它对低龄玩家十分友好:不会被扔飞,也不用担心被误吞。
相比骰子,转盘最大优势是自定义分区概率。我们可以随意划分扇区大小,实现非常规概率。
#mermaid-svg-49onXK1A4coKJr9N{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-49onXK1A4coKJr9N .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-49onXK1A4coKJr9N .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-49onXK1A4coKJr9N .error-icon{fill:#552222;}#mermaid-svg-49onXK1A4coKJr9N .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-49onXK1A4coKJr9N .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-49onXK1A4coKJr9N .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-49onXK1A4coKJr9N .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-49onXK1A4coKJr9N .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-49onXK1A4coKJr9N .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-49onXK1A4coKJr9N .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-49onXK1A4coKJr9N .marker{fill:#333333;stroke:#333333;}#mermaid-svg-49onXK1A4coKJr9N .marker.cross{stroke:#333333;}#mermaid-svg-49onXK1A4coKJr9N svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-49onXK1A4coKJr9N p{margin:0;}#mermaid-svg-49onXK1A4coKJr9N .pieCircle{stroke:#000000;stroke-width:2px;opacity:0.7;}#mermaid-svg-49onXK1A4coKJr9N .pieOuterCircle{stroke:#000000;stroke-width:1px;fill:none;}#mermaid-svg-49onXK1A4coKJr9N .pieTitleText{text-anchor:middle;font-size:25px;fill:#000000;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-49onXK1A4coKJr9N .slice{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#000000;font-size:17px;}#mermaid-svg-49onXK1A4coKJr9N .legend text{fill:#000000;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:17px;}#mermaid-svg-49onXK1A4coKJr9N :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 31% 19% 19% 13% 6% 6% 6% 假想攻击转盘概率分布 丢失 3/16 1点伤害 5/16 2点伤害 3/16 3点伤害 2/16 4伤害 1/16 5伤害 1/16 暴击 1/16
图 1:假想玩家攻击转盘饼图,扇区大小直接对应事件发生概率,想要调整概率,直接修改扇区占比即可,这是骰子很难做到的。
扑克牌:可记忆的随机
标准 52 张扑克牌(不含大小王)的基础概率:
| 事件 | 概率 |
|---|---|
| 抽到指定单张牌 | 1/52 ≈ 2% |
| 抽到指定花色 | 13/52 = 25% |
| 抽到人头牌 J/Q/K | 12/52≈23% |
卡牌和骰子有个本质区别:是否放回。
-
每次抽完立刻洗牌:效果等价骰子,每次独立随机。
-
抽完不洗牌:牌池不断消耗,概率动态变化,玩家还可以记牌预判后续结果。
📌经典案例:《卡坦岛拓荒者》部分版本把 2d6 骰子替换成 36 张实体卡牌。不洗牌抽卡,规避了现实骰子波动,保证每一种组合严格按照理论概率出现,有玩家喜欢也有玩家诟病。
自定义牌组原型小技巧:
-
使用卡套 + 纸片快速制作原型,不要过度美化道具,避免舍不得推翻重做;
-
可以直接涂改现成扑克牌快速测试想法。
⚖️加权随机:让部分事件更容易发生
普通均匀随机下每个选项机会均等,但游戏设计经常需要 "有些事更容易发生",这就是加权分布。
举个例子:游戏希望 50% 概率攻击没有加成,剩下 50% 获得 + 1~+3 加成;并且 + 1 出现概率是 + 3 的 3 倍,+2 是 + 3 的 2 倍。
我们可以构造权重列表:[0,0,0,0,0,0, 1,1,1,2,2,3]
-
0(无加成):6 份,占比 50%
-
1(+1):3 份,占比 25%
-
2(+2):2 份,占比 16.7%
-
3(+3):1 份,占比 8.3%
如果权重总和凑不成骰子面数,没关系,转盘、自定义洗卡牌都可以实现。在表格工具(Calc/Excel)中,我们也可以模拟加权随机:
-
A 列把每个权重按照份数重复填入;
-
使用
RAND()生成 0~1 随机数; -
通过向下取整映射到 A 列的索引;
-
INDEX函数取出最终随机结果。
电子游戏 AI 也在用这套思路:敌人 40% 攻击、40% 防御、20% 逃跑,可以直接构造数组
[攻击,攻击,防御,防御,逃跑]随机选取。
🔢排列:顺序很重要的随机密码
《公牛和母牛》(后续衍生出桌游妙妙思维 Master Mind)游戏中,玩家猜测 4 位密码,数字位置完全对 = 公牛,数字对位置错 = 母牛。
这里要区分两个概念:
-
排列 :位置有意义,
9305和3905是两个完全不同密码; -
组合 :位置无意义,
1234和4321视为同一个。
-
允许数字重复 :每一位独立 10 种选择,4 位密码总可能性 10 t i m e s 10 t i m e s 10 t i m e s 10 = 10000 10 times 10 times 10 times 10=10000 10times10times10times10=10000;
-
不允许数字重复 :用过数字不能再次使用,第一位 10 种、第二位 9 种、第三位 8 种、第四位 7 种, 10 t i m e s 9 t i m e s 8 t i m e s 7 = 5040 10 times9times8times7 =5040 10times9times8times7=5040种可能性。
↗↘正反馈与负反馈,决定游戏节奏
这是游戏平衡最核心的概念之一,两种机制塑造完全不一样的游戏体验。
| 类型 | 机制逻辑 | 典型案例 | 适用场景 |
|---|---|---|---|
| 正反馈 | 强者愈强,早期获得优势的玩家更容易滚雪球扩大胜利优势 | 大富翁、德州扑克 | 单人游戏,让玩家逐步变强;多人游戏慎用,可用来加速对局结束 |
| 负反馈 | 照顾落后方,劣势玩家获得翻盘机会 | 马里奥赛车道具系统 | 多人对抗游戏,拉长对局,维持悬念 |
-
正反馈《大富翁》:地盘越多,每回合收入越高,进一步挤压其他玩家生存空间,优势会持续放大。
-
负反馈《马里奥赛车》:领跑玩家只能拿到香蕉这类弱道具;末尾玩家可以刷出闪电,给全体对手制造麻烦,给逆风翻盘创造可能性。
✨设计启示:多人对抗过度的正反馈会让早早落后的玩家直接摆烂;但完全没有正反馈,玩家又感受不到成长带来的成就感,二者需要权衡。
🛠实战:用电子表格完成武器数值平衡
纸面原型之后,我们可以用 Calc(Excel 同理)量化武器属性。武器核心三个维度:射速、单发伤害、不同距离命中率。
各类武器定位预期:
-
手枪:泛用基础武器,没有突出短板;
-
步枪:擅长中远距离;
-
霰弹枪:近距离爆发,伤害波动巨大;
-
狙击步枪:远距离强势,近距离疲软;
-
机枪:子弹多,伤害稳定,单发伤害不高。
计算逻辑
-
单发命中率 :以 d6 骰子举例,
=1-((判定阈值-1)/6),增加 IF 函数处理空白距离,避免出现大于 100% 的异常命中率。 -
平均伤害 :
平均伤害 = 子弹数量 × 单发伤害 × 单发命中率。 -
全距离综合伤害 :把各个距离平均伤害求和,
ROUND(SUM())得到总输出参考值。
拿到数据之后,把每一把武器不同距离的平均伤害绘制折线图,横轴代表距离,纵轴代表期望伤害。
渲染错误: Mermaid 渲染失败: Lexical error on line 2. Unrecognized text. ...hart-beta title 武器距离-平均伤害示意 x-ax ----------------------^
图 2 平衡后武器距离‑伤害折线示意图。霰弹枪近距离伤害爆炸,远距离直接失效;狙击步枪随距离增加输出上涨;机枪曲线平缓,代表伤害波动更小。
调试工作流
-
录入原始武器数据,生成第一张折线图,你大概率会发现问题:比如手枪过强、机枪输出拉胯。
-
复制一份完整副本作为调试版本,保留原始数据用来对比,千万不要直接修改原始记录。
-
只修改武器基础属性(子弹数、单发伤害、命中判定阈值),命中率、平均伤害由公式自动计算更新。
-
同时摆放原始图表与调试后图表,直观对比改动带来的变化。
⚠️表格只能量化数值期望,有很多游戏体验无法被图表捕获:
多发子弹武器伤害波动更低;单发武器(霰弹枪、狙击枪)结果两极分化;
射程可以决定能不能避免敌人反击;
游戏单位血量上限,超过血量直接击倒的秒杀效果,这些都需要结合纸面原型测试补充验证。
📝写在最后
游戏设计不是单纯靠灵感的艺术创作,数学是设计师手中的一把精密标尺。概率帮我们控制随机乐趣,正负反馈调控对局节奏,电子表格工具可以快速迭代数值原型。
当然数学计算只是起点,表格输出的完美数字,放到玩家手上可能会产生完全不一样的感受。理论模型 + 模拟统计 + 原型实测,三者结合,才可以做出好玩又平衡的游戏。

下一章,我们将继续探索谜题设计的设计原则,看看谜题和普通游戏之间的核心差异。