Featured image of post 삼품 퍼포먼스 테스트 결과보고

삼품 퍼포먼스 테스트 결과보고

꽤 긴 시간이 걸렸습니다. 빨리 하려 했는데 중간에 일주일 바다도 건너 갔다 오고 (…)

게다가 중간에 이래저래 새로운 기법들이 발견되어서 수정에 수정을 거치다보니 이제야 완성되었군요.

미리 말씀드리지만 저도 사람인지라, 최대한 정확하게 하려 노력했지만 실수는 있을 수 있습니다.
실수를 막을 방법은 역시 꾸준한 테스트 뿐이겠지요.

맵은 크게 월드맵과 던전으로 나뉘고, 또 다른 맵으로는 이벤트맵과 배틀필드, 시나리오 맵 등이 존재합니다만 여기서는 월드맵과 던전만 전수조사로 테스트하였습니다. 이후 이벤트맵이나 배틀필드, 시나리오 맵 등은 체크하도록 하겠지만 굳이 세부비교까지는 하고 있지 않다가 문제가 발견되는 맵만 세부 테스트 하겠습니다.

즉 이 결과가 일단 기준이 되는 테스트 결과입니다. 이제 세부 테스트 하는 데이터들은 이 데이터를 기반으로 상대비교하면서 테스트하면 용이하겠지요.

테스트 방법 / 조건

테스트 방법은 지형에 캐릭터 30마리를 로드한 채, (각각의 캐릭터는 복제된 캐릭터가 아닙니다. 데이터가 독립된 30마리입니다. ) 각 지형에서 가장 무겁다고 여겨지는 자리를 찾아가 퍼포먼스를 테스트하는 방법을 사용했습니다.
해상도는 웹의 기준인 1024*600 이고, 옵션은 이전에 올렸던 기준의 GOOD 옵션을 사용했습니다.
이 옵션은 그림자를 사용하지 않고, 픽셀라이트를 2개까지 사용하며 텍스쳐는 최고 해상도, 블렌드 웨이트는 2개까지 사용하는 특징을 가지고 있습니다.
컴퓨터는 권장사양으로 결정되어 있는 듀얼코어 3.2 / 1G/GF 6600 을 사용하였습니다.
카메라는 가장 줌아웃된 상태 - 일명 디아블로 상태를 사용했습니다. 줌 인되어서 1인칭이 된다면 매우 변수가 많아지게 되어 측정이 곤란합니다. 지형 제작시에 고려되는 기술도 달라져야 하고요.  

테스트 결과


테스트는 기본적으로 1번, 필요시 2번으로 진행되었습니다. 
전제조건으로 알아두어야 할 중요한 사항은 드로우콜과 픽셀라이팅 개수의 관계인데, 픽셀라이팅이 0에서 시작해서 1개씩 추가될때 마다 전체의 드로우콜이 *2가 됩니다. 즉 픽셀라이트를 2 개까지 허용했으므로, 실제 오브젝트의 드로우콜에서 *3의 상태라고 보시면 됩니다. 단, 지형에 정말로 라이트가 2개 이하로 박혀 있을 경우에는 옵션에서 라이트가 허용되어 있더라도 드로우콜이 급감하게 됩니다.

그러므로 캐릭터가 차지하는 드로우콜은 마리당 5 * 30마리 = 150 이며, 이것을 픽셀라이트 2개 허용했으므로 사실상 캐릭터가 차지하는 드로우콜은 150*3 = 450 이라고 생각하시면 됩니다. 즉 위 드로우콜 수치에서 약 450 정도를 빼시면 배경에 해당되는 드로우콜입니다. (캐릭터가 차지하는 버텍스와 트라이앵글은 각각 190k 정도 됩니다)

어려운 설명 빼 놓고 분석결과를 쉽게 설명해 드려 보겠습니다….

위 데이터는 각 맵의 평균프레임입니다. 사실상 게임을 플레이 할 때 약 20프레임 이상이 꾸준히 나와줘야 게임이 무겁다는 느낌을 받지 않을 수 있습니다. 그런 의미에서 위의 수치들에서 살짝 부족한 맵 들이 보입니다.

드로우콜은 CPU가 그래픽 카드에 오브젝트를 그리도록 명령하는 횟수로, 일반적인 게임에서 가장 프레임에 민감한 영향을 주는 요소들 중 하나입니다. (모바일쪽에서는 드로우콜의 중요성이 훨씬 더 강조됩니다) 이 수치들은 명확한 기준을 만들기가 쉽지 않지만, 이번 테스트로 어느 정도의 기준을 만들 수 있을 것으로 보입니다.

이제 각 맵별로 수치를 보면서 새부 분석해 보도록 하겠습니다.

월드맵

월드맵의 퍼포먼스 테스트 결과입니다. (글씨가 작아서 안보이려나요…)
월드맵은 일단 좀 썰렁하게 생긴건 사실이긴 합니다만, 드로우콜이 약 200밖에 되지 않는 이상한 결과가 나왔습니다. 위에 설명드린대로 캐릭터 30마리가 450 드로우콜을 먹는데 전체가 200이라는…

그 이유는 조명 때문인데, 여기에는 가장 빠르고 싼 라이트인 Directlight 가 2개 들어가 있는 것 외엔 다른 라이트가 들어가 있지 않습니다. 덕분에 옵션에서 정하고 있는 조명제한보다 낮은 조명으로 동작하고 있어서 드로우콜이 대폭 줄 수 있게 되었습니다.
그래서 폴리곤과 트라이앵글 수치도 가장 적게 나옵니다.

하지만 낮은 드로우콜에 비해 생각보다 프레임이 잘 나오지 않습니다.
이유는 좀 더 테스트해 봐야 하겠지만 퍼포먼스 체크툴에서 오디오존 스크립트가 22%의 퍼포먼스를 차지하고 있는 것이 보입니다. 이 스크립트는 다른 맵에서 발견되지 않는 것으로, 뭔가 사운드 관련되어 아직 완성되지 않은 스크립트가 들어가 프레임을 저하시키고 있는 것일지도 모릅니다. 관련자와 함께 좀 더 체크해 봐야 하겠습니다
텍스쳐 사이즈는 테스트한 맵 중 가장 크지만, 그다지 걱정할 레벨은 아닌 것으로 보입니다.

던전 _캐슬포인트 (영어쓰기 귀찮..) 003 섹션 95

던전 캐슬포인트의 테스트 결과입니다. 꽤나 평범한 결과를 보여주고 있으며, 크게 특이할만한 사항이 없는 것이 특징입니다.
프로파일링의 결과치의 배분이 꽤나 이상적인 모습을 가지고 있는 것이 특징입니다.
(가장 높은 것이 Opaque 드로잉으로, 일반 오브젝트 드로잉을 말합니다. Transparant geometry(반투명 오브젝트) 의 비율도 매우 적고 , 오브젝트 드로잉 다음이 메쉬 스키닝 업데이트와 애니메이션 업데이트로, 매우 이상적인 분포를 자랑하고 있습니다)
라이트는 기본 디렉셔널 라이트 2개 외에 포인트 라이트가 하나 들어 있어서, 제한사항에 딱 맞는 범위입니다.

던전_필드워 002 섹션 90

드로우콜이 좀 높아서 프레임이 잘 나오지 않습니다. 라이트도 꽤 많이 사용되어서 라이트 제한을 풀면 급격히 느려질 맵입니다.
물론 가장 무거운 부분의 데이터이고, 이 정도면 못 버틸 느낌은 아니긴 합니다만 드로우콜을 좀 더 줄이면 효과가 좋을것 같습니다. (드로우콜을 줄이는 것은 오브젝트를 줄이는 것과 다릅니다. 예를 들어, 여러 개가 하나의 그룹으로 되어 있는 방패들을, 근처에 있는 방패들끼리 5개씩 묶어서 Attach 시키면 드로우콜이 4*3 = 12 가 줄어들 것입니다. )

약간 드로우콜을 줄이는 작업이 가능해 보이는 오브젝트가 좀 보입니다.

그 외 구성은 이상적이며, 특별히 곤란한 낭비도 보이지 않습니다.

던전_포트 001 섹션 86

사실 각종 값들은 그다지 나쁘지 않지만, 이상하게 프레임이 안나오는 맵이었습니다.
드로우콜도 꽤 낮은 편이고, 버텍스나 트라이앵글은 이미 그래픽 카드 허용치를 근처에도 가지 못하고 있습니다.
라이트도 포인트 라이트 2개를 사용했지만, 옵션에서 제한되어 있는 상태기 때문에 큰 문제는 없습니다.

그런데 프로파일링 데이터 분석 결과, Render.Transparent Geometry의 수치가 33.6% 라고 하는 비정상적인 수치였습니다. 이는 어딘가에서 반투명 오브젝트가 과다하게 사용되고 있다는 것을 의미하며,  
속도를 올리기 위해 반투명 렌더링 부하를 유발하는 오브젝트나 쉐이더를 찾는 것이 필요할 듯 합니다.
(수진씨가 벌써 하나 찾았뜸)
(솥에 사용하는 버블 에미터가 부하를 일으키고 있었네요. 이펙트쪽에서 수정하면 될듯)

던전_강족_001 섹션 4 테스트


프레임이나 드로우콜 모두 큰 문제 없는 수준으로, 따로 특이하게 얘기할 필요없는 맵입니다.  석상에서 살짝 Z 파이팅이 보이긴 하는데 뭐… 비어 보이지도 않고 속도도 괜찮고 전반적으로 매우 적절하게 잘 만든 맵으로 보이네요.
라이트를 꽤 많이 사용했기 때문에 라이트 제한을 하지 않았으면 느려졌을 맵인데, 라이트 제한 한 상태에 잘 어울리는 퍼포먼스를 보이고 있는 맵입니다.

던전_게이트웨이 섹션 89

역시 마찬가지로 잘 만들어진 맵입니다. 메쉬 스키닝 수치가 드로잉 수치보다 높은데, 메쉬 스키닝은 캐릭터의 스키닝 값이고 드로잉은 말그대로 드로잉 수치니… 캐릭터의 스키닝 수치는 고정되어 있는 수치이고, 그보다 드로잉이 낮다는 말은 배경이 꽤 부하가 적다는 말입니다.
단지 전체적으로 드로우콜을 줄일 여지가 있는 오브젝트들이 역시 좀 보입니다. 이것들은 수진씨와 따로 협의하도록 하지요.

던전 계_007 _섹션 01

압도적인 드로우콜을 자랑하는 맵입니다. 드로우콜이 굉장히 높기 때문에 프레임이 잘 안나오는 전형적인 스타일입니다.
오브젝트를 정리하거나 합쳐서 드로우콜을 줄여주는 것이 필요합니다.
다른 맵에서는 렌더링이 최대 20 ms정도를 차지하는데 비해, 여기서는 30 ms 를 차지하고 있습니다. 이것이 어느 정도냐면, 33ms 라면 1/30초의 의미이므로 단지 화면에 그림을 찍어주는 것만으로 30프레임 속도를 잡아먹고 있다는 의미입니다.

던전 _ 임금님궁전 ㅋㅋ _ 섹션 87

Hugo로 만듦
JimmyStack 테마 사용 중