본문 바로가기

Unity

[Unity] 개인프로젝트 - 저사양 단말기 구분하기

개요

D2에서는 그래픽 옵션을 4단계로 제공하고 있다.
 
그리고, 게임을 처음 설치하면 기본적으로 옵션 2로 설정되지만,
저사양 단말기의 경우 그래픽 옵션 2로 원활하게 게임을 플레이하기 어렵다는 판단이었다.
 
이에, 저사양 단말기를 구분해서 기본 옵션 1로 설정되게 하고, 옵션 2 이상으로는 올리지 못하게 하는 처리가 필요했다.
 

iOS

UnityEngine.iOS.DeviceGeneration 이라는 Enum을 살펴보면 다음과 같이 열거가 되어 있다.
public enum DeviceGeneration
{
    Unknown = 0,
    iPhone = 1,
    iPhone3G = 2,
    iPhone3GS = 3,
    iPodTouch1Gen = 4,
    iPodTouch2Gen = 5,
    iPodTouch3Gen = 6,
    iPad1Gen = 7,
    iPhone4 = 8,
    iPodTouch4Gen = 9,
    iPad2Gen = 10,
    iPhone4S = 11,
    iPad3Gen = 12,
    iPhone5 = 13,
    iPodTouch5Gen = 14,
    iPadMini1Gen = 15,

    iPad4Gen = 16,
    iPhone5C = 17,
    iPhone5S = 18,
    iPadAir1 = 19,
    iPad5Gen = 19,
    iPadMini2Gen = 20,
    iPhone6 = 21,
    iPhone6Plus = 22,
    iPadMini3Gen = 23,
    iPadAir2 = 24,
    iPhone6S = 25,
    iPhone6SPlus = 26,
    iPadPro1Gen = 27,
    iPadMini4Gen = 28,
    iPhoneUnknown = 10001,
    iPadUnknown = 10002,
    iPodTouchUnknown = 10003
}
 
제조사 파편화가 없기에, 이렇게 깔끔하게 열거가 되지 않나 싶다.
iOS 기기의 DeviceGeneration 값은 UnityEngine.iOS.Device.generation 변수에 저장되어 있다.
 
D2에서는 iPad 4Gen 미만의 제품을 모두 저사양으로 취급하였다.
다만, iPhone 5만 제외하고 말이다. 너무 부드럽게 잘 돌아가서 굳이 제외할 필요를 느끼지 못했다.
(Metal API의 힘이다 이건)
 

Android

안드로이드 제품군은 도저히 제조사별로 나누기를 할 수도 없어서 다음의 조건들을 조합해 저사양 기기인지 판단했다.
 
1) OpenGL-ES 지원 버전
 
ES3을 지원하지 못하면 저사양 기기
 
2) GPU가 Adreno
 
GPU 모델 넘버를 읽어와서, 다음과 같이 걸러 내었다.
  • 3 씨리즈 중 330 미만으로는 저사양 기기
  • 405는 무조건 저사양 기기
 
3) GPU가 Mali
 
GPU 모델 넘버를 얻어와서, 다음과 같이 걸러 내었다.
  • mali-g는 저사양이 아님
  • 4 씨리즈는 무조건 저사양 기기
  • 6 씨리즈는 628 / 658 / 678을 아니면 저사양 기기
 
4) GPU가 PowerVR
 
우선, 1~4 세대를 걸러내어 저사양 기기라 판정해야 한다.
이는 DeviceName에 "pcx", "clx", "pmx", "stg", "mbx"가 포함되는지로 구분지을 수 있다.
그 다음 세대라면, DeviceName에 "sgx"를 포함해야 한다. 그렇지 않다면 저사양 기기로 판정한다.
 
이제 모델 넘버를 얻어와서, 모델 넘버가 554 미만이면, 저사양 기기라 판정한다.
 

부족한 점

안드로이드 제품군의 경우 아직 걸러낼 데이터를 충실하게 채우지 못했다.
대략 3-4시간 하드웨어 정보를 수집하고 유명한 3개의 GPU에 대해 대응했을 뿐이다.
 
그 외 저가형 단말기에서 주로 쓰이는 칩셋들에 대해서는 미처 조사를 하지 못했다.
따라서, 글로벌하게는 아직 제대로 걸러내지 못하고 있는 것이다.

다음 프로젝트에서는 조금 더 면밀하게 조사를 해서 커버리지를 넓혀가야 한다.