第 18 章把联机原型的时钟从「帧」换成「墙钟」。玩家离线八小时后回来,服务器要在一次结算里补齐建筑产出、运输损耗、居民消费、维护费与税收——这本质上是一组跨越长时段、必须幂等且可重试的定时作业。这一章因此成为全集里最贴近后台工程的一章:延迟队列分片、幂等键、版本号 CAS、事件日志与账本,都是可以直接搬到生产系统的模式。
本章定位
- 全集位置:第 18 章,属「异步与经济」层的开篇,与第 21 章异步远征、第 25 章市场系统构成经济三部曲。
- 难度梯度:进阶。网络同步不再是重点,事务一致性与经济模型才是难点。
- 前置章节:第 10 章城格建造 mini-SLG(城市与建筑基础)、第 14 章房间逃脱(事件溯源与快照)、第 16 章简版 MOBA(关键帧与快照增量)。
- 后续衔接:第 21 章把本章的延迟作业抽象为远征结算,第 25 章则把本章的生产消费闭环扩展为玩家间的自由市场撮合。
核心验证目标
- 六类定时作业:生产、维护、运输、税收、升级、离线补偿,统一以
next_run_ts为键进入延迟队列。 - 幂等与顺序:作业先检查账本中是否已有相同
job_id或时间窗的账目,存在即跳过;同一城市串行、跨城并行,写前用city_version做 CAS 保证单调。 - 分片与重试:按
city_id % N分片提升并发,失败走指数退避重试,超过上限落库并告警,每个作业在单事务内完成读写。 - 经济闭环:生产函数受产能、劳动力与投入品约束,运输量受路线容量与拥堵因子限制,损耗与路线质量和距离相关。
- 动态定价与税费:NPC 基础价叠加供需偏离形成浮动价(软约束正负两成封顶),税收由销售税与资产税构成,维护费按建筑等级累加。
- 通胀调控:以目标通胀区间为锚,超出上界则提高维护费与税率、压低采购价,低于下界则补贴与市政项目回收产能,整体封装为政策函数供调参。
技术栈建议
| 层次 | 推荐选型 | 说明 |
|---|---|---|
| 服务端 | Go 或 Java 优先 | 含定时作业器与经济模拟器 |
| 客户端 | TypeScript 或 Unity | 建造、收取与离线回流界面 |
| 调度 | Cron 或 DelayQueue | 以墙钟时间为基准,逻辑分桶 1s/5s/1m |
| 协议 | HTTP 加 WebSocket | HTTP 承载建造与收取,WebSocket 推送异步事件 |
| 存储 | 关系库加缓存 | 账本与事件日志需强一致,热点状态可缓存 |
本章文章
| 文章 | 核心内容 |
|---|---|
| 在线联机原型全集:第 18 章 城市经营 | 模拟经营与异步任务、离线收益、建筑队列、生产-运输-消费闭环、可控通胀与调参工具链 |
与相邻章节的关系
- 上一章:第 17 章 战棋对战 的锁步一致性针对回合内并发,本章的作业幂等针对长时段并发,两者共同构成全集的一致性工具箱。
- 下一章:第 19 章 战场吃鸡 重新回到实时高并发,规模从单城推升到两百人同场。
- 同层延伸:第 21 章 异步远征 与 第 25 章 市场系统 分别从结算与撮合两侧延展本章的经济模型。