컴퓨터와 잡동사니 자료

d3d9.dll을 교체했더니 Stardew Valley라는 게임이 실행이 안된다.

K66Google 2017. 2. 2. 09:33

윈도우10 레드스톤1... 이 정도로 손이 많이 가는 운영체제일 줄은 몰랐다.


Stardew Valley라는 게임이 실행이 되지 않았다.

정확히 말해 실행파일을 클릭해도 무반응 상황이었던 것이다.

작업 관리자로 봤을때는 실행파일이 실행되자마자 꺼지고 오류 보고 프로세스가 실행되었다.


그래서 AppData\Roaming\StardewValley\ErrorLogs 에 가서 에러 로그를 보니까



Message: The screen device name must be a non-empty, non-null string.
InnerException:
Stack Trace:    위치: Microsoft.Xna.Framework.WindowsGameWindow.ScreenFromDeviceName(String screenDeviceName)
   위치: Microsoft.Xna.Framework.WindowsGameForm.ResizeWindow(String screenDeviceName, Int32 clientWidth, Int32 clientHeight, Boolean center)
   위치: Microsoft.Xna.Framework.WindowsGameForm.EndScreenDeviceChange(String screenDeviceName, Int32 clientWidth, Int32 clientHeight)
   위치: Microsoft.Xna.Framework.WindowsGameWindow.EndScreenDeviceChange(String screenDeviceName, Int32 clientWidth, Int32 clientHeight)
   위치: Microsoft.Xna.Framework.GraphicsDeviceManager.ChangeDevice(Boolean forceCreate)
   위치: Microsoft.Xna.Framework.GraphicsDeviceManager.Microsoft.Xna.Framework.IGraphicsDeviceManager.CreateDevice()
   위치: Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
   위치: StardewValley.Program.Main(String[] args)




라는 문구로 실행이 되지 않는 것이다.

넷프레임워크 4.0은 이미 깔려있고 XNA 4.0을 새로 깔아도 마찬가지였다.

sfc /scannow도 해봤고 dism /online... 이라는 명령어도 실행해보았지만 똑같았다.




d3d9 change.zip


(▲ 위 파일은 d3d9.dll의 10586버전과 14393버전의 압축파일이다.)


그래서 혹시나 해서 d3d9.dll 을 레드스톤1 버전(14393)으로 원상복구했더니...




실행이 잘 되는 것이다.


추측컨대 XNA로 만들어진 게임은 (테라리아, 스타듀밸리 등) d3d9.dll의 버전을 판단해서 현재 OS 버전과 맞지 않으면 실행이 되지 않는 것 같다.


이렇게 하면 XNA 게임도 윈10에서 실행을 할 수 있다... 단, 이러면 일부 게임에서 프레임이 하락하는 현상이 또 발생하게 되고, 그 일부 게임을 실행할때는 또 d3d9.dll을 바꿔야 원활하게 플레이 할 수 있다. 그런데 교체하면 또 XNA 기반 게임들이 실행이 안된다.


결국은 번거롭게 d3d9.dll을 교체해가면서 플레이해야 된다는 것이다.

도대체 뭔놈의 OS가 이렇게 사람을 귀찮게 한단 말인가...



그래서 그냥 프로그램을 하나 만들었다.

http://k66google.tistory.com/471 (d3d9 change)