본문 바로가기

Skyrim

스카이림 메모리 패치에 관해..

최근 스카이림을 다시 접하게 되었는데 스카이림하면 역시 모드를 또 빼놓을 수 없다.


이것저것 다하니까 esp는 이미 300개가 넘어가고 (이젠 개수를 모르겠다) 그러다보니 잘 팅긴다 ...헐?!



위의 사진은 스카이림 퍼포먼스 모니터로 파악한 컴퓨터 자원 사용 내역.


  텍스처도 오죽 많으니 불러들이는데 약 32~34초 가량 걸린다.


  먼저 사양에 대해 얘기하자면 사진에 적혀있는바와 i7 2600 하이퍼스레드 On, SSD bx100그래픽카드는 레퍼 R9 280x이다.




  JK, Dawn 혼합에 ETAC, SFO등의 유명모드는 다 쓰고 있으며 전부 2K리텍에 패럴렉스?(Parallax), SMiM등 다쓰고 있다.

(아쉽게도 유니크의 Mindflux Grass는 못쓰겠다. // 쓸 수는 있는데 전투상황이 있을 때면 ..)


  마을에서 인구수로 인해 (이 또한 Populated 시리즈와 Etac, Dawn, Real Trader등등 마을 인원에 포함되는) 최하 10프레임을 유지하며 게임을 진행한다.


  이러한 상황에서 스카이림의 한계(3GB 이상 못쓰는)로 인해 필히 메모리패치, 그리고 enbhost는 필수이다.



  위의 사진을 보면 메모리가 5기가를 사용(오로지 스카이림에만)하는데 스카이림에 할당된 3GB를 포함하면 8GB를 사용한다고 볼 수 있다.

14GB인 상황에 윈도우7에서 약 3GB를 뺏어먹으니 게임 도중에 메모리가 없다고 스카이림을 끄라는 메모창이 뜨더라 ..


enbhost를 안쓰는 순간 무조건 팅김,

메모리 패치(skse or ssme)를 안쓰면 역시 무조건 팅김.




  먼저 가볍게 enbhost에 대해 보자면 스카이림의 자원이 32비트, 3GB 까지만 사용 가능하도록 되어 있으며 이상으로 치솟을 시 무조건 팅긴다. 즉, 이를 방지하기 위해 스카이림에 할당되어있는 자원을 enbhost에서 가져가주는 것.

여기서 ReduceSystemMemoryUsage 는 필수이다.

고사양(2K 이상) 리텍스쳐를 쓰는 사람들에게는 enb는 안쓰더라도 enbhost는 써라.



  메모리 패치는 두 가지 방법으로 나뉘어진다.

바로 SKSE와 SSME인데 두 가지 방식이 내가 알기로는 같은걸로 아는데 뭔가 다른 부분이 있는 듯 사람들 마다 적용후기가 조금씩 틀린 내용이 보인다.


  필자는 SKSE를 쓴다.

개인적으로 봤을 때 SKSE를 쓰든 SSME를 쓰든 별 차이는 없다.


  SKSE 메모리패치의 할당량이 최대 "default heap = 1280MB scrap heap = 512MB" 까지 제공,

  SSME 메모리패치의 할당량이 최대 default heap = 1024MB scrap heap = 512MB" 까지 제공된다.


  얼핏 보기에 SKSE가 최대 1280까지 지원하여 더 좋아보이지만

"default heap = 1280MB (effective 1024MB if not preloading animations)" -> 1280MB로 되어 있으나 애니메이션을 미리로딩하지 못했을 경우 1GB로 설정 됨" 이라고 즉, -256mb를 해버린다.


  이게 무슨 뜻인지 이해가 안되... 미리로딩을 어떻게하는거지?

결론은 둘 다 같다;;




  참고사항 1.

메모리 패치를 할 때 enblocal 설정에서 알아 둘게 있는게 'DefaultHeapInitialAllocMB' 가 768mb 값 초과로 설정할 시 'ExpandSystemMemoryX64' 항목은 false 시켜줘라.

그 이상의 값의 경우 어떻게 이뤄지는지는 모르겠지만 충돌이 일어나서 메모리패치가 적용이 안된다. (본인의 경우 예외없이 메인화면도 못띄운채 팅김)

└ ExpandSystemMemoryX64를 사용할 시 ReduceSystemMemoryUsage=true, EnableUnsafeMemoryHacks=false 로 되어있어야 한다.

└ ExpandSystemMemoryX64 : 메모리가 단편화 되는 것을 이동시켜서 보다 잘활용할 수 있게 해준다.


ps1. 64비트(최소 6GB 이상? // 윈도우 메모리가 1GB 잡아먹고 스카이림 3GB 잡아먹으면768mb까지 쓰는경우는 ExpandSystemMemoryX64를 써주자. (즉, 'DefaultHeapInitialAllocMB'가 SKSE의 경우 1024MB // SSME의 경우 768MB - scrap heap는 512MB해도 상관이 없다.)


  참고 사항 2.

그래픽 카드가 뒤떨어질 경우 높게 설정 했을 때 팅기는 사람들이 있는 것 같다.




  마지막으로 본인의 경우는

DefaultHeapInitialAllocMB=1280 -> SKSE 이므로 당연히 실제 값은 1024MB

ScrapHeapSizeMB=512


를 사용한다.

당연히 enblocal의 'ExpandSystemMemoryX64' 항목은 쓸 수 없다.

순간로드 메모리가 감당을 못해서 1GB 미만은 팅겨버리기에.. (당연히 Haven bag 같은 모드나 지역에서 저장안함.)



어찌어찌 불러오려다 팅겨버리는.. 그래프 화면.

(설정은 skse 1024mb = ssme 768mb에 scrap heap는 512MB, ExpandSystemMemoryX64는 true로 하든 false로 하든 무의미하지만 true.)





DefaultHeapInitialAllocMB : skse 1280mb = ssme 1024mb

ScrapHeapSizeMB : 512

ExpandSystemMemoryX64=false


or


DefaultHeapInitialAllocMB : skse 1024mb = ssme 768mb

ScrapHeapSizeMB : 512

ExpandSystemMemoryX64=true


  결론으로 깔끔하게? 말하자면 사용방법은 두 가지로 나뉜다.

개인적으로 ssme의 DefaultHeapInitialAllocMB=840mb, x64=false 보단 차라리 DefaultHeapInitialAllocMB=768mb, x64=true가 더 활용성이 좋아보인다.
물론 1024를 사용하지 못하고 필자와 같이 메모리가 감당하지 못할 경우엔 어쩔 수 없이 840이겠지만.



Crash Fixes에 관한 간단한 테스트 내용 : http://daysari.tistory.com/454