Ludo Atlas · 类型手册 · 城市建造(City Builder)¶
类型手册 · 第二辑。定位:以土地布局与系统耦合为核心乐趣的品类。玩家在空地上做一连串位置决策,看着人口、需求、服务与交通四层互相牵动,把一块地养成一台会自己出毛病的机器。 配套:《游戏设计手册》(循环、系统耦合与数值)·《技术实现手册》(模拟架构与性能)·《制作管理手册》(估算与范围控制)·《避坑大全》(设计与玩法、程序与架构章节)。
1. 定位与核心循环¶
一句话定位:城市建造是把「土地上的位置决策」做成第一乐趣的类型。路修在哪里、区划怎么摊开、服务放在哪个路口,每个决定都要在几十小时的尺度上产生连锁后果;模拟负责让后果可见,玩家负责修补自己造出来的每一个麻烦。
核心循环用动词环写:
看地 → 划区 → 修路 → 建服务 → 人口迁入 → 收税与需求变化 → 新问题浮现(拥堵、污染、赤字)→ 解锁新工具 → 再扩张
这个环比其他建造类型跨得更长:一次布局决策的后果可能一小时之后才显形,所以「把模拟结果送达到玩家眼前」的反馈管道(图层、图表、提示)和建造工具本身一样重要。
与相邻类型划边界:
| 相邻类型 | 边界 |
|---|---|
| 模拟经营(双点医院那类) | 那类管理抽象的房间与流程,城市建造管理的是土地本身:位置与网络决定成败 |
| 殖民模拟(环世界那类) | 那类以个体代理与故事生成为卖点,规模小;城市建造里居民是统计量,重点是系统整体运转 |
| 生存建造(我的世界那类) | 那类以个体视角制造与生存;城市建造不操作个人,只操作规划 |
| 4X 与 RTS | 那类有对手与对抗,输赢写在战报里;城市建造的对手是系统自己的副作用 |
一个自检问题:如果把地图换成一堆数字列表,游戏还成立吗?答案若为「成立」,你要做的可能是模拟经营而不是城市建造。
2. 玩家体验目标与标杆作品¶
体验目标(按优先级排序):
- 掌控感:城市在按自己的设计运转,涨落都能解释,玩坏了知道去哪里修。
- 创造欲:土地是画布,布局是表达;玩家会为了「好看」多花三小时。
- 解决问题:拥堵、污染、财政,一个接一个的工程题,解开有明确快感。
- 增长惊奇:从一块空地到一个会亮灯、会堵车的活体,规模本身就是奖励。
- 长期项目感:城市是存档也是作品,每次回来都有下一处想改的地方。
标杆作品只列大众熟知的名字;没玩过的先亲手玩,两小时的体验胜过两小时的拆解:
| 作品 | 可学的点 |
|---|---|
| 模拟城市 4 | 分区与需求(RCI)的经典实现;中小城市尺度的节奏与紧张感 |
| 城市:天际线 | 自由曲线道路工具与交通模拟的现代标准;mod 生态对产品寿命的放大 |
| 冰汽时代 | 目标模式的压力设计:倒计时、道德选择、资源绝境三件套 |
| 纪元 1800 | 生产链与城市层级的耦合;把「好看」做成系统奖励的一部分 |
| 放逐之城 | 小体量完整样本;人口年龄结构与资源链拧成的失败螺旋 |
| 江南百景图 | 移动端形态:轻操作加收集与放置层,证明类型可以降维 |
反面教材同样值得看:模拟城市(2013 重启)的地块尺寸与在线要求,是「限制玩家表达权」代价的公开样本。
3. 设计要点¶
3.1 模拟核心:人口、需求、服务、交通四层¶
城市模拟由四层咬合而成。先想清楚每层管什么、哪层驱动哪层:
| 层 | 管理什么 | 输出什么 | 常见实现粒度 |
|---|---|---|---|
| 人口 | 居民与家庭:数量、年龄、教育、就业、迁入迁出 | 一切需求的源头 | 按楼与家庭统计,不逐个模拟 |
| 需求 | 住宅、商业、工业与办公的开发意愿,地价与房价 | 玩家该划什么区、该盖什么 | 公式化的需求曲线 |
| 服务 | 消防、警察、医疗、教育、水电、垃圾 | 满意度与城市健康度 | 覆盖范围加容量 |
| 交通 | 道路网络、通勤时间、拥堵、公共交通 | 前两层能否真正到达 | 路段流量加采样车辆 |
四层按「人口驱动需求,需求驱动建设,服务与交通决定人口去留」咬合。一条完整的联动链条:新住宅区落成,人口增长,通勤量上升,公路开始堵,消防车到不了新区,满意度下降,居民停止迁入甚至搬走。链条上每一环都要有对应的可见反馈,做进图层或图表里;看不见的模拟等于不存在。
设计纪律:四层里挑一到两层做深,其余做薄。四层全深是大型团队的工作量;小团队通常把交通做深(它最容易被玩家看见),把服务做薄(半径加容量就够)。
3.2 分区与道路:网格还是自由规划¶
两块地基先定下来:道路怎么画,地块怎么切。
| 取向 | 代表 | 玩家侧优势 | 技术代价 |
|---|---|---|---|
| 网格 | 模拟城市 4 | 对齐干净、易读、密度规划直观 | 表达受限,曲线与斜向难做 |
| 自由规划 | 城市:天际线 | 表达自由,城市有「手绘感」 | 地块子分算法复杂,建筑对齐要靠工具补 |
自由规划的隐藏成本在「地块」:道路可以任意角度相交,但建筑需要平整的临路地块,背后是多边形分割、边缘对齐、坡地适配一整套几何工作。没有两个月以上的技术预算,不要碰全自由规划。折中方案按代价从低到高排列:纯网格;网格加斜向干道;网格为底、支持装饰性曲线(道路视觉上弯曲,逻辑仍按格走);完全自由。多数项目停在第二档就够用。
道路与分区的规则清单:
- 地块必须临路才能开发,这是城市建造区别于其他建造类的核心规则,先写进设计文档再写代码。
- 道路分层:主干道、次干道、支路,不同宽度与限速;升级与拆除要有损耗提示。
- 分区用笔刷涂抹,区划类型(住、商、工、办公)乘密度等级(低、中、高)共同决定生长出的建筑。
- 路口是交通的瓶颈,也是设计的着力点:环岛、单行道、高架与隧道在中后期充当「新工具」,对应城市长出的新问题。
- 公共交通(公交、地铁、铁路)是拥堵的解锁答案,在玩家第一次被堵到疼之后投放,别提前给。
3.3 交通层:把「可达性」做成可见的数字¶
交通是城市建造里最贵、也最出效果的一层。设计上只做三件事:让流量可见、让通勤有成本、让工具能修复。
- 流量可见:路段颜色按流量渐变,上下班高峰的潮汐现象要能被看见。玩家看不到堵在哪里,就没法设计出解法。
- 通勤成本:每个家庭组记住的通勤时间是人口迁入迁出的核心变量之一;通勤超过阈值,居民会搬去更近的区。这条规则比任何提示都直观。
- 修复工具梯度:加宽道路(缓解)→ 单行道与信号(疏导)→ 公共交通(替代)→ 新城区(分流),每一档对应城市规模的一个阶段。
行人与车辆的「真实感」靠采样代理撑着(见 §4)。设计上只承诺一件事:玩家看得见的屏幕上,街上的车流要和统计面板的数字对得上。
3.4 失败状态与负反馈:全灾害系统与压力来源¶
没有压力的城市建造会在第十个小时失去玩家。压力来源分四类,投放顺序从缓到急:
| 压力源 | 表现形式 | 玩家可见的预警 | 正确应对 |
|---|---|---|---|
| 财政 | 维护费超过税收,收支翻红 | 预算图表、逐项开支清单 | 调整税率、砍冗余、贷款周转 |
| 灾害 | 火灾、洪水、地震、瘟疫 | 风险图层、电台播报 | 预防性服务覆盖、灾后重建 |
| 系统退化 | 拥堵、污染、犯罪、失业 | 图层恶化、图标闪烁 | 针对性改造,一段一段修 |
| 外部压力 | 目标模式的时限、预算与事件 | 倒计时、剧情提示 | 优先级取舍,牺牲局部保整体 |
全灾害系统的设计纪律:
- 每个灾害配齐四件:触发条件、预防手段、发生时的可见演出、灾后可修复的残局。缺「预防」的灾害是纯随机破坏,缺「修复」的灾害是删档。
- 概率与频率做成难度档位,沙盒里允许调到零;毁档级事件(大规模地震、陨石)只出现在目标模式或玩家明确开启的选项里。
- 灾害的职能是打掉玩家对「绝对安全」的假设,不是惩罚。一次火灾应当教会玩家消防覆盖的价值,而不是让他重开。
负反馈的死亡螺旋是重点防护对象:财政崩、服务停、人口跑、税收更少,这条链一旦转起来,玩家会在两小时内弃档。防护手段:破产前的多级警告、紧急贷款或补助、可降级的维护费、以及「关掉一半系统也先活下来」的降级运转。惩罚要有梯度,出口要体面。
3.5 沙盒与目标模式:两种产品,一个模拟¶
沙盒与目标(情景、挑战)模式的取舍,是立项时就要定的事:
| 维度 | 沙盒模式 | 目标模式(情景与挑战) |
|---|---|---|
| 玩家动机 | 创造与表达 | 解题与征服 |
| 资源与约束 | 宽松:可调资金、无倒计时、灾害可关 | 收紧:固定预算、时限、灾害频率 |
| 内容成本 | 一套模拟加一套工具 | 同一套模拟加参数包与脚本事件 |
| 风险 | 前几小时爆发,之后失去目标 | 平衡失手变成劝退,尤其前 30 分钟 |
| 代表 | 城市:天际线 | 冰汽时代(极端形态,几乎只有目标模式) |
取舍建议:
- 模拟必须先沙盒跑通。目标模式会放大模拟的一切缺陷;模拟不稳时做情景,只会把挫败感集中给最认真的玩家。
- 沙盒也要有内生目标:人口里程碑、地标解锁、成就、蓝图与拍照模式。没有内生目标的沙盒,三小时后会变成挂机看风景。
- 目标模式是性价比最高的内容:复用同一套模拟,改初始条件、限制与胜利条件即可,单个情景的成本远低于一组新建筑。
- 发布顺序上,沙盒保下限、情景拉上限:先让创造型玩家能无限玩下去,再给挑战型玩家一道一道的题。
4. 技术要点¶
工程命题只有一句:不必逐个居民真模拟。城市建造的性能红线由模拟粒度决定,粒度由屏幕决定:玩家看得见的才值得认真算。
- 分层代理:居民与家庭以统计量存储(按楼、按区聚合的分布),车辆与行人只是从统计里采样的「可视化代理」,用来承载交通流量的表现。代理数量设上限,屏幕外的降级为纯数字流量。
- 模拟频率分级:交通与车辆走高频(帧或每秒数次),服务与建设走中频(秒级),人口、经济与需求走低频(十几秒到分钟级)。低频层用批处理结算,绝不每帧全量遍历。
- 交通求解:道路是图,节点是路口,边是路段。寻路带拥堵代价做动态加权;城市大起来后,用分区子图与流量近似(把车队折叠成流量数字)压住开销。交通几乎总是这类游戏的性能天花板,第一个性能预算就打在它身上。
- 覆盖与可达性:消防、医疗这类服务覆盖用多源广度优先的距离场计算(从服务点向外扩散),比逐个建筑寻路便宜一到两个数量级。
- 数据驱动:建筑、区划、服务、政策、经济参数全部外置成表,代码只读表。平衡是这类游戏的主工作,改参数不能等编译。
- 存档:城市状态大(每栋建筑、每条路、每个区划),存档要带版本号与迁移函数,自动轮换备份。玩家在这里投入几十小时,坏档是差评里的头号重罪。
- 表现与模拟解耦:建筑生长、车辆移动、昼夜光照都是表现层,允许插值与延迟,模拟真相以数据为准;渲染侧用实例化与合并网格扛规模,模拟侧用后台线程或分帧扛频率。
- 调试工具:模拟统计面板(人口、就业、收支曲线)、图层开关(覆盖、噪音、污染、流量)、时间加速与批量模拟。没有这些工具,四层模拟的平衡就是盲调。
- 规划模式的数据代价:网格地图是二维数组,建设与查询的代价低到可以忽略;自由规划需要几何库支撑地块运算,每落一条路都要重新评估周边地块,早期就拿最复杂的路口做压力测试。
5. 内容量与工作量参考¶
城市建造的成本一半在模拟、一半在内容,两者互不通用。以下为常见量级,用于估范围,不构成承诺:
| 项目形态 | 规模 | 周期量级 | 备注 |
|---|---|---|---|
| 模拟原型 | 一张小图,四层简化版 | 4-8 周 | 零美术,验证人口驱动需求的循环 |
| 小体量完整作品 | 一张中等地图,一套建筑 | 6-12 个月 | 放逐之城向,单人或二三人 |
| 常见独立与中型作品 | 数张地图加情景模式 | 1.5-3 年 | 平衡与调参吞掉可观比例 |
| 大型作品 | 大图、多城、mod 支持 | 3 年以上 | 对标天际线们的量级 |
内容单元的成本结构:
| 内容单元 | 单位成本(量级) | 最小可行 | 商业体量 | 备注 |
|---|---|---|---|---|
| 建筑资产 | 1-3 天/栋 | 30-50 栋 | 150-400 栋 | 最大成本项;模块化加换色是救命手段 |
| 区划与服务数值表 | 半天到 2 天/张 | 3 类区划、5-8 种服务 | 全量系统 | 反复平衡,改动会连锁 |
| 车辆与行人 | 1-2 天/种 | 5-10 种 | 30-80 种 | 含动画与昼夜灯光 |
| 地图 | 1-3 周/张 | 1 张 | 5-15 张 | 手工地形,或生成加手工地标 |
| 情景(目标模式) | 1-4 周/个 | 2-3 个 | 10-30 个 | 复用模拟,主要是约束与脚本 |
几条量级结论:
- 平衡是这个品类的隐性大头:四层耦合意味着改一个税率能掀动房价、需求与迁入。给平衡与调参预留总工期的两成以上。
- 建筑资产按「密度等级乘区划类型」展开,每类还要变体与升级形态。这里正是范围失控的高发区:先定建筑总数上限,再往下分配。
- 砍范围的优先顺序:建筑变体、地图数量、情景数量,模拟深度排在末位。模拟深度砍掉,游戏本身就不成立了。
6. 第一个原型怎么起步¶
第一个原型只做一张小图和四层的最小循环,4-8 周,不碰美术、灾害与情景。
- 相机与地图:64×64 以内的网格地图,俯视相机支持平移缩放;地形先只有平地与水。
- 道路工具:直线与矩形拖动两种画法,拆除工具同批做出来。
- 分区笔刷:住宅、商业、工业三种,只做低密度;地块临路才允许开发。
- 生长与人口:区划上的地块自动长出建筑,人口开始积累。这是全项目第一个正反馈高光,把生长动画做足。
- 需求循环:人口产生住宅需求,就业产生商业需求,一条简单公式即可;需求失衡时地图上有可见提示。
- 一个服务:只做一种(消防或电力),圆形半径覆盖,覆盖外的建筑显示警告图标。
- 交通最小版:车辆从住宅区移动到工作区,先直线移动,再升级为最短路;观察第一个堵点怎么出现。
- 面板与图层:一张统计面板(人口、收支、就业率),一张覆盖热力图。没有这两样,前七步的效果无法验收。
原型验收(全部可观察):
- 连续玩 30 到 60 分钟,玩家能说出「下一条路修在哪」和「现在最头疼的问题是什么」。痛点即玩法,说不出痛点说明反馈链没通。
- 人口曲线能涨到第一个瓶颈(通常是道路容量),且瓶颈的成因肉眼可见。
- 关掉全部美术提示,仅看面板与图层,逆推城市状态没有明显偏差。
反例:先做自由曲线道路,先做灾害,先做美术资源。城市建造的美术量极大,模拟循环成立之前,每一栋楼都是沉没成本。
7. 常见坑¶
| 坑 | 现象 | 规避 |
|---|---|---|
| 模拟循环未成立先铺内容 | 建筑表堆了几百行,人口与需求却不联动 | 先跑通四层最小循环,再开内容生产线 |
| 交通性能失控 | 每辆车全量寻路,城市一大就掉帧到不可玩 | 分层代理加流量近似,第一个性能预算给交通 |
| 破产即删档 | 财政崩盘后没有挽回路径,玩家直接弃档 | 死亡螺旋防护:贷款、补助、维护费降级 |
| 灾害只有破坏没有预防 | 随机火灾烧掉一片城区,玩家毫无准备 | 灾害四件套:触发、预防、预警、修复 |
| 模式单一或沙盒缺内生目标 | 创造型或挑战型玩家被砍掉一半,或三小时后开始挂机看风景 | 沙盒保下限、情景拉上限;里程碑、地标、成就、蓝图做成可见进度 |
| 数值耦合失控 | 改一处税率,房价、需求、迁入全乱 | 参数集中外置,长时间模拟测试当回归测试用 |
| 图层缺失 | 玩家看不见为什么堵、为什么不满意 | 每个模拟变量配一个图层或图表出口 |
| 开局太空 | 穷开局前二十分钟无事可做,玩家流失 | 压缩前期,尽快给出第一个「建成」高光 |
| 存档翻车 | 几十小时的城市坏档或版本不兼容 | 版本号、迁移函数、轮换备份,第一天就上 |
延伸阅读¶
- 《游戏设计手册》重读两节:核心循环与嵌套、经济系统的源与汇;读之前先给四层模拟画一张耦合图。
- 《技术实现手册》的性能与架构章节:代理模型、分帧计算与数据驱动,对应本文第 4 节。
- 《制作管理手册》的估算章节:先给「一栋建筑、一张地图、一个情景」计时,再乘内容量。城市建造是范围失控的重灾区。
- 《避坑大全》的设计与玩法、程序与架构两章,与本文第 7 节对照看。
- 玩而不是读:模拟城市 4、城市:天际线、冰汽时代各玩十小时,记录自己「想退出」的那一分钟发生了什么。
- 动手练习:不写代码,用电子表格搭一个四层联动小模型(人口、需求、服务容量、通勤时间),跑一百个回合,看失败螺旋从哪里冒出来。