본문 바로가기
GAMES/게임 주저리

DirectX 래퍼로 고전 게임에 희망을!

by NSM53 PROJECT 2022. 11. 11.

 

혹시 GOG판 디아블로가 미묘하게 화질이 개선되었다고 느낀 적이 있으신가요? 그렇다면 그 생각이 맞습니다. DirectX 래퍼(Wrapper)로 원본 해상도를 업스케일링했거든요.

 

윈도우 9x 시절의 게임은 일반적으로 DirectX 1~7이 사용되었고 주로 DirectDraw를 통해 2D를 처리했는데 이게 DirectX 8.0으로 올라가면서 Direct3D와 통합이 됩니다. 그러다 보니 호환성에 문제가 생겨서 게임 실행이 제대로 안 되는 거죠. 레거시 지원을 위해 라이브러리가 남아 있긴 했는데 윈도우 버전이 올라가면서 그나마도 지원이 끊기고 DirectX 버전 또한 계속 올라가면서 호환 레이어가 있어도 점점 더 먹통이 되는 현재의 상황에 이르게 되자 호환성 해결을 위해 래퍼가 등장하게 된 겁니다. 현재 사용되는 DLL을 감싸서(wrap) 대체한다라는 의미로 래퍼라는 표현을 사용하는가 봅니다.

 

래퍼의 등장 역사는 생각보다 오래되었습니다. 부두 글라이드 래퍼로 시작했지만 ddraw.dll 호환용으로 어째 더 많이 쓰이는 것 같은 dgVoodoo가 유명하죠. 외에도 DXGL이나 궤가 조금 다르지만 DxWnd 등이 있습니다. 다만 dgVoodoo는 (요즘엔 바뀐 것 같지만) 예전엔 설치 시 시스템을 건드렸던 적이 있어서 전 별로 선호하지 않습니다. DXGL은 깔끔하긴 한데 딱히 장점이 없으며 DxWnd는 호환성이 탁월하고 여러 해상도의 창모드 구동이 가능한 장점이 있지만 꽤 무겁죠.

 

그래서 제가 주로 사용하는 ddraw 래퍼를 몇 가지 소개해드립니다.

 

▲ 예압~

 


 

■ GOG 래퍼

 

GOG에서 만든 래퍼로 별도 배포하는 것은 아니고 GOG에서 판매하는 고전 게임 중 일부에 적용되어 있습니다. ddraw.dll, dxcfg.exe, dxcfg.ini 이렇게 세 파일만 추출해서 필요한 다른 게임 폴더에 넣어주면 잘 작동합니다. 

 

 

포럼에선 GOG가 왜 이걸 대외적으로 널리 알리지 않는지 모르겠다는 소리가 나올 정도로 기본 성능이 제법 준수합니다. 사실 DirectX 래퍼 이름 달고 나오는 것들의 호환성 성능은 대부분 비슷비슷해서 GOG라고 유독 특출나거나 하진 않지만, 설정이 매우 간편하고 Display mode를 기본 설정인 Same as desktop으로 두면 640x480 해상도가 대부분인 저해상도의 고전 게임들이 바탕화면 해상도로 업스케일링되어서 구동됩니다. 손쉬운 창모드 구동도 물론이고요.

 

Magpie와 업스케일링 품질의 차이가 어떤지 정확히 비교해 볼 필요가 있지만, 일단 Magpie는 꽤 고사양을 필요로 하고 별도로 구동해야 하는 터라 DirectX 1~7을 사용하는 게임 한정으론 래퍼쪽이 가볍고 편의성이 좋습니다.

 

어쨌든 업스케일링되어 출력되는 덕분에 Aspect Ratio(화면비)가 원래의 비율인 4:3을 유지하는 장점도 있습니다. 뭐, 취향에 따라선 레터박스를 싫어하는 분도 있겠지만 궁극적으론 원본의 형태를 재현하는 게 주된 목적이니까요.

 

▲ 일반적인 실행 화면

 

▲ 래퍼로 업스케일링한 화면

 

다만 GOG 래퍼의 아쉬운 점은 북미 게임은 상당수 무리없이 구동되는 것에 반해, 일본 게임에서는 잘 적용되지 않는 경우가 제법 많습니다. 이 점은 대부분의 다른 래퍼들 역시 그렇습니다. 그간 GOG의 호환성 작업을 생각해보면 순수한 자체 개발이라기보단 기존 공개된 소스를 활용한 작업물이기 때문에 성능 역시 그 범주 안에 있지 않나 싶은 뇌피셜 생각이 듭니다.

 

※ 주의 : ddraw.dll의 버전에 따라 호환성이 조금씩 다릅니다.

 


 

■ DDrawCompat

 

GitHub - narzoul/DDrawCompat: DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11

 

GitHub - narzoul/DDrawCompat: DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista,

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 - GitHub - narzoul/DDrawCompat: DirectDraw and Direct3D 1-7 compatibility, performa...

github.com

 

DDrawCompat의 최고 장점은 바로 막강한 호환성입니다. 이건 뭐 거의 고전게임 만병통치약 수준입니다. 팔콤의 윈도우 초기 패키지 게임들은 최신 윈도우에서 호환성 문제로 DxWnd 외에는 구동이 잘 안 되는 편인데 DDrawCompat에선 전부 이상없이 구동됩니다. 그리고 그 어떠한 래퍼로도 정상 구동이 안 되던 위저드리 뉴 에이지 오브 릴가민이 제대로 실행됩니다. 개인적으로 가장 추천하는 래퍼입니다.

 

▲ 암말 말고 DDrawCompat 함 잡숴봐!

 

DirectX 7.0 이하의 해상도 제한(2048x2048) 해제도 적용되어 있기 때문에 Legacy D3D Resolution Hack이 없어도 4K 해상도를 설정할 수도 있습니다. 이는 요즘 나오는 대부분의 래퍼에 공통적으로 적용된 사항이기도 합니다.

 

▲ 4K 해상도도 함 잡숴봐!
▲ 다만 4K에선 글씨가 너무 작아집니다

 

그런데 바이리니어(bilinear) 필터링 처리가 조금 다른 건지, 아니면 업스케일링 알고리즘 차이에서 발생하는 건지 래퍼를 사용하지 않은 원래의 출력과는 미묘한 화질 차이가 있습니다. 제작자 설명으론 API 변환 없이 네이티브 라이브러리로 랜더링한다는데 어디서 기인해 이런 차이가 발생하는지는 전문가가 아니라서 정확히 모르겠습니다.

 

▲ 원본 출력을 확대

 

▲ GOG 래퍼

 

▲ DDrawCompat 바이리니어 0

 

▲ DDrawCompat 바이리니어 50

 

▲ DDrawCompat 바이리니어 100

 

이건 실제 화면을 보면 바로 느낄 수 있는데 스크린샷으로는 정확하게 표현이 안 되네요. 스샷에선 화면 좌우측 글자를 비교해 보면 차이가 좀 느껴지실 겁니다.

 

 

게임 실행 중 시프트 + F11을 누르면 설정 화면이 나옵니다. 다른 래퍼에 비해 설정이 조금 복잡한 편이죠. 해당 깃헙의 위키에 상세하게 기술되어 있으니 잘 읽어보고 설정하면 됩니다.

 


 

■ cnc ddraw

 

GitHub - FunkyFr3sh/cnc-ddraw: GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic games for better compatibility with Windows 2000, XP, Vista, 7, 8, 10, 11, Wine (Linux/macOS) and Virtual Machines

 

GitHub - FunkyFr3sh/cnc-ddraw: GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic games for better c

GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic games for better compatibility with Windows 2000, XP, Vista, 7, 8, 10, 11, Wine (Linux/macOS) and Virtual Machines - G...

github.com

 

이름에서 예상되듯 커멘드 앤 컨커의 호환성 해결을 위해 시작된 래퍼인데 외연을 확장한 물건입니다. 성능 자체는 GOG 래퍼와 비등비등합니다. DDrawCompat처럼 막강한 호환성을 보여주진 못하죠.

 

그러나 셰이더를 이용한 다양한 화면 필터링을 적용할 수 있기 때문에 입맛에 맛는 화면을 골라서 사용할 수 있습니다. Magpie와 달리 셰이더 필터링을 적용해도 속도 저하가 체감되지 않는다는 게 큰 장점입니다. 

 

화면 필터링을 선호하지 않는 분들에겐 다른 매퍼에 비해 매리트가 그렇게 크지 않다는 점이 단점이겠네요.

 

아쉽게도 필터링된 화면이 캡처되지 않아서 이 정도로 소개하고 넘어갑니다. 지속적으로 개발 중이라 향후가 더욱 기대되는 래퍼입니다.

 

▲ cnc ddraw 넘어가요 이힛~

 


 

상기의 것들 외에도  '네가 뭘 좋아하는지 몰라서 DirecX 7~9 호환 관련된 건 전부 모아 봤어' 같은 dxwrapper도 있습니다.

기존 래퍼는 물론이고 자체적으로 추가한 여러 래퍼들이 종합선물세트처럼 포함되어 있습니다.

 

Releases · elishacloud/dxwrapper (github.com)

 

GitHub - elishacloud/dxwrapper: Fixes compatibility issues with older games running on Windows 10 by wrapping DirectX dlls. Als

Fixes compatibility issues with older games running on Windows 10 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes. - GitHub - elisha...

github.com

 

 

 

DirectDraw 관련된 래퍼는 대충 이렇습니다. 몇 개 더 있긴 한데 아직까진 크게 의미를 두지 않아도 될 것 같네요. 호환 관련해선 ddraw 래퍼 말고도 DirectX 8, 9와 관련한 것들 또한 많이 개발되어 있으니 다음 번에는 이러한 것들을 찾아보도록 하겠습니다. 그럼.

 

댓글