인터페이스(UI)
인터페이스는 화면에 표시되는 각종 버튼과 창들, 마우스 아이콘등을 의미합니다.
기존의 인터페이스 출력 방식으로는, 인벤토리를 열 때 멈칫 한 다던가,
UI가 전체적으로 게임을 느리게 하는 문제가 있었습니다.
- 후반 그리기 작업 (End 3D Process)

전체 부하 중 34% 를 차지하는 부분입니다

그리고 그 중에서도 65%를 차지하는 부분으로,
전체적으로는 UI 드로잉이 22.1% 의 부하를 차지하는 것으로 연구되었습니다.
분석된 주던 이유는, UI 그릴때 너무나도 그릴 것이 많았다는 것입니다. 즉 하단부의 캐릭터 상태바를 그릴 때도, 1번용병의 초상 바탕을 그리고, 초상을 그리고, 게이지바 바탕을 그리고, 체력 게이지바를 그리고, 다시 바탕을 그리고, 마력 게이지바를 그리고, 레벨 표시하고 … 등등 모든 자질구레한 - UI는 특히 자질구레한 그래픽 요소들이 많습니다- 것들을 그려야 한다는 것이었습니다. 즉 폴리곤을 그리기 위해서는 Renderstate 라고 하는 ‘출력 준비 단계’ 를 거쳐서 출력해야 하는데, 매우 세밀한 것을 그리기 위해 매번 Renderstate 를 돌아야 하는 비효율적인 구조였던 것입니다.
그리고 이 부분에 대해 완벽한 해결은 아닐지라도, 단지 ‘출력’ 에 대해서만 16년동안 인도 수학을 공부해 오신 카레 김광명 선생이 이 부분을 수정하게 됩니다.
그것은 즉, 간단하게도 ‘같은 물건은 한 번에 몰아서 찍자’ 라는 방식으로, 각종 UI 에서 따로따로 찍던 부분을 ‘몰아서’ 찍도록 만든 것입니다. 물론 이미 캐릭터등에는 많이 쓰이는 배치 렌더링 같은 방식으로, 에너지바는 에너지들바끼리 붙여서 찍고, 숫자는 숫자들끼리 붙여서 한 번에 찍어버려서 전체적인 렌더스테이트를 줄이자는 방식입니다. 이 방식은 꽤 성공적이었고, 몇몇 시스템에서는 상당한 부하감소를 이루게 됩니다.
(만약 주인공이 9명 풀 버전으로 용병을 가지고 있는 상태라면, 현재 기존의 UI 보다 Renderstate 호출횟수가 40% 정도 줄어들게 됩니다.9명을 각각 호출하던 것을 한 번에 호출하도록 되었기 때문이지요.)
이 기능을 보다 완벽하게 만들기 위해서는 UI 텍스쳐들까지도 한 번에 부를 수 있게 하는 것입니다.
즉 하나의 다이얼로그 창에 쓰이는 그림들은 모두 한 장의 텍스쳐에 넣는다면, UI출력은 더욱 더 빨라지게 됩니다.
그렇지만 그 기능을 진행시키기 위해서 단순히 다이얼로그별 텍스쳐를 제작할 수 만은 없는 것이, 각 다이얼로그별 공유되는
그림 등도 있기 때문에 오히려 그렇게 텍스쳐를 공유하는 것이 더 효율적일 수도 있기 때문입니다.
그래서 김광명 선생은 이것을 개선하기 위한 ‘능동적 텍스쳐 합산 기능’ 을 궁극의 목표로 생각하고 있으십니다. (아직 연구되고 있진 않습니다)
현재 UI 는 틈틈히 더 최적화 시킬 곳이 있는지 찾아보고 있습니다. 아직 문제되고 있는 곳은 몬스터 정보 부분같은 곳인데, 여기는 3D 오브젝트가 함께 출력되기 때문에 전체 다이얼로그에 배치를 걸지 못 하고 있습니다.
현재 적용 내역:
외부 테섭에서는 현재 적용되어 있는 상태입니다. 본섭에는 아직 적용되어 있지 않습니다.이 기능으로 개선될 수 있는 사항:
이 기능을 적용하면 개선될 수 있는 사항은, 전체적인 Renderstate가 감소했으므로 직접적인 프레임 증가가 일어나게 될 것을 예상할 수 있습니다. 하지만 일부 시스템에서는 큰 개선이 일어나지 않는 경우도 드물게 발견되었지만, 대부분의 경우에서 체감할 만한 속도 향상이 이루어지고 있습니다.이 기능으로 문제될 수 있는 사항:
- UI를 찍는 순서의 조정이 있었기 때문에, 일부 오브젝트보다 UI가 늦게 찍혀서 글씨가 잘린다던가, UI가 땅에 파묻힌다던가 하는 현상이 보고되었었습니다. 또 다른 문제가 일어날지도 모르겠습니다. 여태까지의 문제는 수정된 상태입니다.
- 전체화면시 Alt+tab 으로 화면전환할 때 다시 UI를 그려주면서 충돌이 있었습니다. 수정되었습니다.
- 이 기능에 대해 체크할 사항:
기획팀 혹은 테스트 담당 분들께서는, UI가 깨지거나 순서가 뒤바뀌지 않는지, 어쨌건 UI가 새로 그려질 때 무슨 문제가 있는지 체크 부탁 드립니다. 문제발생시 카레 김광명 선생이 담당자 이십니다.