都市天际线二:用Unity ECS模拟城市的技朮挑战

发布于 2026年05月28日 | 从西班牙语翻译

《城市:天际线 II》的发布重新定义了城市模拟游戏的性能标准。其能够管理数千名拥有独特行为的独立市民的背后,是一个基于ECS(实体组件系统)的高度修改版Unity架构。这种方法允许同时处理每个实体的交通逻辑、经济和生命周期,而不会使CPU过载,这是在密集城市中维持稳定帧率的关键成就。

《城市:天际线 II》截图,展示了一个实时渲染的密集城市,包含交通和详细建筑

使用Maya和Houdini的资源流程与几何优化 🏗️

建筑和基础设施的极致细节离不开Autodesk Maya和Houdini之间的自动化工作流程。在Maya中建模基础资源,而Houdini生成程序化变体(窗户、屋顶、磨损纹理),这些变体被导出为针对Unity优化的LOD(细节层次)网格。技术诀窍在于将这些变体与ECS系统集成:每个市民或车辆实体引用一个动态LOD网格,该网格根据与摄像机的距离进行简化,从而释放GPU内存。对于昼夜循环,使用自定义着色器在漫反射和自发光纹理之间插值,而动态天气则利用ECS粒子系统处理雨雪,避免了传统粒子系统的开销。

面向大规模模拟开发者的经验教训 🎯

如果你计划实现类似的架构,请从一开始就优先分离渲染数据和逻辑数据。最常见的错误是将每个市民视为一个GameObject,这会导致引擎崩溃。相反,使用带有轻量级组件(位置、状态、目的地)的ECS实体,并采用对象池系统来重用非活跃实体。此外,将天气过渡编程为全局时间系统中的插值,而不是离散事件;这可以避免计算峰值。最后,在Houdini中使用多边形缩减节点自动化LOD生成,因为极致的几何细节仅在近距离可见。

Colossal Order团队如何应对Unity ECS系统与单个代理之间的数据同步挑战,以在《城市:天际线 II》的高密度城市中保持性能稳定性?

(附注:游戏开发者是那种花1000小时制作一个游戏,而人们只用2小时就能通关的人)