INI 設置(Papyrus)
什麼是 Papyrus?Papyrus 是天際遊戲製作時使用的指令碼語言。它可以接收遊戲內的時間,並能發送控制資訊到遊戲。它把任務整理到一起,然後根據玩家的行為變化引起了遊戲內特定事件的 發生,作出不同類型的回饋。它同時也能控制大量的玩家,NPC和物品的動畫效果,以及製造多數複雜的諸如魔法引發的效果。有經驗的使用者可以利用它製作對 應的腳本從而完成優秀的MOD。
Papyrus 有許多可以控制的元素。這些設置都在Skyrim.ini檔的[Papyrus]區域,通過對這些設置的微調或許能幫助你提升遊戲運行表現。
來自CreationKit的維琪頁面 http://www.creationkit.com
如果你使用SKSE,那麼以下內容涉及到的設置請打開你的Skyrim.ini,在[Papyrus]區域可以找到。
具體是改這格檔案 Skyrim.ini 設定那些 請自行添加就可以用了 添加在最下面
目錄 [hide]
默認
以下是默認設置。如果你把設置弄亂了你隨時可以將以下內容複製回去來恢復預設設置(或者徹底刪除以下欄位):
[Papyrus]
fUpdateBudgetMS=1.2
fExtraTaskletBudgetMS=1.2
fPostLoadUpdateTimeMS=500.0;XBOX和PS3的是 2000.0
iMinMemoryPageSize=128
iMaxMemoryPageSize=512
iMaxAllocatedMemoryBytes=76800
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
bEnableProfiling=0
單項設置
fUpdateBudgetMS=1.2
fExtraTaskletBudgetMS=1.2
fPostLoadUpdateTimeMS=500.0;XBOX和PS3的是 2000.0
iMinMemoryPageSize=128
iMaxMemoryPageSize=512
iMaxAllocatedMemoryBytes=76800
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
bEnableProfiling=0
單項設置
大部分設置都不需要改動。唯一可能需要設置的是bEnableLogging, bEnableTrace, bLoadDebugInformation, bEnableProfiling. 但所有內容都完整列在下面以備查閱。
fUpdateBudgetMS
This settingcontrols how much time the main Papyrus update loop gets. This loop mainlycontrols function dispatch. If a lot of function calls are being made and a lotof scripts are running, increasing this value may improve script performance atthe cost of reduced game framerate. However most of the time the VM won't takethis entire time slice and increasing the value will have no effect.
意思是Papyrus多久更新一次迴圈。如果你要調用很多函數或腳本的話,調高該數值可能有助於提升幀數表現。
默認: 1.2
fExtraTaskletBudgetMS
This settingcontrols how much time taken out of another game thread is taken up by runningscript tasklets (the code that runs the raw script byte code). This time is ontop of the time that the tasklets normally get in their own thread, but becausethat thread is shared they may end up being starved if other systems are highlystressed. If the game is not stressed, this time will not be used. Increasingthis value may improve script performance in high-stress situations at theexpense of framerate.
是指一個執行緒多久會重新為運行中的腳本做一次定位。注意這個設置,因為如果你讓一個執行緒搶劫另一個執行緒的話也可能遇到問題。
默認: 1.2
fPostLoadUpdateTimeMS
This settingcontrols how much time is added onto the load screen to do additional scriptprocessing in case the cell being loaded into needs to set itself up. Adjustingthe time will adjust your visible load screen time. Adjust this setting if acell with very complicated scripting is not getting quite set up in time by thetime the player loads. This also may depend on the story manager since questsmay not start until the load screen finishes if they are started up rightbefore the player hits a load door. If the quest initial stage has a lot ofscripting then it may need the extra time to run before the load screen ispulled down.
是指你希望對額外的預腳本處理分配多少附加的載入畫面時間。就是說如果你有很多需要運行的腳本增加會增加載入時間,但在載入前會有更多的腳本可以被處理好。
預設值: 500.0 (PC), 2000.0 (XBOX和PS3)
iMinMemoryPageSize
This is thesmallest amount of memory the VM will allocate for a single stack page, inbytes. Smaller values will waste less memory on small stacks, but larger valueswill reduce the number of allocations for stacks with many small frames (whichimproves performance).
VM能為記憶體堆疊調用的最小的位元組數。 數值越小的分配浪費的記憶體越少。 數值越大會減少調用的數量,但會分配成很多個小的幀(能提升運行效果)。
最大值: 2147483647
預設值: 128
iMaxMemoryPageSize
This is the largestamount of memory the VM will allocate for a single stack page, in bytes.Smaller values may force the VM to allocate more pages for large stack frames.Larger values may cause the memory allocator to allocate differently,decreasing performance for large stack frames.
由VM為單一堆疊頁調用的最大的使用量。 小的數值會強制VM為大的幀數調動更多的頁面,越大的數值可能會改變記憶體調用器的調用,(由於頁面大小增加,可分配的單位變少了而)降低大場面時的運行表現。
最大值: 2147483647
預設值: 512
iMaxAllocatedMemoryBytes
This is the maximumamount of memory the VM will allocate in total for stack frames. If anallocation would push memory usage over this limit, the VM will instead waitfor more memory to be freed. Increasing this value may improve performance inhigh-stress situations with lots of scripts running, but will use more memory.Note that it is possible to exceed this value temporarily while loading a savegame due to slightly different allocation ordering.
這個設置決定VM可以調用的記憶體上限是多少,如果記憶體存儲達到了最大值,那麼遊戲會等待記憶體被釋放掉。如果你有很多很多的腳本,提升這個數值會對你有幫助但會使用更多的記憶體。
Max: 2147483647 (2GB)
預設值: 76800 (75kB)
WARNING: increasingiMaxAllocatedMemoryBytes to values much larger than default can cause stack thrashing (stack buffer overflows), intermittent game stuttering, erratic game behaviorand CTDs. Stack thrashing will produce stack dumps in the Papyrus log, similarto the example below. The dumps can be very large if many scripts are running,producing a very large log file.
警告:任何將此數值調得過大於預設數值都會可能引起緩衝區溢位,間歇性遊戲卡頓或CTD。同時會把大量的堆疊產生的資訊記錄到Papyrus的日誌內,會導致日誌的內容非常大。(以下是警告資訊示例,VM被凍結住)
[03/30/2013- 12:21:08PM] Suspended stack count is over our warning threshold, dumpingstacks:[03/30/2013 - 12:21:08PM] VM is freezing...
[03/30/2013- 12:21:08PM] VM is frozen
[03/30/2013- 12:21:08PM] Dumping stack 137790:
[03/30/2013- 12:21:08PM] Frame count: 0 (Page count:0)
[03/30/2013- 12:21:08PM] State: Running (Freezestate: Freezing)
[03/30/2013- 12:21:08PM] Type: Normal
[03/30/2013- 12:21:08PM] Return register: None
[03/30/2013- 12:21:08PM] Has stack callback: No
[03/30/2013- 12:21:08PM] Stack trace:
[03/30/2013- 12:21:08PM] [ (0010DCE8)].mineorefurniturescript.OnLoad() - (requestedcall)
bEnableLogging
[03/30/2013- 12:21:08PM] VM is frozen
[03/30/2013- 12:21:08PM] Dumping stack 137790:
[03/30/2013- 12:21:08PM] Frame count: 0 (Page count:0)
[03/30/2013- 12:21:08PM] State: Running (Freezestate: Freezing)
[03/30/2013- 12:21:08PM] Type: Normal
[03/30/2013- 12:21:08PM] Return register: None
[03/30/2013- 12:21:08PM] Has stack callback: No
[03/30/2013- 12:21:08PM] Stack trace:
[03/30/2013- 12:21:08PM] [ (0010DCE8)].mineorefurniturescript.OnLoad() - (requestedcall)
bEnableLogging
This setting turnslogging on and off. If off, no logging will occur, even traces, and so it willoverride the bEnableTrace value. The in-game log display will still work, butnothing will be written to disk. Turning this off may improve performance dueto less disk activity.
此設置是下面所有設置的總開關,此設置可以打開和關閉日誌記錄。如果關閉就完全沒有日誌記錄,包括腳本追蹤痕跡,所以,它將覆蓋bEnableTrace的值。遊戲內置的日誌顯示仍然可以工作,但什麼都不會寫人磁片。關閉這個選項會提高性能,因為磁片活動更少。
預設值: 0
bEnableTrace
This setting turnson and off the script trace commands. System error and warning messages willstill be logged to disk. If bEnableLogging is false, this setting is ignored asnothing will be written to disk anyway. Trace commands will NOT be visible inthe in-game log display if this setting is off. Turning this off may improveperformance due to less disk activity.
此設置開啟和關閉腳本跟蹤命令。系統錯誤和警告資訊仍然會被記錄到磁片上。如果bEnableLogging關閉那麼這個設置就將被忽略,因為上面的總開關禁止寫入日誌。如果這個設置是關閉的,跟蹤命令不會在遊戲日誌顯示。關閉這個選項會提高性能,因為磁片活動更少。
預設值: 0
bLoadDebugInformation
This settingenables or disables the loading of additional debug information - essentiallyline number information. If this setting is off, error messages cannot generateline number data. Turning this on will allow line numbers to be available inerror traces at the cost of increased memory usage.
此設置啟用或禁用載入額外的調試資訊 - 基本上是行號資訊。如果這個設置是關閉的,錯誤消息無法生成行號數據。啟用此選項將允許行號提供錯誤的痕跡,但代價是增加記憶體使用。
預設值: 0
bEnableProfiling
This settingenables or disables the script profiler. If off, none of the script profilingcommands will be available. Turn this setting on to allow profiling informationto be collected and logged. If on, script performance will degrade slightly.
此設置啟用或禁用腳本分析器。如果關閉則無法使用腳本分析命令。開啟此設置可以允許分析資訊便於收集和記錄。如果打開會略微降低腳本的運行效率。
預設值: 0
uTraceStatusOfQuest
This setting sets aquest to track for script changes by form ID (converted to decimal). The questthat this setting specifies will spit out a Papyrus stack trace to the logevery time a Papyrus script tries to change something with it like starting,stopping, setting a stage, or showing an objective.
此設置會跟蹤基於FormID的腳本更改的任務(轉換成十進位)。每當一個Papyrus腳本的任務試圖改變一些遊戲內的東西,比如開始,結束,設置一個場景,或者是顯示一個物品時,這個設置都會在日誌上記錄一條Papyrus跟蹤記錄
預設值: 0
任何的設置工具都是一把雙刃劍。在對你有所幫助的同時,它們都將增加硬碟運算量,而載入的那些調試資訊(比如日誌)也會增加運行時的記憶體使用量。這些內容都是從CK的頁面摘錄的。我希望更多的人讀一讀,因為這些“微調”會對遊戲有一定的幫助。如果不理解以上內容就亂改的話後果自負
以下是我在使用的設置,你可以試試(如果因此出現卡頓會異常CTD請直接刪除):
[Papyrus]
fUpdateBudgetMS=1.6
fExtraTaskletBudgetMS=1.6
fPostLoadUpdateTimeMS=1000.0
iMaxMemoryPageSize=8192
iMinMemoryPageSize=256
iMaxAllocatedMemoryBytes=8388608
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
fUpdateBudgetMS=1.6
fExtraTaskletBudgetMS=1.6
fPostLoadUpdateTimeMS=1000.0
iMaxMemoryPageSize=8192
iMinMemoryPageSize=256
iMaxAllocatedMemoryBytes=8388608
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
這邊是範例 避免有些人看不懂如何添加
這是一開始打開Skyrim.ini會看到畫面 就算有所不同也沒差
[Display]
sD3DDevice="XXXX顯卡"
[Grass]
b30GrassVS=0
[Water]
bReflectLODObjects=0
bReflectLODLand=0
bReflectSky=0
bReflectLODTrees=0
[General]
sLanguage=ENGLISH
之後 在下面添加
這是一開始打開Skyrim.ini會看到畫面 就算有所不同也沒差
[Display]
sD3DDevice="XXXX顯卡"
[Grass]
b30GrassVS=0
[Water]
bReflectLODObjects=0
bReflectLODLand=0
bReflectSky=0
bReflectLODTrees=0
[General]
sLanguage=ENGLISH
之後 在下面添加
例如這樣:
[Papyrus]
fUpdateBudgetMS=1.6
fExtraTaskletBudgetMS=1.6
fPostLoadUpdateTimeMS=1000.0
iMaxMemoryPageSize=8192
iMinMemoryPageSize=256
iMaxAllocatedMemoryBytes=8388608
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
fUpdateBudgetMS=1.6
fExtraTaskletBudgetMS=1.6
fPostLoadUpdateTimeMS=1000.0
iMaxMemoryPageSize=8192
iMinMemoryPageSize=256
iMaxAllocatedMemoryBytes=8388608
bEnableLogging=0
bEnableTrace=0
bLoadDebugInformation=0
這樣就可以了