Google Adsense Side (160x600)



워3 리포지드 깐프 버그

어제 일하다가 버그를 하나 수정했는데, 특정 해상도(특히 고해상도)에서 일부 문자가 다른 것으로 치환되거나 이상하게 찍히는 것이었습니다.

보통 폰트를 3D 화면에 그릴 때는 간단하게 텍스쳐에 그린 뒤에 텍스쳐 매핑한 사각형을 그리는 식으로 많이 하죠. 텍스쳐를 글자마다 만들면 비효율적이니 좀 큰 텍스쳐(텍스쳐 아틀라스)에 쓰이는 글자들을 모아서 그린 뒤에 그걸 쓰는 것도 일반적인 방식이죠. 그런데 어제 그 버그는 글자들이 텍스쳐로 잡아놓은 공간에 다 안들어가면 발생하는 것이었습니다. 텍스쳐 개수는 원래 동적으로 늘어날 수도 있게 되어 있었는데 걍 귀찮아서 텍스쳐를 크게 해 버려서 해결(실제 문자 수가 20개도 안되는 상황임)

주석으로 99.99%는 텍스쳐 1장에 들어가니 문제 없겠지? 라 써 두었던 것은 함정...

그런데 오늘 우연히 현재 희대의 똥게임으로 욕을 먹는 '워크래프트3: 리펀디드리포지드'에도 비슷한 버그가 있다는 것을 알게 되었는데...

역시 여기서도 현재 장면에 필요한 글자들(폰트의 글리프)을 큰 텍스쳐에 모아둔 뒤 뿌리는 것으로 보이는데 그 글자들이 생각보다 많이 필요하다는 것을 감안하지 않은 듯. 깐프, 낭프 등으로 경우에 따라 랜덤하게 적용되는 것으로 봐서 동적으로 필요한 글자만 모아서 생성하는 것으로 보이는데, 영문이라면 몰라도 중국어나 한국어의 경우 그 양이 경우에 따라서 극악하게 늘어날 수 있죠. 뭐 옛날에 저해상도 시절에는 대충 문제가 없었겠지만 해상도가 올라갔음에도 텍스쳐 크기를 그대로 잡아두었거나 매우 보수적으로 책정했거나 한 것 같네요.