옛날에 엄청 좋아했던 편의점?! 이라는 경영게임입니다.

 

보시다시피 가운데 그래픽이 돌아가있습니다.

원인은 솔직히 모르겠습니다...

 

우분투에서 Wine으로 돌리는 것이 문제인건지 아니면 그냥 최신 그래픽칩셋에서 문제가 일어난건지... DirectX 6으로 돌아가서 문제가 더 있는 것일지도 모르겠습니다. 일단은 가상머신에 Win98을 올린 다음 확인해볼 생각입니다.

 

그런데 진짜 왜 이러는지 모릅니다...

 

=================2022.05.17=================

 

해결했습니다

아주 간단한 문제인데 DirectDraw가 문제를 일으킨것이므로 이를 Direct3D11로 래핑(?)하고 이를 Wine의 Vulkan으로 추가 컨버팅하면 되는 것 이었습니다.

 

이방법은 dgvoodoo2 라는 프로그램으로 문제를 해결 할 수 있습니다.

고전게임 돌리는데 거의 필수적으로 사용됩니다만 아는 사람이 많지 않더군요. 본래는 고전게임중 Voodoo Glide 게임을 돌리기 위해서 시작되었던 것이 이젠 고전게임 필수 호환성 레이어가 되었습니다.

 

http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/

 

Downloads - Dege's stuffs

Downloads You need the 3Dfx splash dlls for Glide if you want 3Dfx splash screen or watermark (shameless plug) through dgVoodoo. 3DfxSplashDlls.zip  You may also need D3DRM.dll (Direct3D Retained mode) for some games and demos. It's not part of the OS sin

dege.freeweb.hu

위의 홈페이지에서 다운로드가 가능하며 

dgVoodoo2_78_2.zip
4.99MB

여기서도 다운로드가 가능합니다. 가능한 공식홈페이지에서 받는 것이 버전이 높아서 좋겠지요.

 

해당 파일의 압축을 풀면

이렇게 되어있는데 여기서 MS가 중요합니다. MS의 고전 파일 호환이라는 의미로 DirectX 구버전API용이란 의미입니다.

이 안에는 x86이라고 되어 있는 폴더가 있고 이 안에 DLL 4개가 핵심입니다.

특히 DDRAW.dll파일이 중요합니다.

어찌 되었건 해당 파일 4개를 설치된 고전게임의 exe가 있는 곳에 풉니다.

exe파일과 DDRAW.dll파일이 함께 있는 것이 확인되면 wineconfig을 실행합니다.

PlayonLinux나 Bottles를 쓴다면 해당 Prefix의 config을 실행합니다.

여기서 ddraw를 추가하여 네이티브로 설정합니다. 경고메시지가 뜨는데 무시합시다.

 

그리고 실행하면...!!! 

Wine Debugger창에서 신기한 내용이 뜹니다.

 

바로 d3d11을 사용하기 시작합니다. 물론 정확히는 d3d11을 다시 OpenGL로 한번더 컨버팅해서 렌더링하는 것인데 이걸로 그래픽깨짐을 회피 할 수 있습니다.

 

어찌되었건 간만에 이 오래된 고전게임을 할 수 있게되었네요.

 

-----------------그런데 생각해보면 미친짓이긴 하네요.

DirectDraw - D3D11 - OpenGL 두번거치면서 렌더링을 하다보니 쓸데없이 CPU가 묵직합니다. 이게 이럴정도는 아닌데...

 

---------------위에 미친짓이라고 쓰긴했는데...

생각보다 이런 방식으로 고전게임을 돌리는 경우가 많다고 합니다.

DirectDraw(DirectX7이하) - dgvoodoo(DirectX11)-DXVK(Vulkan)

이렇게 두번 거쳐서 현대적인 API인 Vulkan으로 최종 출력하는게 상당히 사례가 많다고 하네요.

저도 Wine의 OpenGL대신 DXVK를 써서 Vulkan으로 출력하니 묵직함이 사라졌습니다. 

 

만약 DirectX8이상이라면 그냥 DXVK를 적용해서 바로 Vulkan으로 출력하면 어지간해선 해결된다고 합니다.

,