잼 시티가 높은 성능을 위해 디즈니 매직 매치 3D를 어떻게 구축했는가

Dec 3, 2025
디즈니 매직 매치 3D | 잼 시티 | 디즈니

디즈니 매직 매치 3D에서 플레이어는 마법이 잘못되어 아이코닉한 디즈니와 픽사 아이템이 페이지에 흩어져 있는 마법의 책의 질서를 회복하도록 초대받습니다. 플레이어는 마법의 물체를 맞추고, 기발한 잡동사니를 정리하며, 질서를 회복하기 위해 정리의 기쁨을 재발견해야 합니다. 마법의 책 – 아늑한 레벨 하나씩.

개발 과정 내내, 각 잼 시티 팀은 야심찬 목표를 설정했습니다: 아트 팀은 엄격한 폴리 예산 내에서 높은 시각적 충실도를 추구했습니다; 제품 팀은 이상적인 세션 시간 목표를 최적화했습니다; 디자이너는 신선한 콘텐츠의 지속적인 흐름을 보장했으며, QA 테스터는 강력한 도구를 요구했습니다. 한편, 잼 시티 엔지니어들은 모든 플랫폼에서 세계적 수준의 기술 성능, 안정성, 반응성 등을 우선시했습니다. 그들이 복잡한 도전을 어떻게 극복하여 그들의 비전을 실현했는지에 대한 내용입니다.

목표:

부드럽게 실행되고 다양한 장치에서 일관된 성능을 유지하는 고충실도의 3D 매칭 게임 제공

플랫폼:

iOS, Android

위치:

컬버 시티, 캘리포니아

프로젝트 인력:

50

디즈니 매직 매치 3D: Unity 활용 사례

스튜디오는 과열, 콘텐츠 전달 및 기타 기술적 문제와 같은 도전을 관리하면서 성능을 어떻게 유지합니까?

제작 중, 단일 레벨에서 물리학이 적용된 수백 개의 3D 객체를 렌더링하는 것은 조명, 후처리 및 폴리 수에 주의해야 했습니다.

“과열은 초기에는 큰 문제였으며, 특히 20분 세션에서는 전화기가 불편할 정도로 뜨거워졌습니다.”라고 잼 시티의 소프트웨어 엔지니어링 매니저이자 디즈니 매직 매치 3D의 기술 리드인 헤비 매튜가 말합니다. “우리는 성능을 개선하고 다양한 하드웨어에서 장치 열을 일관되게 측정하는 방법을 개발하여 이를 해결했습니다.”

또 다른 도전은 콘텐츠 전달이었습니다 – 프레임 속도에 영향을 주지 않고 자산을 비동기적으로 스트리밍하는 것입니다. “유니티의 확장 가능한 에디터는 콘텐츠가 언제 어떻게 로드되는지를 관리하는 효율적인 도구를 구축하는 데 도움을 주었습니다.”라고 매튜가 말합니다.

마지막으로, 저가형, 중가형 및 고가형 장치에서 게임을 프로파일링하면서 성능 병목 현상을 식별하기 위해 팀은 과도한 충돌 호출 및 고폴리 모델과 같은 주요 문제를 확인했습니다. 특히 저가형 GPU의 경우.

“이들을 최적화함으로써 성능 향상과 과열 문제 해결에 도움이 되었습니다.”라고 매튜가 말합니다.

디즈니 매직 매치 3D

결과

- 저가형 Android 장치에서 40 fps, 중가형 Android 장치에서 35 fps로 프레임 속도를 증가시켰습니다.

- iOS에서 드로우 호출 수를 40%, Android 기기에서 45% 줄였습니다.

- iOS에서 RAM 사용량을 30%, Android 기기에서 15% 줄였습니다.

- 비네트워크 처리 로드 시간을 55% 감소시켰습니다.

- 10,000개 이상의 삼각형을 가진 메쉬 수를 33개에서 0개로 줄였습니다.

- 5,000개에서 10,000개 삼각형을 가진 메쉬 수를 324개에서 235개로 줄였습니다.

- 조명 수를 67% 줄였습니다.

디즈니 매직 매치 3D | 잼 시티 | 디즈니

게임의 초기 로드 시간에 대한 인-에디터 스크린샷

프레임과 시스템 전반에 걸친 성능 추적

팀이 성능 문제에 직면했을 때, 그들은 더 깊은 통찰을 위해 프로파일링 도구를 사용했습니다.

유니티 프로파일러 마커는 다중 프레임 작업을 추적하는 데 특히 유용했습니다.”라고 잼 시티의 소프트웨어 엔지니어인 케빈 존슨이 말합니다. “비교를 위해 프로파일러 분석기도 사용했습니다.”

또 다른 엔지니어인 안드레아 라미레즈는 특정 프레임 스냅샷을 캡처하기 위해 이진 로그 파일을 사용하여 분석을 확장했습니다. “그 덕분에 프로파일러를 실시간으로 사용하지 않고도 성능을 분석할 수 있었습니다.”라고 그녀가 설명합니다.

디즈니 매직 매치 3D | 잼 시티 | 디즈니

최적화 후 게임의 더 빠른 로드 시간에 대한 인-에디터 스크린샷

팀은 프로파일러를 더욱 사용자 정의하여 트리거링 및 로깅을 간소화하는 소모품을 추가했습니다. CPU 프로파일링을 넘어, 그들은 메모리 프로파일러로 메모리를 모니터링하고 프레임 디버거를 사용하여 렌더링 문제를 해결했습니다. 프로파일러 레코더는 반복 가능한 테스트 중에 전반적인 성능 통계를 추적할 수 있게 해주었습니다.

“엔진의 가장 큰 강점 중 하나는 에디터가 얼마나 확장 가능한가입니다.”라고 라미레즈가 덧붙입니다. “다중 프레임 스냅샷을 캡처하고 테스트를 스크립팅함으로써, 우리는 일관되고 신뢰할 수 있는 성능 데이터를 수집했습니다.”

디즈니 매직 매치 3D | 잼 시티 | 디즈니

디즈니 매직 매치 3D | 잼 시티 | 디즈니

큰 성능 스파이크 줄이기

프로파일링 결과 레벨 시작 시 주요 성능 스파이크가 발견되었으며, 이는 자산이 처음 나타날 때 셰이더 컴파일로 인해 발생했습니다. 어드레서블을 사용하여 팀은 불필요한 셰이더 컴파일을 유발하는 중복 자산을 식별했습니다.

"우리는 UI 요소와 게임 조각을 더 일찍 미리 로드했습니다," 개발자 존 에니가 말합니다. "부적절하게 그룹화된 자산 번들이 주요 문제였으며, 이는 반복적인 셰이더 컴파일을 유발했습니다 – 제가 처음에 간과했던 부분입니다."

초기에는 빠른 개요를 통합하여 조각 강조를 빠르게 추가했습니다. 약간의 오버드로잉 – 추가 렌더링 오버헤드 – 을 도입했지만, 최적화 덕분에 전체 재작성 없이 유지할 수 있었습니다.

오디오도 성능 스파이크에 기여했습니다. "각 게임 조각이 자체 충돌 소리를 발생시켰습니다," 에니가 설명합니다. "처음에는 잘 작동했지만, 300개의 조각이 동시에 떨어지면서 프레임 시간이 500ms로 급증했습니다. 그 여러 소리를 단일 환경 소리로 교체하니 20-30ms로 줄어들었고 – 실제로 더 좋게 들렸습니다."

디즈니 매직 매치 3D | 잼 시티 | 디즈니

게임 플레이 중 초기 큰 성능 스파이크의 인-에디터 캡처

햅틱 피드백도 미세 조정이 필요했습니다. "대량 충돌 중 햅틱 호출을 제한했습니다," 기술 이사 트로이 리가 말합니다. "이 제약을 적용하니 게임 전반에 걸쳐 성능이 일관되게 향상되었습니다."

조명은 또 다른 도전 과제가 되었습니다. 지연 렌더링이 성능을 개선했지만, 예술적 목표와 충돌했습니다. "전방 렌더링은 객체당 비싼 패스를 요구하기 때문에 여러 조명과 함께 어려움을 겪습니다," 라미레즈가 설명합니다. 품질과 효율성을 균형 있게 유지하기 위해 에니는 시각적 충실도를 유지하면서 런타임 성능을 향상시키는 베이크된 조명 솔루션을 개발했습니다.

기하학적 복잡성도 우려 사항이었습니다. “우리의 초기 모델은 10,000개의 삼각형을 초과했습니다.”라고 수석 기술 아티스트인 크리스틴 위크스가 말합니다. “우리는 낮은 성능의 장치에서 좋은 성능을 보장하기 위해 대부분의 모델을 2,500개 삼각형 이하로 줄였습니다.”

디즈니 매직 매치 3D | 잼 시티 | 디즈니

최적화 후 작은 성능 스파이크의 인-에디터 캡처

초기화 및 자산 처리 간소화

초기에는 웹 호출을 포함한 자산 로딩 및 시스템 초기화가 주요 문제를 일으켰습니다. 게임 플레이 또는 UI 상호작용 중 느려짐을 피하기 위해 팀은 처음에 모든 자산을 미리 로드했습니다. 그러나 게임의 기능과 자산이 확장됨에 따라 시작 시간이 지나치게 길어졌습니다.

그들은 일부 자산을 백그라운드에서 비동기적으로 로드하도록 이동하여 초기 로드 시간을 줄이고 원활한 인게임 경험을 유지했습니다. 그들은 또한 .NET의 작업 시스템을 사용하여 로딩 작업을 병렬화했으며, 이러한 개선 사항과 네이티브 자산 번들 로딩이 상당한 이점을 가져왔습니다.

네트워크 지연 시간, 특히 초기 로드 중에도 성능에 영향을 미쳤습니다. 이를 해결하기 위해 팀은 네트워크 호출을 위해 Unity 코루틴에서 C# async/await로 전환하여 지연 시간을 줄였습니다. “우리는 또한 Newtonsoft의 반사 기반 접근 방식을 코드 생성으로 대체하여 JSON 역직렬화를 최적화하여 성능을 개선했습니다.”라고 존슨이 말합니다.

인스턴스화 비용은 초기 로드 시간에 추가로 영향을 미쳤으며, 게임이 시작 직후 많은 UI 및 백그라운드 프리팹을 생성하기 때문에 눈에 띄는 지연이 발생했습니다 - 중급 장치에서 약 반 초 정도입니다.

디즈니 매직 매치 3D | 잼 시티 | 디즈니

디즈니 매직 매치 3D | 잼 시티 | 디즈니

“비용의 큰 부분은 많은 객체에서의 무거운 Awake() 초기화였습니다.”라고 존슨이 설명합니다. “우리는 생성 시 객체를 비활성화하고 필요할 때만 활성화하여 인스턴스화를 최적화했습니다. 우리는 또한 모든 것을 한 번에 수행하기보다는 인스턴스화를 연기하거나 staggered하여 가시적인 지연을 줄였습니다.”

성능을 보다 정확하게 측정하기 위해 팀은 System.Diagnostics.Stopwatch를 사용하여 인스턴스화 간격을 측정하고 코드의 다양한 부분에 계측을 추가했습니다.

이러한 최적화에도 불구하고 실제 네트워크 품질은 여전히 로드 시간에 영향을 미칩니다. 이를 해결하기 위해 팀은 지연 로딩을 실험하고 있으며, 모든 구성으로 게임을 배송하고 플레이어가 즉시 진입할 수 있도록 하면서 백그라운드에서 비동기적으로 구성을 업데이트하고 있습니다. “초기 테스트는 유망해 보이지만, 우리는 실시간 결과를 조심스럽게 모니터링하고 있습니다.”라고 Mathew가 말합니다.

디즈니 매직 매치 3D | 잼 시티 | 디즈니

디즈니 매직 매치 3D | 잼 시티 | 디즈니

저사양 장치의 GPU 한계 해결

성능 최적화 중 팀은 일부 저사양 장치에서 개선이 미미하다는 것을 발견했습니다. 그들은 이러한 장치가 주로 Mali GPU를 사용하고 있으며, 이 GPU는 게임의 목표 아이템 수를 효과적으로 처리하는 데 어려움을 겪고 있다는 것을 발견했습니다. 그러나 그들은 모든 장치 계층에서 60 fps 목표를 유지할 수 있었습니다.

Weeks는 이러한 한계에 대해 설명합니다: “구형 3세대 및 4세대 Mali GPU는 엄격한 타일 기반 렌더러로, 쉽게 기하학적으로 제한됩니다. 대조적으로, 많은 다른 GPU는 이 병목 현상을 피하는 데 도움이 되는 하이브리드 렌더링 기술을 사용합니다. 최근 Pixel 전화에서 발견되는 새로운 Mali GPU는 더 많은 처리 유닛을 가지고 있으며 기하학을 훨씬 더 잘 처리합니다.”

디즈니 매직 매치 3D | 잼 시티 | 디즈니

디즈니 매직 매치 3D | 잼 시티 | 디즈니

이러한 제약을 더 잘 이해하기 위해 Mathew는 개발 초기 단계에서 다양한 장치에서 증가하는 객체 수를 인스턴스화하여 프레임 속도 저하를 추적하는 도구를 만들었습니다. 이 도구는 특정 GPU가 낮은 임계값을 가지고 있음을 드러내어 아트 품질을 희생하지 않고 게임 모델을 신중하게 최적화할 필요성을 강조했습니다.

“프리프로덕션에서 아트 디렉터는 후처리 효과와 여러 동적 조명의 강력한 사용을 요청했습니다.”라고 Weeks가 말합니다. “그러나 우리는 장치 과열 및 성능 저하에 상당한 기여를 하기 때문에 프로덕션에서 후처리를 제거했습니다.”

Enney는 또한 포인트 라이트를 셰이더에 직접 베이킹하여 활성 조명의 수를 세 개 또는 네 개에서 단 하나로 줄여 효율성을 높였습니다.

이 협력적 접근 방식은 팀이 시각적 품질과 성능 간의 최적의 균형을 맞추어 다양한 장치에서 원활한 경험을 보장할 수 있도록 했습니다.

지금 Unity Pro 다운로드하기

강력한 도구, 지원, 검증된 파트너 및 활발한 커뮤니티의 도움을 받아 대형 스튜디오의 출시작과 경쟁하거나 이를 능가하는 수준의 품질을 갖춘 성공적인 게임을 제작해 보세요.