배틀그라운드- 콘솔 개발 일지 #3
https://www.pubg.com/ko/2019/01/16/%ec%bd%98%ec%86%94-%ea%b0%9c%eb%b0%9c-%ec%9d%bc%ec%a7%80-3/
콘솔 개발 일지가 3화로 돌아왔습니다! 이번 주는 AnimNode LOD에 대해 다뤄보겠습니다.
LOD(Level of Detail)은 저번화에 다룬 주제로, 간단히 요약하자면 렌더링 등의 세부 정밀도를 뜻합니다. 낙하산에서 낙하할 때의 예를 들자면, 멀리서 바라봤을 땐 LOD가 낮게 (찰흙처럼) 표현되지만 시간이 지나면서 LOD가 높아지게 됩니다. LOD는 0, 1, 2 총 세 개의 레벨이 있으며 LOD 0일 때가 디테일이 가장 높습니다.
캐릭터를 구성하는 LOD에는 Mesh LOD, Bone LOD, AnimNode LOD가 있습니다. 우선은 Mesh LOD와 Bone LOD에 대해 간략히 설명드리겠습니다.
Mesh LOD와 Bone LOD
Mesh LOD에 의해 캐릭터 렌더링의 디테일 정도가 표현됩니다. 캐릭터가 아주 가까이 있으면 LOD 0으로 렌더링되며, 거리가 멀어질수록 디테일이 낮아집니다. 마찬가지로 Bone도 LOD에 따라 거리가 멀어질수록 영향받는(애니메이션시 움직이게 되는) Bone의 개수도 적어지게 됩니다. 즉, LOD가 낮을수록 처리할 Vertex 및 Bone 데이터가 적어지므로 가능한 빠르게 높은 LOD 데이터로 전환이 Performance(성능)에 유리하게 됩니다. 다만, CPU 성능 확보를 생각하면 LOD 3, 4, .. 등의 데이터가 도움되지만, 이를 위한 메모리 사용, IO 사용 등의 추가적인 비용이 높습니다. (특히 콘솔에서는요)
AnimNode LOD
애니메이션에도 LOD가 존재하는데, 앞에서 말한 대로 성능을 위하여 가까운 거리에서 낮은 LOD로 전환하고 애니메이션은 대부분 눈에 띄는 동작들이 많다 보니 애니메이션의 LOD는 적용 범위가 넓지 못합니다.
PUBG 게임의 특성상 대부분의 캐릭터들이 안보이는 곳에 숨어 있거나 매우 먼 거리에서 작게 보이는 경우이기 때문에 화면에 표현되는 비율에 의하여 추가적인 LOD를 생각하였고, AnimNode LOD 최적화를 진행하였습니다.
AnimNode LOD는 캐릭터의 골격 움직임의 정밀도를 뜻합니다. 달리기, 오른쪽으로 보기, 정조준하기 등의 모든 애니메이션이 포함되죠. 다리, 팔, 목 등 신체 부분 부분의 움직임이 각기 따로 계산됩니다. AnimNode LOD가 낮다면 캐릭터 애니메이션의 품질이 낮아지며, LOD가 꺼지게 되면 캐릭터 애니메이션이 표현되지 않습니다.
그렇다면 스코프를 당겼을 땐 어떻게 될까요?
스코프를 통해 캐릭터의 화면비율이 커지게 되기 때문에 AnimNode LOD가 다시 켜져서 정상적으로 캐릭터 애니메이션이 보여지게 됩니다.
이해를 돕기 위해 10% 비율로 적용된 AnimNode LOD의 스코핑 영상입니다.
실제 게임에서는 시각적 차이를 느끼지 못할 크기로 적용될 예정입니다.
성능
아래의 그래프는 10마리 봇이 있을 때, AnimNode LOD가 켜져있을 때(파란색)와 꺼져있을 때(빨간색)의 리소스 사용량을 비교하였습니다. AnimNode LOD에 의해 약 10%의 성능 개선이 이루어진 것을 확인할 수 있으며, 캐릭터가 많으면 많을수록 더 큰 성능 향상이 있습니다.
*그래프는 Xbox One S 환경에서 측정됨.
결론적으로, 특정 거리에 도달했을 때 캐릭터의 애니메이션 효과가 일부 비활성화됩니다. 비활성화된 애니메이션 효과는 멀리에서 볼 수 없을 정도이며 그에 따라 계산되는 리소스가 낮아지고 성능 개선이 있었습니다.
펍지 니들은 배틀로얄 키워드에 줄만 잘 섰을 뿐이지 18년도에 내놓은 겜이 07년 그래픽인데 콘솔에서 고정 30이 말이 되냐고...ㅋㅋ
펍지 니들은 배틀로얄 키워드에 줄만 잘 섰을 뿐이지 18년도에 내놓은 겜이 07년 그래픽인데 콘솔에서 고정 30이 말이 되냐고...ㅋㅋ
ㅋㅋㅋㅋ 정답 ~
일반게이머한테 이런 테크 강의는 필요없으니 그냥 최적화 잘하고 옵션 타협해서 60이나 맞춰줘..