본문 바로가기
자료는 자료지/회사 내부용 자료

2막 배경 데이터 분석 보고서

by 대마왕J 2012. 7. 19.

2막 데이터가 완성되어 가고 있습니다.

이 분석 보고서의 목적은 2막 데이터가 좋은 결과에 비해 얼마나 효율적인가를 체크하는 것으로,

품질을 유지하면서 좋은 프레임을 유지할 수 있는지를 체크하는 것입니다.

가장 큰 요인은 Drawcall 과 Frame이며, 나머지 데이터들은 참고용입니다.

일단 최종 결과는 다음과 같습니다.

명칭의 편의상 한글 독음으로 썼습니다.  

 

맨 위의 덩어리는 2막의 던젼이고, 중간 덩어리는 2막의 전략 전투입니다. 아래 낙양성은 1막에서 약간 무거운 마을(던젼) 로, 비교하는 의미에서 배치해 놓았습니다.

전반적으로 낙양성보다 대부분 무겁습니다.

표로 보시죠

 

일단 기준이 되는 낙양보다 드로우콜이 다들 높습니다.

수천이나 엄백호, 우금 등만 빼놓고는 드로우콜이 많이 높은 것을 볼 수 있습니다.

그럼에도 불구하고 프레임을 보면 조금 다른 양상이 나옵니다. 물론 일반적으로 낙양보다 프레임이 잘 나오는 것은 역시 별로 없습니다만, 생각보다 프레임은 드로우콜보다 편차는 크지 않습니다.

이는 드로우콜 외의 요인등 복합적 요인이 같이 들어갔기 때문이므로, 종합적으로 바라 보아야 합니다.

예를 들어 VBO가 높은 맵들은 정말로 폴리곤(버텍스)가 많은 맵입니다.

 

 

 

길게 돌려말하기는 여기서 끝내고, 답부터 말하자면,

현재의 2막 맵은 전체적으로 무겁습니다.

작게는 20%에서 심하게는 40~50% 까지 더 무거울 수도 있습니다.

그러므로 이대로 작업되어 나가면 문제가 발생할 소지가 있습니다.

그렇지만 데이터를 분석해서 더 찾은 최종 결과는,

데이터의 몇 가지만 개선하면 수치가 압도적으로 좋아진다는 것입니다.
맵들은 현재 무겁지만 사실 무겁지 않은 맵들입니다.  

심한 경우에는 드로우콜이 절반으로 줄 수도 있으며, 대부분의 맵이 안정권에 들어오게 할 수 있습니다.  

아래에 적힌 내용대로 수정하시면서 체크해 보시면 가능합니다.

사실을 말하자면, 이 정도로 VBO 를 많이 쓰면서 이 정도 화면 밀도를 올려 놓고서 이 정도 수치가 나온다는 것은 대단히 열심히 노력했다는 증거입니다. 실제로도 드로우콜을 줄이기 위한 노력들을 아주 많이 볼 수 있었으며,
데이터 양 대비 효율은 무척 좋은데도 불구하고 사소한 실수나 설정으로 수치가 안좋게 나오고 있는 상황이라는 것입니다.

 

 

2막 수정 가이드

 

2막의 맵을 가볍게 하기 위한 제작 가이드는 다음과 같습니다.
번호는 순서입니다.

아래의 1번과 2번만 지켜줘도 지금의 드로우콜보다 반 정도 떨어지고, 프레임은 10프레임 정도 향상되는 맵이 많이 있습니다.

 

1. 조명은 가급적 not important 설정을 사용하라.

forward  렌더링 상황에서 픽셀라이트는 1개가 늘 때마다 모든 드로우콜 * 2 가 되게 됩니다.
특히나 Attanuation이 없는 Direct Light 같은 경우는 화면의 모든 오브젝트와 터레인과 캐릭터에 영향을 끼치므로, 조심해서 사용해야 합니다.
그렇지만 노말맵과 같은 세밀한 조명 효과는 픽셀라이트에서만 나타나므로, 반드시 화면에는 1개의 direct light 가 important(픽셀 라이트 설정의 의미) 로 되어 있어야 합니다.

그렇지만 2막의 상당수의 맵에서 2개의 Direct light를 쓰는 것이 발견되었고, 두 direct light 모두 라이트 옵션이 Auto로 되어 있는 것을 볼 수 있었습니다. auto로 되어 있으면 원래 시스템에서 설정된 값을 따라야 하는데, 필요하다면 자동적으로 픽셀라이트로 적용되는 일이 벌어지므로 전체 드로우콜 *2 의 현상이 꽤 보였습니다. 당연히 프레임도 저하.

라이트를 모두 체크하세요. 메인 다이렉트 라이트 하나는 important 로 체크하고, 나머지 서브 라이트들은 not important 로 처리하시면 드로우콜이 극적으로 (평균적으로 100 이상씩. 심한 경우에는 1/2로 ) 줄어들 것입니다.

2막의 지형들은 point 라이트들을 극적으로 사용한 경우가 많습니다. 때문에 국지적으로 강한 point 라이트가 많이 보이고 이것들이 분위기를 꽤 살리고 있는데요, point light들을 not important로 하게 되면 픽셀라이트가 아닌 버텍스 라이트가 되고, 때문에 버텍스가 많지 않은 평평한 지형에서 라이트가 잘 안보이는 일이 일어납니다.
그리고 이럴 때 important로 강제로 설정을 바꾸신 경우를 발견했는데요, 괜찮긴 합니다만, 콜수에 주의하면서 바꾸셔야 합니다. 현재 콜수가 안정적이라면 그렇게 하셔도 되겠고, 안정적이지 않다면 다른 방법을 찾으셔야 할 것입니다. (버텍스가 많은 지역으로 옮긴다던가...)

* 사실은 시스템에서 픽셀라이트 갯수를 제한합니다만, 어쩐 일인지 (버그인지) 제한을 시켜도 초과로 사용하면 사용되는게 발견되었습니다.

 

2. 터레인의 텍스쳐는 4장까지

몇몇 맵의 경우에는 풍부한 지형 텍스쳐의 효과를 내기 위해서 8장의 텍스쳐를 터레인에 사용하는 경우가 있습니다.
그런데 이렇게 사용하게 되면, 가뜩이나 무거운 터레인이 통채로 2Pass 가 되면서 지형의 드로우콜이 *2 가 되게 됩니다.
또한 2막의 지형들은 좁은 지형에 밀도를 높이고 멋지게 보이게 하기 위해 지형의 높이를 강조한 맵이 많습니다.
덕분에 맵이 작으면서도 밀도가 높은 이미지를 만들 수 있게 되었습니다.
그렇지만 오히려 이것 덕분에 터레인이 많이 보이게 되어 원래 심하게 무거웠던 터레인 부하가 늘어나면서 (제가 카메라 제한을 한 것도 이 이유 때문...) 거기에 다시 8장의 텍스쳐가 터레인을 차지하면서 두 배로 무거워지게 되었습니다.

때문에 터레인이 많이 보이게 되는 맵에서는 터레인 텍스쳐를 4장을 초과하여 사용하게 되면 갑자기 무거워지게 됩니다.
이 부분을 4장으로 수정해 주시면 갑자기 드로우콜이 급격히 줄어드는 것을 보실 수 있으십니다.
드로우콜이 여유가 있다면야 물론 쓰셔도 됩니다만... 두 번째로 무거운게 이거입니다.  무겁다면 줄여주세요.

 

3. 파티클을 적당히 사용

파티클은 일단 두 가지 부하를 유발합니다. 파티클 업데이트와 알파 블렌딩 .
그렇지만 콜수는 그렇게 많이 차지하지 않고, 블렌딩도 사실 숫자로 보면 얼마 나오지 않습니다.
단 파티클의 사이즈는 조심해야 합니다. 화면 가득한 파티클은 엄청난 알파 블렌딩 부하를 유발하여 게임이 느려지는데 주 요인이 됩니다.

이런 경우에 실제로 돌려보면 콜수나 기타 증후가 나타나지 않으면서도 프레임이 급격히 떨어지는 현상이 일어납니다. (아마 유니티 버그가 아닐까) 특히 저사양에서는 무시무시하게 프레임을 저하시킵니다.

그러므로 파티클은 쓰는 원칙이 필요합니다.

 - 가급적 화면을 덜 가릴 수 있도록 개수와 크기를 조절합니다. 크기와 개수가 중요합니다.
물론 그래픽 카드가 좋다면 잘 처리합니다. 하지만 중급에서는 적어도 화면을 가득 가리는 파티클은 자제하는 것이 좋습니다. 프레임 드랍의 요인이 됩니다.

 - 최저사양에서는 파티클이 '아예 안보이게' 라는 느낌으로 만드는게 좋습니다. 쓰게되면 꼭 필요한, 즉 '있기는 해야 하는 , 없으면 말이 안되는 곳' 에다가만 최소한으로 사용하고, 장식적으로 사용되는것은 LOD 기능으로 빼주세요.

- 화면 전체에 영향을 끼치는 환경 장식용 파티클은 되도록이면 '상' 이상 옵션에서만 사용할 수 있게 처리합니다.
많은 유저들이 '최상' 을 쓰니까요. 하지만 테스트 기준은 '중' 이라는걸 잊지 마세요. '중' 에서 이렇게 다 켜 놓으면 '최상' 에서는 뭘 보여줄래용?

 

scene 에서 overdraw 항목을 켜면 볼 수 있습니다.

 

4. 메쉬 바인딩은 적당히

메쉬 바인딩은 같은 메쉬들끼리 배치(batch) 로 묶어서 드로우 콜수를 줄이는 매우 좋은 기능입니다.
이걸 잘 쓰면 콜수가 줄어드는 장점이 있습니다만, 단점으로는 메모리 점유가 늘어납니다.
그래서 한 번에 보이는 그룹들끼리 배치를 시켜주면 좋습니다만, 맵 전체에 이리저리요리조리 멀리멀리 퍼져 있는 녀석들을 전부 바인딩 시키면 오히려 메모리에 안좋은 영향을 끼칩니다.

그러므로 한 번에 보이는 만큼만 배치 시키는게 적합한 방법이라고 할 수 있습니다.
대부분 잘 되어 있지만, 살짝 아쉬운 맵도 있습니다. 좀 더 잘하면 결과가 좀 더 좋겠죠.
상대적으로 적은 부분이긴 합니다만, 이 부분도 개선하면 효과가 더 좋습니다.  

 

 

 

 

5. 오브젝트 Hide (LOD) 기능을 적극적으로 사용

2막은 장식으로 사용된 요소가 꽤 많습니다. 위에 설명한 부하 유발 요소 말고도, 최저사양으로 게임하는 사람들을 위해서 오브젝트 중 게임에 직접적으로 필요 없는 장식 요소들은 LOD 옵션을 정해서 최저 옵션에서는 아예 나오지 않도록 조절해 주는게 좋습니다. 최저로도 게임하고 있는 유저들이 많다는걸 잊지 마세요.

 

이어서 각 맵별 코맨트가 2부로 이어집니다.

 

반응형

댓글