파피루스 트윅은 PO3 Tweak에 있던 프레임과 스크립트를 디커플링 하는 실험적 코드에 영감을 받아 만들어짐


 프레임과 스크립트 처리를 디커플링하고, 스크립트 처리를 스카이림이 메인으로 갈구는 cpu의 쓰레드로 넘겨서 가속하는 방식임


 다만 엔진 자체가 프레임과 스크립트 처리가 연결되도록 구성되어 있어서 몇가지 설정과 모드를 더해줘야 성능 하락이나 기타 문제를 최대한 줄일 수 있음



1. skyrim.ini의 [papyrus] 섹션의 iMaxAllocatedMemoryBytes값 수정하기


파피루스 트윅 NG를 설치했다면, 파피루스 섹션의 최 하단에

iMaxAllocatedMemoryBytes=500000 

위 설정값을 추가해 주는것이 좋음


스카이림의 기본값은 76800으로 바닐라에서 이 이상의 설정값은 스크립트 처리 시스템을 터트린다고 알려져 있음. 


그러나 파피루스트윅Ng가 설치된 경우 스크립트 처리 속도를 올림에 따라서 저 값을 충분히 키워주는게 오히려 스크립트 시스템을 안정화 시킴


Papyrustweak.ini에 ignoreMemoryLimit 옵션도 동일한 일을 하니까 값을 true로 하는걸로 대체할 수 있음



2. Recursion Fix 설치하기

수정 전 설명

Papyrustweak.ini에 ignoreMemoryLimit를 활성화 했다면 필수임. iMaxAllocatedMemoryBytes 값을 늘렸다면 필수까지는 아니데 강력추천임.


스크립트 처리량과 메모리에 들어있는 스크립트 량이 증가하면 자연스럽게 스크립트들이 맛이 가는 버그도 증가해서 일종의 스택오버플로를 일으킴. 


Recursion fix는 그런 오류가 난 스크립트를 파악하고 버그로 인해 성능이 저하되는 것을 멈추는 역할을 함


파피루스 트윅NG의 bSpeedUpNativeCalls 옵션을 사용한다면 Recursion Fix도 필수로 깔아야함.


 iMaxAllocatedMemoryBytes를 수정하는 방식과 ignoreMemoryLimit를 활성화 하는 방식 및 둘 다 사용하지 않는 방식까지 각각을  5일 이상 테스트해가면서 내린 결론은, 파피루스 트윅의 bSpeedUpNativeCalls를 사용할 때 스크립트의 과부하에 의한 성능저하를 막으려면 Recursion Fix가 필수라는 것임.


 파피루스는 스크립트 자신을 계속 호출하면서 스크립트를 구동하는 머신을 과부하시키고 성능을 극도로 떨어뜨리는 일종의 스택오버플로와 비슷한 현상이 있는데 Recursion Fix는 그러한 과부하상태를 감지하고 문제가되는 스크립트를 정지시키는 역할을 함. 


 파피루스 트윅의 bSpeedUpNativeCalls을 활성화 할 경우, 스크립트의 처리량이 늘어나기도 하지만 처리속도 또한 빨라져서 예기치못한 오류가 생기기도 하는데 그 때문에 스크립트의 과부하가 바닐라보다 빈번하게 일어남. 따라서 Recursion Fix를 꼭 설치해서 스크립트 과부하에 의한 성능저하를 막아줘야함.