}

공지사항

공지사항 [공지]
D3D 옵션 지원 삭제 관련 안내
2018.09.12 14:16 조회 : 6678

안녕하세요. 카운터-스트라이크 온라인 개발팀입니다.

개발팀이 D3D를 제거하려는 이유에 대해서 안내드립니다.

우리가 흔히 카스온라인의 엔진이라고 불리는 GoldSrc 엔진은 여러 가지 방식으로 렌더링이 가능하도록 구현되어 있습니다. OpenGL API, Direct3D(이하 D3D), 그리고 소프트웨어 렌더러 이렇게 세 가지가 가능하도록 구현되어 있는데, 카스온라인은 이들 중 OpenGL D3D로 플레이가 가능하도록 서비스를 하고 있었습니다. 이들이 어떻게 동작하는지 조금 더 자세히 설명하자면, GoldSrc 엔진은 기본적으로 OpenGL API를 직접 호출하는 형태로 구현되어 있고, D3D의 경우, OpenGL을 재구현한 형태로 구현되어 있어, 최종적으로 GoldSrc => OpenGL API => D3D 로 호출됩니다. , 카서님들이 D3D 옵션을 선택한 경우에도 D3D 명령들은 OpenGL 레이어를 통해서 호출됩니다.

따라서, D3D를 호출하는 경우가 OpenGL API를 직접 호출하는 것보다 일반적으로 오버헤드(추가적인 컴퓨팅 비용)가 더 크고, 더 느립니다. 게다가 D3D의 버전은 DirectX 6.0 이어서 너무 오래된 API로 기능의 개선이 매우 어렵고, 현대 그래픽스 API가 해줄 수 있는 기초적인 기능(안개, 멀티텍스쳐 등)도 충분히 구현되어 있지 않아서 그래픽을 개선하는데도 항상 한계에 부딪히게 됩니다. 실제로 D3D에서 좀비모드를 플레이하는 경우, 안개를 표현할 수 없어서 화면을 일부러 어둡게하는 억지스러운 페널티를 제공했고, 멀티텍스쳐에 의한 라이트맵도 종종 깨지는 현상이 발생합니다. 또한 GoldSrc D3D는 모든 그래픽 리소스를 시스템 메모리(RAM)에 올리고 있어서, 개인이 GPU 메모리를 아무리 늘려도 성능의 향상을 누릴 수 없습니다. 무엇보다도, 시스템 메모리 부족으로 잦은 크래시를 유발하는 원인을 제공하고, 실제로도 메모리 부족 크래시의 경우, D3D로 플레이한 경우가 월등히 많이 보고되고 있습니다. 이런 이유 때문에, 개발 당시 렌더링 부분을 정말 많이 수정해야 하는 스튜디오 모드의 경우도 D3D 지원을 포기하고, 오직 OpenGL 로만 플레이가 가능하도록 결정되었습니다.

그런데, 왜 많은 카서님들은 D3D OpenGL 보다 더 낫다고 생각하는 건지 개발팀도 고민이 많았습니다. 명확하게 알 수는 없지만, 몇 가지 합당한 추측은 할 수 있는데, 과거에 D3D는 기본적으로 수직동기화가 꺼져있고, OpenGL은 수직동기화가 기본적으로 켜져 있어서 D3D 100 프레임까지 플레이가 가능했지만, OpenGL의 경우는 최대화면 해상도인 60 혹은 75 프레임 정도까지만 플레이가 가능했었습니다. 이 때문에 많은 카서님들이 OpenGL이 기본적으로 프레임이 낮다고 생각할 테고 실제로 이 상태로 플레이를 한다면 D3D 보다 명백한 성능 저하를 느끼게 됩니다. 물론, 기존에도 일부 카서님들은 그래픽스 제어판에서 수직동기화를 직접 Off 시켜서 100 프레임의 OpenGL 모드로 플레이를 하곤했고, 현재는 콘솔명령어 "fps_max 100; gl_vsync 0" 로도 100 프레임 플레이가 가능하긴 합니다. 또 다른 이유를 생각해본다면, 내장 그래픽카드나 전환가능(switchable) 그래픽카드를 가지고 있는 카서님들의 경우, OpenGL이 정상적으로 초기화되지 않는 문제가 종종 리포트되었는데, 이 때문에 자연스럽게 D3D로 넘어가지 않았나 추측합니다. 이 경우에는 재현의 어려움으로 원인을 정확히 파악하지는 못했지만, 드라이버를 정상적으로 업데이트하면 많은 경우 해결될 것으로 판단됩니다.

결론적으로 카스온라인이 지속적으로 렌더링을 개선하고 발전시키기 위해서는 너무 오래된 버전의 D3D를 제거하고, OpenGL 기능을 강화하는 노력이 반드시 필요했습니다. 대표적인 과거의 노력 중에 하나가 하드웨어 가속이었는데 이는 OpenGL에서만 가능했고, r_hwaccel이라는 명령어로 실험적으로 지원했습니다. 물론 실험적인 코드여서, 여러 PC에서 안전성 문제를 리포트하는 경우가 많아서 현재는 제거되었습니다. 충분히 만족스러우시지는 않으시겠지만, 이러한 일련의 결정들은 가장 효과적인 결과를 얻기 위한 선택으로 여러분들의 넓은 아량으로 이해해 주시면 정말 감사하겠습니다. D3D 제거로 인해서 불편을 겪으시거나 게임플레이에 지장이 있는 분들은 운영팀에 계속 리포트 부탁드립니다.

감사합니다
.