시티즈 스카이라인 투: 유니티 이시티에스로 도시를 시뮬레이션하는 기술적 도전

2026년 05월 28일 게시됨 | 스페인어에서 번역됨

Cities: Skylines II의 출시는 도시 시뮬레이션 게임의 성능 기준을 재정의했습니다. 독특한 행동을 가진 수천 명의 개별 시민을 관리하는 능력 뒤에는 ECS(엔티티 컴포넌트 시스템)를 기반으로 한 고도로 수정된 Unity 아키텍처가 있습니다. 이 접근 방식은 CPU에 과부하를 주지 않고 각 엔티티의 교통, 경제 및 생애 주기 로직을 동시에 처리할 수 있게 해주며, 이는 밀집된 도시에서 안정적인 프레임 속도를 유지하는 데 중요한 성과입니다.

실시간으로 상세한 건물과 교통이 있는 밀집된 도시를 보여주는 Cities Skylines II 스크린샷

Maya와 Houdini를 활용한 에셋 파이프라인 및 지오메트리 최적화 🏗️

건물과 인프라의 극도로 높은 디테일 수준은 Autodesk Maya와 Houdini 간의 자동화된 워크플로우 없이는 불가능합니다. Maya에서는 기본 에셋을 모델링하고, Houdini에서는 절차적 변형(창문, 지붕, 마모 텍스처)을 생성하여 Unity에 최적화된 LOD(레벨 오브 디테일) 메시로 내보냅니다. 기술적 핵심은 이러한 변형을 ECS 시스템과 통합하는 데 있습니다. 각 시민 또는 차량 엔티티는 카메라 거리에 따라 단순화되는 동적 LOD 메시를 참조하여 GPU 메모리를 절약합니다. 주야간 주기에는 알베도와 이미시브 텍스처 사이를 보간하는 커스텀 셰이더를 사용하며, 동적 날씨는 전통적인 파티클 시스템의 오버헤드를 피하기 위해 ECS 파티클을 사용하여 비와 눈을 구현합니다.

대규모 시뮬레이션 개발자를 위한 교훈 🎯

유사한 아키텍처를 구현할 계획이라면, 처음부터 렌더링 데이터와 로직을 분리하는 것을 우선시하십시오. 가장 흔한 실수는 각 시민을 GameObject로 처리하는 것이며, 이는 엔진을 마비시킵니다. 대신, 가벼운 컴포넌트(위치, 상태, 목적지)를 가진 ECS 엔티티와 비활성 엔티티를 재사용하기 위한 풀링 시스템을 사용하십시오. 또한, 날씨 전환을 개별 이벤트가 아닌 전역 시간 시스템의 보간으로 프로그래밍하십시오. 이렇게 하면 계산 급증을 방지할 수 있습니다. 마지막으로, 극단적인 지오메트리 디테일은 근거리에서만 보이므로 Houdini에서 폴리곤 감소 노드를 사용하여 LOD 생성을 자동화하십시오.

Colossal Order 팀은 Cities: Skylines II의 고밀도 도시에서 성능 안정성을 유지하기 위해 Unity ECS 시스템과 개별 에이전트 간의 데이터 동기화 문제를 어떻게 해결하고 있습니까?

(추신: 게임 개발자는 사람들이 2시간 만에 클리어하는 게임을 만드는 데 1000시간을 소비하는 사람입니다)