UDN
Search public documentation:

AppCompatKR
English Translation
日本語訳
中国翻译

Licensees can log in.

Red links require licensee log in.


Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

Unreal Engine 3의 어플리케이션 호환(AppCompat) 시스템

문서 요약: Unreal Engine 3에서의 어플리케이션 호환 시스템에 대한 설명.

문서 변경 내역: 작성 Wes Hunt.

개요

Application Compatibility (어플리케이션 호환성. 줄인 말로 AppCompat 이라고도 함) 는 게임이 실행되는 컴퓨터의 성능을 바탕으로 게임을 위한 수행 옵션의 기본 세트를 공급하는데 사용됩니다.

AppCompat 은 오로지 GSystemSettings 의 값을 초기화하는 것이 목적입니다. 게임은 절대 AppCompat 에서 값을 구하지 않으며, 오직 사용할 수 있는 현재의 옵션 세트만을 GSystemSettings 에서 구합니다. GSystemSettings 는 종료시 EngineIni[SystemSettingsKR] (그리고 약간의 다른 장소에)에 기록되므로, 일단 초기화되면 AppCompat 은 더 이상 시동 과정에 관여될 필요가 없습니다. 이 경우 GSystemSettings는 EngineIni[SystemSettingsKR] 로부터 직접 초기화 됩니다.

이 문서에서는 여러가지 SystemSetting 들이 하는 일에 대해서는 설명하지 않을 것입니다. 이에 대한 정보를 원하시면 Texture Support And SettingsSystem Settings 페이지를 보십시오.

Editor 가 실행되는 동안에는 결코 AppCompat 이 사용되지 않습니다. Editor 는 컴퓨터의 성능에, 특히 일정한 플랫폼을 대상으로 하는 경우, 민감해서는 안되기 때문입니다. 따라서 에디터의 실행을 위해 GSystemSettings를 초기화 하는데는 항상 EngineIni[SystemSettingsEditor] 가 사용됩니다. 이 설정들은 게임이 정상적으로 실행되는 동안에 설정을 겹쳐쓰지 않도록 각각 별도로 로드되고 저장됩니다.

: AppCompat 의 CPU 검파 부분은 현재 Win64와 호환되지 않으며, 단순히 해당 CPU에서 가능한 것중 최고의 호한 레벨을 반환하고 있습니다.

시행

근본적으로, AppCompat 은 단지 GSystemSettings 용의 템플릿 세트에 불과합니다. 그러므로 각 CompatIni[AppCompatBucketX] 엔트리는 더욱 더 강력한 컴퓨터를 위한 설정을 나타내는 더 높은 버킷과 더불어 EngineIni[SystemSettingsKR] 와 똑같은 요소들을 가지고 있습니다. 어플리케이션이 처음으로 실행될 때, GSystemSettings 는 컴퓨터의 측정된 수행능력에 따라 이에 해당하는 CompatIni[AppCompatBucketX] 의 엔트리로 초기화 됩니다. 첫번 째 실행 이후에는 더 이상 시동에 AppCompat 이 사용되지 않으며, GSystemSettings 는 EngineIni[SystemSettingsKR] 로부터 직접 초기화 됩니다.

AppCompat은 또한 "SystemSettingsFriendly" 클래스와 더불어 관련 옵션 그룹에 대한 성능을 조절하는 GSystemSettings 의 복잡한 변환을 효율적으로 수행하는 UI 에 간단한 슬라이더를 표시하는데 사용됩니다. 예를 들면, "Shadow Detail" 옵션 (FSystemSettingsFriendly::ShadowDetail) 은 10여개의 각기 다른 GSystemSettings 를 사용자가 단지 슬라이더를 움직임으로써 선택할 수 있는 5개의 레벨로 분리해 냅니다. 이는 사전 설정된 값을 제공함으로써 EngineIni[SystemSettingsKR] 구성의 복잡성을 제목에서 감출 수 있도록 해줍니다. 사전 설정 값들은 CompatIni[AppCompatBucketX] 에서 가져옵니다.

DefaultCompat 의 구조

DefaultCompat.ini 파일은 대체로 아래와 같습니다:

[Configuration]
; INI 상속 시스템. 손대지 마십시오
BasedOn=..\Engine\Config\BaseCompat.ini

[AppCompatBucket1]
; 설정을 정의합니다. SystemSettings값은 무엇이든 지원됩니다. 예를 들면 다음과 같습니다:
StaticDecals=False
DynamicDecals=False
DynamicLights=False
TEXTUREGROUP_Character=(MinLODSize=256,MaxLODSize=512,LODBias=2,MinMagFilter=linear,MipFilter=point)

[AppCompatBucket2]
; 점점 강력해지는 컴퓨터를 위한 설정들

[AppCompatBucket3]
; 점점 강력해지는 컴퓨터를 위한 설정들

[AppCompatBucket4]
; 점점 강력해지는 컴퓨터를 위한 설정들

[AppCompatBucket5]
; 점점 강력해지는 컴퓨터를 위한 설정들

지원되는 설정들의 전체 목록은 SystemSettingsKR 페이지를 참고하십시오.

DefaultCompat에는 또한 게임에 대한 AppCompat 레벨의 한계치를 결정하는데 사용되는 설정값이 포함되어 있을 수 있습니다. 이들 값의 설정에 대한 자세한 내용은 다음 섹션을 참고하십시오.

AppCompat 의 레벨 정하기

앞서 언급한 것처럼, AppCompat 레벨은 오직 어플리케이션이 처음 실행될 때만 계산됩니다. 이는 EngineIni[AppCompat] 에 저장되어 있는 기존 호환 레벨 점수의 존재 여부에 의해 감지됩니다. 엔트리가 발견되지 않으면 AppCompat 이 실행되고 EngineIni[AppCompat] 이 업데이트 되어 그 결과를 반영합니다.

호환 레벨을 결정하는데 사용되는 핵심 논리는 현재 엔진의 일부이지만 (CompatibilityEvaluator.cpp 참고), 게임별로 각 테스트에 대한 성능의 한계값을 설정할 수 있습니다 (Engine/Config 에서 BaseCompat.ini[AppCompat] 섹션 참고). 최종 호환 레벨은 각 테스트 점수의 총계입니다. 이 논리에 대해서는 아래에서 별도로 자세히 설명됩니다. 아래에서 언급되는 구성 가능 값들은 모두 BaseCompat.ini[AppCompat] 섹션에서 가져온 것입니다. 게임의 DefaultCompat.ini 파일에서 새 값들을 지정함으로써 이 값들을 오버라이드 하십시오.

CPU 레벨

  1. 하나의 스레드에서 CPU 집약적인 태스크를 실행한 다음, 성능을 측정하여 실험적 CPU 점수를 얻습니다. 이 점수는 NVTT을 사용하여 임의의 256x256 텍스처를 압축하데 걸리는 1000 분의 1초 단위의 시간입니다.
  2. 그 다음 사용되고 있는 특정 OS/CPU/GPU 에 관한 정보가 수집됩니다 (그리고 디버깅을 위해 로그됩니다).
    • : 현재 CPU 검파는 Win64 와 호환성이 없습니다. 이 경우에는 항상 최고의 CPU 레벨이 반환됩니다.
  3. 멀티코어 CPU의 경우에는 그 CPU 에 CPUMultiCoreMult 에서 가져온, 구성 가능한 보너스가 주어집니다.
  4. 멀티코어가 아니지만 하이퍼스레딩을 지원하는 CPU의 경우에는 그 CPU에 CPUHyperThreadMult 에서 가져온, 구성 가능한 보너스가 주어집니다.
  5. AppCompat.iniCPUScore[1-5] 에 대한 설정값을 가지고 있다면,
    • Adjusted CPU Score(조정된 CPU 점수) = CPUScore / CPU bonus (CPU 점수/CPU 보너스)
    • 이것은 CPU 점수가 낮은 것이 더 좋다는 뜻입니다!
    • 이 조정된 점수는 CPUScore[1-5] 설정값을 바탕으로 버킷을 결정하는데 사용됩니다.
  6. AppCompat.iniCPUScore[1-5] 에 대한 설정값을 가지고 있지 않다면,
    • 순전히 CPU의 속도를 기준으로 하는 방법이 사용됩니다. 이 방법은 서로 다른 CPU 타입을 고려하지 않습니다.
    • Adjusted CPU Score (조정된 CPU 점수) = CPUSpeed * CPU bonus (CPU의 속도 * CPU 보너스)
    • 이것은 CPU 점수가 높은 것이 더 좋다는 뜻입니다!
    • 이 조정된 점수는 GHz 로 변환되어 CPUSpeed[1-5] 설정값을 바탕으로 버킷을 결정하는데 사용됩니다.

CPU 메모리 레벨

  1. CPUMemory[1-5] 설정값은 컴퓨터의 물리적 메모리 총계를 바탕으로 CPU 메모리 레벨을 정하는데 사용됩니다.
  2. 각 버킷에 대한 메모리 한계값은 config 에서 기가바이트 단위로 지정됩니다.

GPU 메모리 레벨

  1. GPUMemory[1-5] 설정값은 제 1 비디오 카드의 물리적 메모리 총계를 바탕으로 GPU 메모리 레벨을 정하는데 사용됩니다.
  2. 각 버킷에 대한 메모리 한계값은 config 에서 기가바이트 단위로 지정됩니다.

GPU 쉐이더 레벨

  1. GPUShaderlevel[1-5] 설정값은 지원되는 DX9 픽셀 쉐이더 레벨을 바탕으로 GPU 의 성능 레벨을 정하는데 사용됩니다.
  2. 각 버킷에 대한 GPU 쉐이더의 한계값은 integer 로서 지정됩니다. UnrealEngine3 에는 Shader Model 2 가 요구되므로, 2 또는 3만이 적법한 값입니다.

GPU 장치 레벨

  1. AppCompat.ini 에는 각 비디오 카드 제조 판매 업체에 대한 다수의 [AppCompatGPU-0xXXXX] 섹션이 들어 있습니다.
  2. 각 섹션에는 다음과 같은 값들이 들어 있습니다:
    • VendorName=XXXX - 제조 판매 업체의 이름을 가리킵니다
    • VendorMobileTag=XXXX - 카드의 이름에 이것이 있는 경우, 이는 모바일 카드를 가리키는 문자열입니다.
    • 0x014F=1,GeForce 6200 형식의 엔트리(들).
    • 첫 번째 숫자는 하드웨어 ID, 두 번째 것은 그것이 들어가는 호환 버킷, 그리고 콤마 다음의 문자열은 카드의 이름입니다.
    • 카드의 하드웨어 ID에 따라, 이 config 설정이 카드의 GPU 장치 레벨을 정하고 그것이 모바일 카드인지 판단하는데 사용됩니다.
    • config 에서 특정 카드가 발견되지 않은 경우에는, 다음의 공식에 따라 레벨이 결정됩니다:
    • if VidMem > 512 and ShaderLevel > 2 and not mobile card=
      • Level = 4
    • else if VidMem >= 256
      • Level = 3
    • else if VidMem >= 128
      • Level = 2
    • else
      • Level = 1

Composite(복합) 레벨

엔진에 보고된 최종 수치들은 다음과 같습니다:

  • GPU Composite = min(GPU Mem Level, GPU Device Level)
  • CPU Composite = min(CPU Level, CPU Mem Level)
  • Overall Composite = min(GPU Composite, CPU Composite)

SystemSetting 으로의 복합 레벨 매핑

Overall Composite Level(종합적 복합 레벨)=에 상응하는 =AppCompatBucketX 섹션은 EngineIni[SystemSettingsKR] 에 복사되어 GSystemSetting 을 초기화하는데 사용됩니다. EngineIni[SystemSettingsKR]텍스처의 디테일 설정 부분은 GPU Composite Level(GPU 복합 레벨) 에 상응하는 AppCompatBucketX 로부터 초기화됩니다. 현재 CPU Composite Level (CPU 복합 레벨) 은 사용되지 않습니다.

게임에서 AppCompat 을 무효화 하려면

게임에 빈 DefaultCompat.ini 를 공급하면 AppCompat 을 효과적으로 무효화할 수 있습니다. 이는 EngineIni[SystemSettingsKR] 에서 모든 버킷이 초기화되도록 합니다. 그래도 처음에는 호환성 평가자가 실행되겠지만, 모든 버킷이 동등하기 때문에 상관 없습니다.

AppCompat 시작 논리 (PC에 한함)

  • 에디터인 경우:
    • GSystemSettings 를 EngineIni[SystemSettingsEditor] 로 초기화.
  • 어플리케이션이 이전에 실행된 적이 있는 경우 (GEngineIni[AppCompat] 에 문의):
    • GSystemSettings 를 EngineIni[SystemSettingsKR] 로 초기화
  • 기타:
    • 호환성 점검을 실행하여 호환성 레벨을 반환.
    • GSystemSettings 를 CompatIni[AppCompatBucketX] 로 초기화.
    • GSystemSettings 를 EngineIni[SystemSettingsKR] 에 저장.