经济与进度:给玩家一个明天
你的游戏玩到第 200 天,玩家账上躺着几十万金币,而商店里的东西他全买完了。此后每一次战斗的掉落、每一次收获的作物,都变成了一个纯粹的数字增长 —— 他的每一次劳动都失去了意义。这一章讲的就是那条曲线:它为什么必然会发生,以及怎么在设计阶段就把它掐掉。
看那条曲线怎么失控
下面这个模拟器跑 200 个游戏日。先看默认状态(没有持续性消耗),注意那条红线什么时候出现。
然后把最底下那个「有持续性消耗」的开关打开,看曲线怎么变。
产出通常是复利的,消耗通常是一次性的。
- 产出:你买了更好的工具 → 效率更高 → 赚得更多 → 能买更好的工具……这是一个正反馈环,指数增长。
- 消耗:你能买的东西是一张有限的清单。买一个少一个,总有买完的一天。
一个指数增长的东西,撞上一个有限的东西 —— 结局是注定的,只是时间早晚。
而在那一天之后,你的游戏就只剩下一个不断变大的数字了。
水龙头与水槽
经济设计里最有用的一个比喻。把游戏里的资源想象成一个水池:
- 水龙头(Faucet):资源进来的地方 —— 掉落、收获、任务奖励、出售
- 水槽(Sink):资源出去的地方 —— 购买、升级、修理、消耗品、税费
健康的经济要求水龙头和水槽长期匹配。而个人项目最常见的问题是:水龙头做得很认真,水槽几乎没设计。
| 一次性水槽 | 持续性水槽 | |
|---|---|---|
| 例子 | 买一把剑、解锁一个建筑、学一个技能 | 弹药、食物、维修费、租金、赛季重置 |
| 容量 | 有限,会被榨干 | 无限,永远能吸收 |
| 给玩家的 | 成长感、里程碑 | 持续的目标、压力 |
| 做过头 | 买完了没事干 | 变成负担,像在交税 |
两类都需要,但作用不同:一次性水槽提供「成就」,持续性水槽提供「明天」。
只有一次性水槽 → 前期很爽,后期空洞(demo 里的默认状态)。
只有持续性水槽 → 一直有事做,但没有成就感,像在打工。
几种好用的持续性水槽
| 类型 | 怎么做 | 注意 |
|---|---|---|
| 消耗品 | 药水、弹药、诱饵、种子 | 最自然的一种。要让它真的被用掉,而不是攒着不敢用 |
| 维护 / 折旧 | 装备耐久、建筑维修、员工工资 | 最容易招人烦。做成「不修就少赚」而不是「不修就废掉」 |
| 无限升级 | 某个属性可以一直加,但成本指数上升 | 便宜好用。成本增速要快过收入增速,否则失效 |
| 转化 / 兑换 | 把金币换成稀有资源,汇率很差 | 给多余的钱一个出口,同时不破坏平衡 |
| 周期重置 | 赛季、周目、轮回 | 最彻底的一种。把水池整个倒掉重来 |
如果你只想加一个持续性水槽,加这个。
做法:留一两个属性可以无限升级,第 n 级的成本是 base × r ⁿ,其中 r 明显大于玩家收入的增长率。
好处:
- 实现成本几乎为零(一个公式)
- 永远能吸收多余的钱,不会「买完」
- 玩家永远有一个下一步目标
- 成本指数上升,自动形成软性天花板 —— 不会真的无限强
关键在 r 的选择:它必须大于收入增长率。如果玩家收入每天涨 2%,而升级成本每级只涨 1.5 倍,那玩家很快会把所有能升的都升满 —— 水槽又被榨干了。
进度的形状:解锁该怎么排
经济只是手段,目的是进度感。而进度感来自解锁的节奏。
一个常见的错误是:把所有解锁按成本从低到高排成一条直线。结果是玩家永远在攒钱买下一个稍贵一点的东西,节奏完全平坦(回到第 16 章的问题)。
- 前期要密。玩家的前 20 分钟应该解锁 3–5 样东西。这段时间是留存的生死线,每一次解锁都在告诉玩家「继续玩有回报」。
- 大解锁之间放小解锁。攒一个大件的过程中,要有小的东西可以买 —— 否则那段攒钱的时间是纯粹的等待。
- 解锁要改变玩法,不只是数值。「攻击力 +10」不是解锁,「你现在可以二段跳了」才是。后者会让玩家想立刻回去看看之前够不到的地方。
第 3 条尤其重要,它把经济系统和第 5 章的元循环接上了:一个改变玩法的解锁,会让玩家重新审视整个已知世界。那是最便宜的内容复用。
「看得见但买不起」
回到第 5 章那条:元循环必须可见。在经济系统里,这条的具体做法是:
让玩家很早就看见那些他买不起的东西。
- 商店里陈列着一件标价高得离谱的装备
- 技能树上有一条灰色的、需要前置的分支
- 地图上有一扇写着「需要 5000 金币」的门
这些东西的作用不是被买,是被看见。它们把「攒钱」这个枯燥的行为,变成了一个有明确目标的追求。
如果那件东西贵到玩家算出来要玩 80 小时才买得起,效果会反过来 —— 他会觉得无望,然后干脆不想它了。
经验值:最贵的可见目标,应该在玩家当前进度的 3–8 倍之间。够远到值得追求,够近到看得到希望。
通胀:为什么后期的钱不值钱
如果产出增长快过物价,玩家手里的钱就在贬值 —— 但游戏里的「贬值」表现得很奇怪:数字变大了,感觉却变差了。
几个具体的症状:
- 早期的 100 金币是一次重要的收获,后期的 100 金币不值得弯腰去捡
- 玩家开始忽略掉落物 —— 这意味着你精心设计的战斗奖励失效了
- 「省着点花」的紧张感消失,所有决策变得随意
- 让水槽的成本跟着涨。最直接。但要小心变成「一切都在涨,等于没变」—— 那样玩家会察觉到跑步机的存在。
- 换货币。后期引入一种新的稀有货币,旧货币可以兑换但汇率很差。这是最常用的做法,好处是早期货币仍然有意义,只是退居二线。
- 限制总量。干脆不做无限增长的经济 —— 短流程游戏(你的第一个游戏!)完全可以这样:一共就 500 金币,全部规划好。
对 10–20 分钟的游戏,第 3 条是唯一正确的选择。不要在一个 15 分钟的游戏里做通胀模型。
多种货币:什么时候值得
很多游戏有两三种货币,看起来是为了复杂而复杂。但它其实解决一个具体问题:不同的资源需要不同的获取节奏和消耗节奏。
| 货币类型 | 获取 | 它的作用 | 例子 |
|---|---|---|---|
| 软通货 | 随处可得,量大 | 承载日常决策,让每次战斗都有回报 | 金币 |
| 硬通货 | 稀少,来自里程碑 | 承载重大且不可逆的选择 | 技能点、稀有材料 |
| 时间 / 行动力 | 自动恢复,有上限 | 制造「今天做什么」的取舍 | 体力、回合数 |
多货币的全部价值,来自它们之间不能自由兑换。
一旦玩家能用金币买技能点,两种货币就坍缩成了一种(汇率不同的同一种东西),你的设计意图完全失效。
所以:要么彻底不能换,要么只能单向换且汇率极差。后者是给「钱多得没处花」的玩家一个出口,而不是一条主流路径。
但还是那句话:能不加就不加
每加一种货币,你就要设计一整套它的水龙头和水槽,还要让玩家理解它。只有当你确实有一类决策,用现有货币表达不了时,才加新货币。
反过来的检验:如果把两种货币合并成一种,游戏会变差吗?不会变差 → 那本来就该是一种。
第一个游戏的经济:能有多简单
说了这么多,回到实际。你的第一个 15 分钟的游戏,需要什么经济系统?
15 分钟的游戏里,玩家没有时间形成经济行为。做一套货币 + 商店 + 升级,是在给一个不存在的问题做解法。
更好的做法:把「经济」压缩成「捡到就变强」。
- 关卡里放几个道具,捡到立刻生效 —— 不需要货币,不需要商店
- 如果要有选择,就做「三选一」—— 不需要价格,只需要取舍(第 6 章)
- 如果要有元进度,就做「通关解锁」—— 不需要经济,只需要一个计数器
经济系统的复杂度应该匹配游戏的时长。一个小时以内的游戏,几乎都不需要真正的经济。
那什么时候需要
当你的游戏满足这两条时,经济系统才开始产生价值:
- 玩家会玩很多局 / 很多小时(否则没时间积累)
- 你需要一个跨会话的目标(否则元循环用解锁就够了)
经济系统的 bug 特别难查 —— 玩家说「我的钱莫名其妙少了」,你完全无从下手。
解法:所有的资源变动都走同一个函数,并且记账。
extends Node # autoload: Economy
signal gold_changed(new_value: int, delta: int, reason: String)
var gold: int = 0
var _ledger: Array[Dictionary] = []
func add_gold(amount: int, reason: String) -> void:
gold += amount
_ledger.append({
"t": Time.get_ticks_msec(),
"delta": amount,
"balance": gold,
"reason": reason,
})
if _ledger.size() > 500:
_ledger.pop_front()
gold_changed.emit(gold, amount, reason)
func try_spend(amount: int, reason: String) -> bool:
if gold < amount:
return false
add_gold(-amount, reason)
return true
# 调试用:打印最近的流水,一眼看出钱去哪了
func dump_ledger() -> void:
for e in _ledger:
print("%+6d → %8d %s" % [e.delta, e.balance, e.reason])
纪律:任何地方都不许直接写 Economy.gold += 10,必须走 add_gold(10, "史莱姆掉落")。
这条纪律的回报是:出问题时你有一份完整的流水账。而且这份账还有一个额外用途 —— 它是你调经济数值的数据来源:跑一局,dump 一次,你就知道玩家的钱从哪来、到哪去、每个来源占多少。
本章小结
- 核心矛盾:产出是复利的,消耗是一次性的 —— 结局注定,只是早晚。
- 水龙头 / 水槽:个人项目通常水龙头做得认真,水槽几乎没设计。
- 两类水槽:一次性给成就感,持续性给「明天」。两个都要。
- 最划算的持续性水槽是无限升级(成本指数增长),关键是增长率要快过收入增长率。
- 解锁节奏:前期要密、大解锁间放小解锁、解锁要改变玩法而不只是数值。
- 让玩家早早看见买不起的东西,但别超过当前进度的 8 倍,否则变成无望。
- 治通胀:成本同涨 / 换货币 / 限制总量。短游戏选第三条。
- 15 分钟的游戏不需要经济系统。用「捡到就变强」和「通关解锁」替代。
- 工程纪律:所有资源变动走同一个函数并记流水账。
- 模拟经营:这一章的主场,也是最容易翻车的类型。必须有强力的持续性水槽,否则必然在第 N 小时变成「看数字变大」。星露谷的做法是用时间当水槽 —— 钱再多,一天也只有那么长,你依然要取舍。把「时间」设计成最稀缺的资源,是这类游戏最优雅的解法。
- 肉鸽:靠周期重置天然免疫这个问题 —— 每局归零。它的经济设计重点在单局内的曲线(前期缺钱、中期宽裕、后期不够花),以及元层解锁的节奏。
- 塔防:经济是单关内的核心张力(造塔还是攒钱升级?)。这类游戏几乎不需要跨关经济 —— 每关重置的经济,比持续积累的经济好设计一百倍。
- 卡牌:「经济」体现为费用和牌库空间。牌库空间是一个很妙的隐形水槽:加一张牌是有代价的(稀释)—— 这让「变强」自带成本,天然平衡。值得所有类型学习。
- 平台 / 动作:通常不需要经济。如果要有,做成关卡内的即时资源(弹药、能量)而非跨关货币 —— 前者制造战术张力,后者只制造刷的动机。