본문 바로가기

도서관

하드웨어 테스트(적합성 테스트, 사양 테스트) 방법


게임오픈이 임박하게 되면, 하드웨어 테스트를 하게 됩니다.

※ 하드웨어 테스트는 회사마다 부르는 명칭이 다 제각각 인데,
    하드웨어 적합성 테스트, 사양 테스트, 호환성 테스트 등으로도 불리고 있습니다.
 


하드웨어 테스트의 목적 은 크게 두가지로 나뉘어 집니다.
1. 목표로 하는 환경(하드웨어, OS)에서 게임이 이상없이 잘 작동 하는가를 확인
2. 이상이 있는 특정 위치나 오브젝트가 있는지를 확인


게임은 어느 엔진을 사용하건 상관없이, 지원 가능한 쉐이더 버전(Shader version)을 구분하고 있습니다.
쉐이더(Shader)에는 픽셀 쉐이더(Pixel shader), 버텍스 쉐이더(Vertex shader), 지오메트리 쉐이더(Geometry shader)가 있지만,
가장 크게 영향을 받는것은 픽셀 쉐이더(Pixel shader) 입니다.

※ Shader 와 관련한 추가적인 내용은 위키피디아를 참고하시기 바랍니다. 
    http://en.wikipedia.org/wiki/Pixel_shader

픽셀 쉐이더는 그래픽 카드마다 지원 버전을 별도로 표기해 주고 있지만,
표기가 따로 나오지 않는 경우에는 DirectX 버전으로도 구분할 수 있습니다.
- DirectX 9.0 – Shader Model 2.0
- DirectX 9.0b – Pixel Shader 2.0b & Vertex Shader 2.0
- DirectX 9.0c – Shader Model 3.0, GPGPU
- DirectX 9.0L – Windows Vista only, Vista version of DirectX 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
- Direct3D 10 – Windows Vista/Windows 7, Shader Model 4.0, Windows Graphics Foundation 2.0, DXVA 2.0, GPGPU
- Direct3D 10.1 – Windows Vista SP1/Windows 7, Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1, GPGPU
- Direct3D 11 – Windows Vista/Windows 7, Shader Model 5.0, Multithreaded rendering, Compute shaders,
                     supported by hardware and software running Direct3D 9/10/10.1, GPGPU
 

하드웨어 테스트 방법 은 픽셀 쉐이더 버전을 경계로 결과가 달라지는 테스트 이기 때문에
경계값 테스트로 진행을 하게 됩니다. 

※ 경계값 테스트는 기준이 되는 경계값을 전후로 확인하는 테스트 입니다.
    예를 들어, 5 를 기준으로 결과값이 달라진다면, 4, 5, 6 에 대해 테스트를 해보는 것입니다.


경계를 정하는 일은 개발에서 목표로 하는 타겟 유저층을 정하는 일입니다.
최근의 추세는, 목표로 하는 유저층을 한국 뿐 아니라 중국까지 포함하는 경우가 많은데,
중국은 아직 저사양 PC의 비율이 (무시하지 못할 만큼) 많은 것으로 알려져 있습니다.
따라서, 픽셀 쉐이더 버전은 3.0 을 경계값으로 하는 경우가 많습니다.

※ 픽셀 쉐이더 4.0 이상 버전에서는 3.0 에서보다 더 화려한 효과를 낼 수 있는데,
    고사양 PC를 사용하는 유저를 타겟으로 하는 경우에는, 최상 옵션을 고려하여 4.0 도 경계값에 포함되어야 합니다.


지원 가능한 픽셀 쉐이더를 결정했다면, 다음으로는 테스트에 사용할 그래픽 카드를 결정해야 합니다.
그래픽 카드는 크게 ATI 제품군과 nVidia 제품군으로 구분합니다.
(이 이외의 그래픽 카드는 점유율이 낮아 테스트에 잘 포함하지 않습니다)
각각에 대한 세부 스펙은 아래 링크를 참고 하시기 바랍니다.
http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units
http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units

※ 인텔 제품군
http://en.wikipedia.org/wiki/Intel_GMA
- http://en.wikipedia.org/wiki/Intel_HD_Graphics
http://en.wikipedia.org/wiki/List_of_Intel_chipsets
 

그래픽 카드별 쉐이더 버전이나, 제품별 성능비교는
전문사이트가 많이 있으니 간단한 구글링을 통해 참고하시기 바랍니다.
- 지원 쉐이더 버전 : http://www.techpowerup.com/gpudb/
- 성능비교 : http://www.graphicscardbenchmarks.com/

결과적으로 이런 과정들을 거쳐,
몇 가지의 그래픽카드를 결정하고 나면,
테스트 환경을 만들어 가면서 직접 테스트를 시작하게 됩니다.

※ PC는 CPU 와 VGA 의 조합으로 이루어 지는데, 모든 조합을 다 개별 PC로 만들어 둘 수는 없기 때문에
    결국 부품단위로 확보한 다음, 테스트시에 교체 조립하는 형태로 테스트를 진행하게 됩니다.

 

하드웨어 테스트는 앞서말한 두가지 목적을 달성해야 하기 때문에, 무작정 게임을 돌려보는 것이 아니라,
사전에 체크해야 하는 부분 들이 있습니다.
- 체크할 좌표를 미리 정할 것
- 체크할 항목
(OC-Object Count, VC-Vertex Count, FPS-Frame Per Second)을 미리 정할 것


하드웨어 테스트의 결과물은 FPS 와 Windows System Log(성능 로그 - http://gameqa.tistory.com/76) 로 최종 체크되는데,
동일한 하드웨어 상태에서도, 게임내의 위치좌표에 따라 결과값이 달라지게 됩니다.
그래서 게임내의 주요 위치(최저 FPS 예상지점, 최고 FPS 예상지점 등)을 사전에 조사하고, 맵에 표시를 해두어야 합니다.
이는 하드웨어 테스트의 첫번째 목표인 하드웨어 환경에 따른 성능 확인을 위한 것입니다.

마찬가지로, 두번째 목표인 특정 오브젝트의 이상유무를 확인하기 위해서는
OC 와 VC 의 기준 수치를 사전에 조사해 두어야 합니다.
맵에 따라 평균적으로 사용되는 VC/OC 의 비율과 그에 따르는 예상 성능수치를 토대로,
테스트 결과에서 보여지는 값들 중, 특이점을 찾고, 그 원인이 되는 오브젝트를 조사하게 됩니다.


테스트 환경이 마련되고, 사전 체크가 마무리 되었다면
이제 본격적으로 테스트를 진행하여 테스트케이스의 수치를 채웁니다.
아래 그림은 이런 방법을 통해 진행한 하드웨어 테스트의 결과물 중 일부 입니다.




위 두 맵을 비교해 보면, 동일한 하드웨어 상황에서
오른쪽 맵은 FPS 그래프가 우하향인데 비해
왼쪽 맵은 FPS 그래프가 수평에 가까운것을 알수 있습니다.

※ VC 와 FPS 그래프는 X 자 형을 이루는 것이 정상입니다.
    VC 는 OC 숫자에 비례하고, FPS 는 OC 에 반비례 하기 때문입니다.


이를 해석하자면, 왼쪽 맵에 사용된 오브젝트 중 일부(특히 OC 50 에서 보여지는 오브젝트)가
FPS 저하를 가져오고 있는 것으로 생각해 볼 수 있습니다. 


아래는 위와 같은 방법을 여러 맵에 적용하여, 하드웨어 별 FPS 결과를 취합, 비교한 것입니다.




위 결과를 놓고 보면, 픽셀 쉐이더 3.0 에서 별도의 버그 상황은 발생하지 않았지만,
GeForce 6200 LE 에서는 FPS 가 현저하게 낮게 나오기 때문에, 
최소 사양은 이보다 높게 책정되어야 할 것 같습니다.
(혹은, 개발팀이 최적화 작업을 진행 하여 이 사양에서도 FPS 가 잘 나오도록 만들어야 합니다)

※ 사람이 인식할 수 있는 최소 FPS 는 24 이며 (초당 24 프레임, 주로 영화에 적용)
    무리없이 볼수 있는 최소 FPS 는 12 정도로 알려져 있습니다. (애니메이션의 최소 FPS 기준 수치)


픽셀 쉐이더 3.0 을 지원하지 않는 Radeon X300 SE 에서는 오히려 FPS 가 높게 나타나고 있는데,
이는 3.0 에서 보여야 하는 기능들이 아예 작동하지 않기 때문입니다. 
이 상태에서는 FPS 는 높게 나타나지만, 게임 화면은 정상적으로 출력되지 않습니다. 

 
아래는 이러한 데이터를 체크하는데 사용한 테스트 케이스의 예시 입니다.


 

 
하드웨어 테스트는 
단순히 특정 하드웨어 상에서 버그가 있느냐 없느냐를 검출하기 위해 진행하는 것이 아닙니다.
성능을 구체적으로 비교하고, 현재 문제가 있는 부분을 눈으로 직접 보여주는, 
지속적인 테스트의 과정으로 보아야 합니다.