卷 IV · 数CH 17深度 17/24

经济与进度:给玩家一个明天

你的游戏玩到第 200 天,玩家账上躺着几十万金币,而商店里的东西他全买完了。此后每一次战斗的掉落、每一次收获的作物,都变成了一个纯粹的数字增长 —— 他的每一次劳动都失去了意义。这一章讲的就是那条曲线:它为什么必然会发生,以及怎么在设计阶段就把它掐掉。

产出与消耗水龙头与水槽通胀一次性 vs 持续性解锁节奏

看那条曲线怎么失控

下面这个模拟器跑 200 个游戏日。先看默认状态(没有持续性消耗),注意那条红线什么时候出现。

然后把最底下那个「有持续性消耗」的开关打开,看曲线怎么变。

◆ 问题的数学形状

产出通常是复利的,消耗通常是一次性的。

  • 产出:你买了更好的工具 → 效率更高 → 赚得更多 → 能买更好的工具……这是一个正反馈环,指数增长。
  • 消耗:你能买的东西是一张有限的清单。买一个少一个,总有买完的一天。

一个指数增长的东西,撞上一个有限的东西 —— 结局是注定的,只是时间早晚。

而在那一天之后,你的游戏就只剩下一个不断变大的数字了。

水龙头与水槽

经济设计里最有用的一个比喻。把游戏里的资源想象成一个水池:

  • 水龙头(Faucet):资源进来的地方 —— 掉落、收获、任务奖励、出售
  • 水槽(Sink):资源出去的地方 —— 购买、升级、修理、消耗品、税费

健康的经济要求水龙头和水槽长期匹配。而个人项目最常见的问题是:水龙头做得很认真,水槽几乎没设计。

◆ 两类水槽,性质完全不同
一次性水槽持续性水槽
例子买一把剑、解锁一个建筑、学一个技能弹药、食物、维修费、租金、赛季重置
容量有限,会被榨干无限,永远能吸收
给玩家的成长感、里程碑持续的目标、压力
做过头买完了没事干变成负担,像在交税

两类都需要,但作用不同:一次性水槽提供「成就」,持续性水槽提供「明天」。

只有一次性水槽 → 前期很爽,后期空洞(demo 里的默认状态)。

只有持续性水槽 → 一直有事做,但没有成就感,像在打工。

几种好用的持续性水槽

类型怎么做注意
消耗品 药水、弹药、诱饵、种子 最自然的一种。要让它真的被用掉,而不是攒着不敢用
维护 / 折旧 装备耐久、建筑维修、员工工资 最容易招人烦。做成「不修就少赚」而不是「不修就废掉」
无限升级 某个属性可以一直加,但成本指数上升 便宜好用。成本增速要快过收入增速,否则失效
转化 / 兑换 把金币换成稀有资源,汇率很差 给多余的钱一个出口,同时不破坏平衡
周期重置 赛季、周目、轮回 最彻底的一种。把水池整个倒掉重来
◆ 「无限升级」是个人项目的最优解

如果你只想加一个持续性水槽,加这个。

做法:留一两个属性可以无限升级,第 n 级的成本是 base × r ⁿ,其中 r 明显大于玩家收入的增长率。

好处:

  • 实现成本几乎为零(一个公式)
  • 永远能吸收多余的钱,不会「买完」
  • 玩家永远有一个下一步目标
  • 成本指数上升,自动形成软性天花板 —— 不会真的无限强

关键在 r 的选择:它必须大于收入增长率。如果玩家收入每天涨 2%,而升级成本每级只涨 1.5 倍,那玩家很快会把所有能升的都升满 —— 水槽又被榨干了。

进度的形状:解锁该怎么排

经济只是手段,目的是进度感。而进度感来自解锁的节奏。

一个常见的错误是:把所有解锁按成本从低到高排成一条直线。结果是玩家永远在攒钱买下一个稍贵一点的东西,节奏完全平坦(回到第 16 章的问题)。

◆ 解锁节奏的三条经验
  1. 前期要密。玩家的前 20 分钟应该解锁 3–5 样东西。这段时间是留存的生死线,每一次解锁都在告诉玩家「继续玩有回报」。
  2. 大解锁之间放小解锁。攒一个大件的过程中,要有小的东西可以买 —— 否则那段攒钱的时间是纯粹的等待。
  3. 解锁要改变玩法,不只是数值。「攻击力 +10」不是解锁,「你现在可以二段跳了」才是。后者会让玩家想立刻回去看看之前够不到的地方。

第 3 条尤其重要,它把经济系统和第 5 章的元循环接上了:一个改变玩法的解锁,会让玩家重新审视整个已知世界。那是最便宜的内容复用。

「看得见但买不起」

回到第 5 章那条:元循环必须可见。在经济系统里,这条的具体做法是:

让玩家很早就看见那些他买不起的东西。

  • 商店里陈列着一件标价高得离谱的装备
  • 技能树上有一条灰色的、需要前置的分支
  • 地图上有一扇写着「需要 5000 金币」的门

这些东西的作用不是被买,是被看见。它们把「攒钱」这个枯燥的行为,变成了一个有明确目标的追求。

✕ 但别放太远

如果那件东西贵到玩家算出来要玩 80 小时才买得起,效果会反过来 —— 他会觉得无望,然后干脆不想它了。

经验值:最贵的可见目标,应该在玩家当前进度的 3–8 倍之间。够远到值得追求,够近到看得到希望。

通胀:为什么后期的钱不值钱

如果产出增长快过物价,玩家手里的钱就在贬值 —— 但游戏里的「贬值」表现得很奇怪:数字变大了,感觉却变差了。

几个具体的症状:

  • 早期的 100 金币是一次重要的收获,后期的 100 金币不值得弯腰去捡
  • 玩家开始忽略掉落物 —— 这意味着你精心设计的战斗奖励失效了
  • 「省着点花」的紧张感消失,所有决策变得随意
◆ 三种应对
  1. 让水槽的成本跟着涨。最直接。但要小心变成「一切都在涨,等于没变」—— 那样玩家会察觉到跑步机的存在。
  2. 换货币。后期引入一种新的稀有货币,旧货币可以兑换但汇率很差。这是最常用的做法,好处是早期货币仍然有意义,只是退居二线。
  3. 限制总量。干脆不做无限增长的经济 —— 短流程游戏(你的第一个游戏!)完全可以这样:一共就 500 金币,全部规划好。

对 10–20 分钟的游戏,第 3 条是唯一正确的选择。不要在一个 15 分钟的游戏里做通胀模型。

多种货币:什么时候值得

很多游戏有两三种货币,看起来是为了复杂而复杂。但它其实解决一个具体问题:不同的资源需要不同的获取节奏和消耗节奏。

货币类型获取它的作用例子
软通货 随处可得,量大 承载日常决策,让每次战斗都有回报 金币
硬通货 稀少,来自里程碑 承载重大且不可逆的选择 技能点、稀有材料
时间 / 行动力 自动恢复,有上限 制造「今天做什么」的取舍 体力、回合数
◆ 关键在「不能互相兑换」

多货币的全部价值,来自它们之间不能自由兑换

一旦玩家能用金币买技能点,两种货币就坍缩成了一种(汇率不同的同一种东西),你的设计意图完全失效。

所以:要么彻底不能换,要么只能单向换且汇率极差。后者是给「钱多得没处花」的玩家一个出口,而不是一条主流路径。

但还是那句话:能不加就不加

每加一种货币,你就要设计一整套它的水龙头和水槽,还要让玩家理解它。只有当你确实有一类决策,用现有货币表达不了时,才加新货币。

反过来的检验:如果把两种货币合并成一种,游戏会变差吗?不会变差 → 那本来就该是一种。

第一个游戏的经济:能有多简单

说了这么多,回到实际。你的第一个 15 分钟的游戏,需要什么经济系统?

◇ 答案:可能什么都不需要

15 分钟的游戏里,玩家没有时间形成经济行为。做一套货币 + 商店 + 升级,是在给一个不存在的问题做解法。

更好的做法:把「经济」压缩成「捡到就变强」。

  • 关卡里放几个道具,捡到立刻生效 —— 不需要货币,不需要商店
  • 如果要有选择,就做「三选一」—— 不需要价格,只需要取舍(第 6 章)
  • 如果要有元进度,就做「通关解锁」—— 不需要经济,只需要一个计数器

经济系统的复杂度应该匹配游戏的时长。一个小时以内的游戏,几乎都不需要真正的经济。

那什么时候需要

当你的游戏满足这两条时,经济系统才开始产生价值:

  1. 玩家会玩很多局 / 很多小时(否则没时间积累)
  2. 你需要一个跨会话的目标(否则元循环用解锁就够了)
⚙ Godot 落地:经济数据要能被审计

经济系统的 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 小时变成「看数字变大」。星露谷的做法是用时间当水槽 —— 钱再多,一天也只有那么长,你依然要取舍。把「时间」设计成最稀缺的资源,是这类游戏最优雅的解法。
  • 肉鸽:靠周期重置天然免疫这个问题 —— 每局归零。它的经济设计重点在单局内的曲线(前期缺钱、中期宽裕、后期不够花),以及元层解锁的节奏。
  • 塔防:经济是单关内的核心张力(造塔还是攒钱升级?)。这类游戏几乎不需要跨关经济 —— 每关重置的经济,比持续积累的经济好设计一百倍。
  • 卡牌:「经济」体现为费用和牌库空间。牌库空间是一个很妙的隐形水槽:加一张牌是有代价的(稀释)—— 这让「变强」自带成本,天然平衡。值得所有类型学习。
  • 平台 / 动作:通常不需要经济。如果要有,做成关卡内的即时资源(弹药、能量)而非跨关货币 —— 前者制造战术张力,后者只制造刷的动机。