Cities Skylines II : Le défi technique de simuler des villes avec Unity ECS

28 May 2026 Publié | Traduit de l'espagnol

Le lancement de Cities: Skylines II a redéfini les standards de performance dans les simulateurs urbains. Derrière sa capacité à gérer des milliers de citoyens individuels aux comportements uniques se trouve une architecture Unity hautement modifiée, basée sur le système ECS (Entity Component System). Cette approche permet de traiter simultanément la logique du trafic, de l'économie et du cycle de vie de chaque entité sans saturer le CPU, un exploit crucial pour maintenir un taux d'images stable dans les villes denses.

Capture de Cities Skylines II montrant une ville dense avec du trafic et des bâtiments détaillés en temps réel

Flux d'assets et optimisation géométrique avec Maya et Houdini 🏗️

Le niveau de détail extrême des bâtiments et infrastructures ne serait pas possible sans un flux de travail automatisé entre Autodesk Maya et Houdini. Dans Maya, les assets de base sont modélisés, tandis que Houdini génère des variations procédurales (fenêtres, toits, textures d'usure) qui sont exportées sous forme de maillages LOD (Level of Detail) optimisés pour Unity. L'astuce technique réside dans l'intégration de ces variantes avec le système ECS : chaque entité citoyenne ou véhicule référence un maillage LOD dynamique qui se simplifie en fonction de la distance à la caméra, libérant ainsi de la mémoire GPU. Pour le cycle jour/nuit, des shaders personnalisés sont utilisés pour interpoler entre les textures d'albédo et émissives, tandis que le climat dynamique utilise des particules ECS pour la pluie et la neige, évitant le surcoût des systèmes de particules traditionnels.

Leçons pour les développeurs de simulation massive 🎯

Si vous prévoyez d'implémenter une architecture similaire, priorisez la séparation des données de rendu et de logique dès le départ. L'erreur la plus courante est de traiter chaque citoyen comme un GameObject, ce qui fait s'effondrer le moteur. Utilisez plutôt des entités ECS avec des composants légers (position, état, destination) et un système de pooling pour réutiliser les entités inactives. De plus, programmez les transitions climatiques comme des interpolations dans le système de temps global, et non comme des événements discrets ; cela évite les pics de calcul. Enfin, automatisez la génération des LODs dans Houdini avec des nœuds de réduction de polygones, car le détail géométrique extrême n'est visible qu'à courte distance.

Comment l'équipe de Colossal Order aborde-t-elle le défi de la synchronisation des données entre les systèmes Unity ECS et les agents individuels pour maintenir la stabilité des performances dans les villes à haute densité de Cities: Skylines II ?

(PS : un développeur de jeux est quelqu'un qui passe 1000 heures à créer un jeu que les gens terminent en 2)