#gdc The Witcher 3: Optimizing Content Pipelines for Open-World Games 리뷰

less than 1 minute read

에셋 속성(property)을 조회할 수 있는 프로그램이다. 해상도가 2048 이상인 텍스쳐, 2000 폴리곤 이상을 쓰지만 LOD가 없는 에셋 등을 조회할 수 있다.

nil

갑자기 좀 느려진 것 같다. 어디 근처만 가면 느려지네. 최근에 수정한 클라이언트 코드 때문인가? 한참 디버깅한 다음 알게 된다. 어라? 여기 폴리곤 개수가 왜 이래. 지금 150만 폴리곤을 사용하는 씬을 보고 있다.

지나치게 무거운 에셋이면 발견되고 고쳐진다. 프레임 드롭이 심해서 문제가 있다는 걸 바로 알게 된다. 하지만 약간의 프레임 드롭만 있다면 그냥 넘어가기 십상이다. 최적화되지 않은 에셋은 그렇게 성능을 좀먹는다.

문제가 있는 에셋이 뭔지 몰라서 못 고치는 거지 고치는 게 어려워서 못 고치는 게 아니다. 문제가 있는 에셋을 조회할 수 있는 툴이 있다면 많은 도움을 받을 수 있다.

nil

world -> layers -> entities -> components로 모든 에셋을 순회하면서 속성을 저장하는 SQL 문을 만든다. SQL 문으로 에셋 데이터베이스를 만든다.

nil

데이터베이스가 있으니 쿼리만 하면 된다.

nil

엔티티는 50만 개이고 데이터베이스를 구축하는 SQL 문을 담은 텍스트 파일 크기가 2GB 정도 된다고 한다.

nil

간단한 방법으로 에셋 데이터베이스를 구축할 수 있는 게 가장 큰 장점이다. 만든 후 문제가 있는 에셋을 찾아서 효과가 있다는 걸 증명한 뒤 차근차근 부족한 기능을 추가하면 된다.