亲手规划一座
真正会运转的城市
一款横屏手机单人城市模拟游戏。玩家从原始部落起步,铺路、供水、划分区域、建设公共设施、组织资源与政策,让居民和企业自主建造,最终发展为现代都市。没有关卡,没有强制局长,以连续天数记录一座城市数周乃至更久的兴衰。
产品边界:远期愿景和本期任务分开
完整产品负责说明“最终是什么”,垂直切片负责回答“最小版本能否证明它好玩”。两者不能混成一张待办清单。
完整产品愿景
- 原始部落、农耕村落、古代城镇、工业城市、现代都市五阶段
- 5×5 区块完整地图,每区 48×48,总计 240×240 地块
- 道路、五类分区、公共设施、资源网络、政策、贸易与交通
- 四季、天气、灾害、污染、地价、犯罪与人口迁移
- 约 5000 栋建筑、10 万聚合人口的设计上限
当前唯一生产目标
- 一个 48×48 河港平原区块
- 只验证“原始部落 → 农耕村落”
- 30–45 分钟内建立可持续村落
- 玩家自行发现并修复一次缺水、缺粮或道路中断
- 本地存档,关闭游戏后时间完全暂停
玩家每天在做什么
核心乐趣来自规划产生连锁结果,再用看得懂的反馈修正城市,而不是手动摆满每一栋房子。
五时代成长合同
时代不是经验条。只有城市具备相应人口结构、教育、人才、公共设施、财政和科技,才允许升级。
城市系统必须怎样互相影响
以下是生产合同,不是最终平衡数值。所有关键结果都必须能从覆盖层、警告或详情面板追溯原因。
| 系统 | 玩家输入 | 模拟规则 | 可见输出 | 失败或代价 |
|---|---|---|---|---|
| 道路与可达性 | 铺设小径、普通街道、主干道、货运道路、现代快速路 | 每栋建筑必须连接道路;全量计算出行需求,只抽样显示代理 | 路径、通勤时间、货运时间、拥堵热图 | 断路会停止入住、就业、服务或物流 |
| 分区与密度 | 绘制居民、商业、农耕/资源、生产、行政科研;低/中/高密度 | 私人建筑只在有道路、有需求、基础资源满足且政策允许时自主生长 | 需求条、待开发原因、建筑等级和入住率 | 错误供给导致空置、地价下跌与税基萎缩 |
| 水、电与粮食 | 修取水、管网/水渠、电网、粮仓,调整容量 | 所有居民必须有水;现代居民必须有电;粮食进库存,水电只走网络 | 网络覆盖、流量、容量、断点、库存天数 | 缺水/缺粮降低健康与满意度;缺电使现代建筑停摆 |
| 资源与施工 | 批准市政工程、规划运输与仓储 | 七种库存:粮食、木材、石料、矿石、燃料、工具、生活商品;公私工程共享劳力、材料、运输 | 库存、在途、工期、停工原因、工地状态 | 私人项目停工 12 天成烂尾;取消最多回收已投入材料 50% |
| 人口与迁入 | 开放、限额或暂停迁入;配置住房、工作与服务 | 儿童/成年/老年按人口池计算;富庶、就业和服务吸引外来人口,入住后成为本地居民 | 年龄、技能、就业、迁入意愿、迁出原因 | 满意度长期为 0 引发迁出;人口归零即失败 |
| 教育与科技 | 建设教育设施、分配预算、选择研究 | 培养普通劳力、识字居民、熟练人才、高级人才;科技需要设施、人才、财政与时间 | 学位容量、毕业率、人才缺口、研究进度 | 没有高级人才就不能解锁高阶科技或高级设施 |
| 公共服务 | 建设教育、医疗、消防、治安、环境卫生设施并设预算 | 服务通过道路和容量覆盖,不是简单圆形光环 | 响应时间、容量、排队、覆盖与满意度贡献 | 低预算造成服务降级,高预算造成财政压力 |
| 财政 | 税率、预算、借贷和政策 | 原始部落无货币;村落建立市场与治理后解锁税收财政 | 逐项收入、维护费、建设费、现金流预测 | 解锁财政后连续 7 天无力支付维护费,判定破产失败 |
贸易、治安、环境与地价
这些系统属于完整产品合同,但不进入首个垂直切片,避免首版被复杂度压垮。
多市场贸易
不同外部市场拥有独立价格与波动。利润必须扣除运费、仓储、损耗、税费、容量和价格冲击,不能无限低买高卖。
治安与劫掠
古代有土匪、水匪,现代有盗窃、走私和犯罪团伙。不做手动战斗,用城门、瞭望塔、巡防、警力预算、道路和政策应对。
四类污染
空气随风向扩散;污水沿河向下游传播;土壤污染长期残留;噪音由道路和设施向周围衰减,全部影响满意度。
地价反馈
交通、服务、治安、教育与景观提高地价;污染、噪音、犯罪与拥堵降低地价。地价再影响等级、税收和高端人才迁入。
| 灾害与季节 | 规则 | 玩家可以做什么 | 设计底线 |
|---|---|---|---|
| 四季 | 每季 12 天,改变温度、农业、水量、需求与部分运输效率 | 调整库存、播种、预算和建设节奏 | 变化必须提前显示,不用隐藏随机数偷袭玩家 |
| 动态天气 | 天气持续数小时到数日,叠加季节而非替代季节 | 查看预报,暂停高风险工程或加强容量 | 天气要影响模拟与画面,不能只是滤镜 |
| 灾害 | 洪水、火灾等有风险区、预警期、发生期和恢复期 | 预防、疏散、应急预算、灾后修复 | 灾害造成可解释损失,允许充分准备降低损失 |
地图、时间、镜头与施工规则
手机操作必须适应手指精度,所有不可逆操作先预览,再确认。
当前垂直切片:河港平原
这不是完整游戏的缩略版,而是验证最危险假设:居民自主生长的城市是否可读、可控且有趣。
本期必须做
- 一个 48×48 河港平原 3D 区块
- 原始部落 → 农耕村落与一次时代升级
- 小径/早期道路、取水与供水覆盖
- 居民、商业、农耕/资源、生产四种早期分区
- 居民与企业自主建造并入住
- 粮仓、市场、基础教育、基础治安
- 满意度、人口迁入迁出、财政解锁
- 一个外部市场、一条商路、基础价格与被劫风险
- 一个完整季节循环、本地存档
本期明确不做
- 铁路、地铁、公交、电力和高密度建筑
- 工业/现代阶段、现代噪音和完整污染扩散
- 多市场套利、完整犯罪团伙和灾害系统
- 5×5 大地图、5000 栋建筑和 10 万人口压力目标
- 微信登录、TapTap 登录、广告、支付和云存档
- Axum、数据库、管理后台、排行榜和多人
- 商店宣传图、上线包和版号流程
技术结构与性能预算
先锁定可测试的上限,再决定是否扩图。以下数字是工程目标,不是假装已经达到的成绩。
Unity 6 客户端
- URP、C# 规则层与表现层分离
- 地块、道路、网络、建筑、人口池和经济分别建模
- 固定步长模拟 Tick,不把所有逻辑塞进每帧 Update
- 对象池、SRP Batcher、LOD Group、区块可见性裁剪
存档合同
- 本地版本化 JSON/二进制存档
- 手动存档 + 关键操作前自动存档
- 每城 3 个轮换自动存档可回退
- 必须测试旧版本升级、损坏与空间不足
服务器触发条件
- 跨设备云存档:需要认证存储 API
- 排行榜/奖励:需要服务端校验
- 支付:需要订单与回执校验
- 这些需求成立前,Axum 不进入关键路径
Image 2.0 与真实 3D 资产的分工
镜头可以旋转,所以正式世界资产必须有真实几何、材质、碰撞和 LOD。二维效果图不能充当可旋转建筑。
| 资产类型 | Image 2.0 负责 | 3D 制作负责 | 垂直切片预算 | 验收 |
|---|---|---|---|---|
| 地形与自然 | 河港平原概念稿、色彩脚本、材质参考 | 地形网格、河床、水体 Shader、土/草/岩材质、植被风动 | 1 地形;4 地表材质;8–12 植被模块;1 水体 | 四向旋转无穿帮;河水有方向;树草有轻微风动 |
| 道路与水利 | 铺装、岸线、木石材料板 | 直线/转角/交叉/坡道模块,取水点和渠网节点 | 10–14 道路模块;4–6 水利模块 | 吸附无裂缝;坡地不悬空;网络断点可视化 |
| 建筑 | 部落与村落建筑概念、正交三视参考 | 低模、UV、PBR 材质、碰撞、占地、建造阶段和 LOD | 12–16 栋功能建筑;6–8 个施工阶段/脚手架变体 | 四向可读;功能可辨;近中远三级不突变 |
| 人物与运输 | 居民服饰、职业轮廓和色板 | 共享骨骼、走/搬运动画、材质换色,早期货运载具 | 4 基础体型;6 职业变体;6–8 动画;2 运输单位 | 250 代理压力场景不超过预算;远景自动简化 |
| UI 与宣传 | 界面视觉母版、图标方向、加载/商店概念图 | Unity UGUI 或 UI Toolkit、动态文字、状态、热区与无障碍 | 1 套 HUD;6 覆盖层;约 30 图标 | 不能把带文字的整张生成图当动态界面;所有按钮真实可点 |
风格目标
写实比例的风格化低模,不追求照片级材质。重点是河流、地形、道路与建筑的空间可信度,以及远景下清晰的功能轮廓。
性能约束
重复建筑共用材质图集,植被实例化,人物共享骨骼和贴图;首版先按中低端安卓制定面数、贴图与 Draw Call 预算。
生成图边界
Image 2.0 可加快视觉探索,但不能直接产出结构可靠的模型、UV、碰撞、动画、LOD 或可重复无缝的最终资产。





从零开始的生产顺序
状态只描述事实:目前没有一个里程碑可标为“已完成”。筛选按钮与验收勾选保存在当前浏览器。
Unity 6 工程骨架
建立可在 Unity 编辑器和安卓真机运行的 URP 3D 工程,不做完整美术。
- 从 Cocos 灰盒规格重建 48×48 测试地形、镜头和触控
- 地块拾取、道路预览、撤销/重做
- 固定步长模拟 Tick、配置表、版本化存档骨架
- 中低端安卓基线性能报告
灰盒城市闭环
用简单几何验证规则,暂不追求漂亮。
- 道路、取水、四类分区
- 需求、居民自主建设与入住
- 粮食、满意度、迁入迁出
- 原始部落升级农耕村落
可诊断的模拟
让玩家知道城市为什么出问题,并能修复。
- 覆盖层、问题定位和原因链
- 财政解锁、粮仓、市场与商路
- 教育、治安与一个季节循环
- 缺水/缺粮/断路故障情境
首轮 3D 美术与手机体验
规则稳定后替换灰盒,完成横屏操作与性能优化。
- 地形、水、植被和早期建筑套件
- 人物代理、施工阶段、HUD
- 三级 LOD、合批、对象池
- 至少 3 档安卓设备实测
陌生玩家垂直切片
交给 8–12 名目标玩家,不由开发者现场教学。
- 完成率、问题发现率、修复率
- 误触、卡顿、崩溃与存档恢复
- 访谈“为什么继续玩/为什么退出”
- 按证据决定继续、返工或停项
完整生产与平台准备
只扩展已被验证的循环,按时代逐步增加内容。
- 古代、工业、现代与大地图
- 交通、贸易、污染、地价、灾害
- 签名包、隐私、崩溃与 TapTap 商店素材
- 有真实需求后再接登录与云存档
TapTap、登录和后台何时才需要
平台能力不能替代一款可玩的游戏。先有稳定实机包,再处理商店和账号。
现在不需要服务器
离线单人垂直切片使用本地存档。Axum、Docker 数据库、微信登录和 TapTap 登录不会改善核心模拟,因此全部后置。
TapTap 普通 Android 项目
正式名称为《城脉》,游戏 ID 910526,常规发布,不是小游戏。Unity 包名已冻结为 com.bolg.citypulse;当前仍未上传 APK 或提交审核。
TapSDK 当前状态
Unity 工程已接入 TapSDK 4.10.8、Newtonsoft JSON 和 UGUI,编辑器默认跳过 SDK 并保持离线试玩。TapTap 应用配置需要“认证开发者”资格,Client ID/Token 尚未生成,因此尚未进行真机登录验证。
发布阻断项
Android 包名和签名、隐私与权限声明、崩溃率、机型覆盖、存档升级、商店真实截图/视频、开发者资质及当时有效的官方审核要求。当前最大阻断是 TapTap 认证申请,需要真实主体资料和短信验证。
垂直切片通过标准
勾选是测试记录,不代表功能自动完成。全部满足后,才讨论扩大地图和进入古代城镇。
生产前仍需用原型回答的问题
规则冻结不等于数值全部确定。下面这些不能靠讨论拍脑袋,必须用可运行版本测。
| 风险 | 为什么危险 | 验证办法 | 止损条件 |
|---|---|---|---|
| 城市“会动但不好懂” | 自主建造和聚合人口容易成为黑箱 | 用原因链、覆盖层和首次故障测试理解率 | 玩家连续两次无法判断原因时,暂停扩系统先重做反馈 |
| 手机操作过密 | 道路节点、分区笔刷和旋转会争夺手势 | 至少三种屏幕尺寸进行无讲解任务测试 | 关键任务误触率高于 10% 时,重做工具状态机 |
| 模拟规模压垮性能 | 全量路径和大量 3D 代理成本高 | 从 48×48 逐级压测,不直接开 240×240 | 中低端机无法稳定 30 FPS 时,降低更新频率或聚合精度 |
| 五时代内容失控 | 每个时代都可能等同一款独立城市游戏 | 农耕村落切片通过后才为下一时代立项 | 首版留存意愿不足时,不用更多内容掩盖核心循环问题 |
| 美术先行造成返工 | 规则和占地未稳定前制作精模会频繁重做 | 先灰盒锁定尺寸、视角和识别度,再批量生产 | M2 前只做代表性资产,不做完整建筑库 |