Cities Skylines II: The Technical Challenge of Simulating Cities with Unity ECS

Published on May 28, 2026 | Translated from Spanish

The launch of Cities: Skylines II has redefined performance standards in city-building simulators. Behind its ability to manage thousands of individual citizens with unique behaviors lies a highly modified Unity architecture, based on the ECS (Entity Component System). This approach allows for the simultaneous processing of traffic, economy, and lifecycle logic for each entity without overloading the CPU, a crucial achievement for maintaining a stable frame rate in dense cities.

Screenshot of Cities Skylines II showing a dense city with traffic and detailed buildings in real time

Asset pipeline and geometric optimization with Maya and Houdini 🏗️

The extreme level of detail in buildings and infrastructure would not be possible without an automated workflow between Autodesk Maya and Houdini. Base assets are modeled in Maya, while Houdini generates procedural variations (windows, roofs, wear textures) that are exported as optimized LOD (Level of Detail) meshes for Unity. The technical trick lies in integrating these variants with the ECS system: each citizen or vehicle entity references a dynamic LOD mesh that simplifies based on distance from the camera, freeing up GPU memory. For the day/night cycle, custom shaders are used that interpolate between albedo and emissive textures, while dynamic weather uses ECS particles for rain and snow, avoiding the overhead of traditional particle systems.

Lessons for massive simulation developers 🎯

If you plan to implement a similar architecture, prioritize separating rendering and logic data from the start. The most common mistake is treating each citizen as a GameObject, which crashes the engine. Instead, use ECS entities with lightweight components (position, state, destination) and a pooling system to reuse inactive entities. Additionally, program weather transitions as interpolations in the global time system, not as discrete events; this avoids calculation spikes. Finally, automate LOD generation in Houdini with polygon reduction nodes, as extreme geometric detail is only visible at close range.

How does the Colossal Order team tackle the challenge of data synchronization between Unity ECS systems and individual agents to maintain performance stability in high-density cities in Cities: Skylines II?

(PS: a game developer is someone who spends 1000 hours making a game that people complete in 2)