Unity 검색

Adaptive Performance로 매끄럽게 실행되는 멋진 모바일 게임 빌드하기

2021년 3월 30일 게임 | 6 분 소요
hands holding smartphone
hands holding smartphone
공유

Is this article helpful for you?

Thank you for your feedback!

Adaptive Performance를 사용하면 프레임 속도와 그래픽스의 균형을 맞춰 모바일 게임을 조정할 수 있습니다. Adaptive Performance의 디바이스 시뮬레이터, 샘플 및 스케일러와 관련된 최신 정보를 확인하세요.

개발자는 플레이어가 사용하는 다양한 기기에서 게임이 어떤 성능을 발휘하는지 점검해야 합니다. 특히 복잡한 모바일 게임을 빌드하는 개발자라면 더욱 그렇습니다. 성능 문제가 발생하면 게임플레이에 지장을 줄 뿐만 아니라 기기의 배터리도 더 빠르게 소모됩니다. 특히 휴대전화에서 과도한 열이 발생하면 서멀 스로틀링(thermal throttling)의 원인이 될 수 있으며, 이는 더욱 복구하기 어려운 문제인 프레임 속도 저하로 이어집니다.

서멀 스로틀링이 모바일 게임 성능에 영향을 미치는 이유가 무엇일까요? 게임 내에 렌더링이나 게임 로직 처리와 같은 작업이 많을수록 CPU와 GPU는 그만큼 더 많은 전력을 소모합니다. 전력 소모가 증가하면 더 많은 양의 열이 발생하게 되고, 기기 온도를 낮추기 위해 성능이 저하됩니다.

Unity와 삼성의 Adaptive Performance를 사용하면 기기의 온도와 전력 상태를 모니터링하며 적절하게 대응할 준비를 갖출 수 있습니다. 예를 들어 게임을 장시간 플레이하면서 디테일 수준(LOD) 바이어스를 동적으로 낮추어 게임이 매끄럽게 작동하는지 확인할 수 있습니다. 개발자는 Adaptive Performance를 활용하여 통제된 방식으로 성능을 향상할 수 있으며, 이는 그래픽 정확도의 최소화로 이어집니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

Adaptive Performance에 대한 정보 및 Adaptive Performance를 빌드에 추가하는 방법을 자세히 알아보려면 위 동영상을 시청해 보세요.

Adaptive Performance의 작동 원리

In-editor screenshot

Adaptive Performance는 모든 삼성 갤럭시 기기에서 작동합니다. 다시 말해, 삼성 기기에 한해 Adaptive Performance 구현 시 직접적인 혜택을 받을 수 있습니다.

AppBrain에 따르면 삼성은 업계를 선도하는 Android 기기 제조업체로서 전 세계 시장의 3분의 1 이상을 점유하고 있습니다. 따라서 Adaptive Performance를 게임에 추가하면 수 억 대에 달하는 기기에서 확실히 성능을 향상시킬 수 있습니다.

Adaptive Performance API를 사용하여 애플리케이션을 미세 조정할 수 있으며, 자동화 모드도 제공됩니다. 자동화 모드에서는 다음을 포함한 주요 지표를 기반으로 하여 설정을 조정합니다.

  • 이전 프레임을 기준으로 이상적인 프레임 속도
  • 기기 온도 수준
  • 기기가 발열 관련 이벤트에 근접한 정도
  • 기기의 CPU 또는 GPU 의존도

위 4가지 지표가 기기의 상태를 규정하면 Adaptive Performance가 설정을 미세 조정하고 병목 현상을 완화합니다. 이 작업은 기기의 상태를 설명하는 정수 값인 인덱서(Indexer)를 제공하는 방식으로 이루어집니다. 인덱서는 기기의 열 상태와 성능 상태를 관찰하고 수량화된 고품질 인덱스를 제공합니다.

스케일러(Scaler)는 게임의 개별적인 특징을 나타내며 여기에는 그래픽스와 물리 설정 외에도 다양한 항목이 포함될 수 있습니다. 스케일러는 인덱서 값에 따라 자체 설정을 조정합니다. 디바이스 시뮬레이터의 어댑티브 퍼포먼스 확장 프로그램에서 어떤 스케일러를 사용할 수 있는지 확인할 수 있습니다.

디바이스 시뮬레이터에서 병목 현상 시뮬레이션하기

Screen with scene view

병목 현상 시뮬레이션은 까다로운 작업이지만, Device Simulator에 Adaptive Performance가 통합됨에 따라 성능 테스트 이전에 기기에서 열이 발생할 때까지 기다리지 않고도 다양한 시나리오를 에디터에서 바로 테스트할 수 있습니다.

Device Simulator의 Thermal 설정을 통해 기기를 스로틀 상태로 설정(Throttle)하거나 스로틀링이 임박한 경우 경고를 표시할 수 있습니다. 또한 Level과 Trend 값을 양수로 설정하여 기기에서 열이 발생하고 있음을 나타낼 수도 있습니다.

아울러 Performance 설정을 사용하여 CPU나 GPU, 타겟 프레임 속도로 현재 병목 현상을 설정할 수 있습니다. 마찬가지로 CPU와 GPU 수준을 설정하여 성능 빈도를 시뮬레이션하는 것도 가능합니다.

Thermal 설정과 Performance 설정 모두 Adaptive Performance가 인덱서와 스케일러를 통해 게임의 성능을 변경하는 방식에 영향을 줍니다. Device Simulator를 활용하면 다양한 스케일러를 활성화하여 스로틀링 시 Adaptive Performance가 어떻게 기기 상황에 대처하는지 확인할 수 있습니다.

예를 들어 병목 현상이 GPU에서 발생하는 것으로 설정하고, 경고 수준은 발열의 추세와 수준이 모두 증가할 때 스로틀링으로 설정한 경우 Adaptive Performance가 그림자 설정을 미세 조정하도록 할 수 있습니다. 또한 스케일러를 슬라이더로 오버라이드하여 개별 설정을 테스트하는 것도 가능합니다.

커스텀 스케일러 만들기

In-editor screenshot

Adaptive Performance를 사용하면 커스텀 스케일러를 만들어 게임 설정 제어 방식을 강화하고 확장할 수 있습니다. 여기에는 자동으로 제공되지 않는 설정도 포함됩니다.

커스텀 스케일러를 구현하려면 AdaptivePerformanceScaler 클래스를 구현해야 합니다.

예를 들어 QualitySettings.masterTextureLimit를 설정하면 수준별로 텍스처의 품질과 크기를 설명하라는 프롬프트가 표시됩니다.

현재 스케일 수준에 기반하여 OnLevel 가상 함수를 오버라이드하고 스케일링 로직을 구현할 수 있습니다. Adaptive Performance가 반환하는 CurrentLevel 값은 QualitySettings.masterTextureLimit를 더 높은 값으로 설정하도록 알린 다음, 모든 텍스처의 축소된 텍스처 밉맵을 사용합니다. 텍스처 크기를 처리할 때는 커스텀 스케일러가 비주얼에 영향을 미치며, 특히 GPU를 타겟으로 합니다.

최대 수준과 경계를 설정하면 게임의 비주얼이 완전히 손실되지 않도록 보장할 수 있으며, 이는 고수준의 밉맵 텍스처가 저수준의 밉맵 텍스처 차원의 절반을 구성하기 때문입니다.

Adaptive Performance를 활용하면 게임이 기기의 현재 상태에 적절하게 반응할 수 있게 됩니다. 자세히 알아보려면 Package Manager > Adaptive Performance > Samples를 선택하여 패키지 관리자에서 제공하는 샘플을 확인하세요. 각 샘플은 특정 스케일러와 상호 작용하므로 해당 스케일러가 게임에 어떤 영향을 미치는지 확인할 수 있습니다. Adaptive Performance 설정 및 API와 직접 상호 작용할 수 있는 방법을 자세히 알아보려면 최종 사용자를 위한 기술 자료를 확인하는 것도 좋습니다. 아래에서 해당 자료와 기타 관련 링크를 확인할 수 있습니다.

Adaptive Performance에 관해 자세히 알아보려면 포럼을 방문하거나 튜토리얼 동영상을 시청하세요. 기술 자료에서 Adaptive Performance 구현 방법을 확인할 수 있습니다.

2021년 3월 30일 게임 | 6 분 소요

Is this article helpful for you?

Thank you for your feedback!