逗游網(wǎng):值得大家信賴的游戲下載站!
發(fā)布時間:2014-12-09 10:18 來源:互聯(lián)網(wǎng) 作者:aronchack 編輯:小貓
第三章 第1節(jié)-減少跳出(1)
收起前言:
什么是CTD?
CTD,就是Crush To Desktop 的簡稱,也就是在游戲的運行過程中,由于各種不同的原因,游戲進程被掛起或強制中止,而導致退出游戲。
造成CTD的主要原因有哪些?
1. 游戲本身系統(tǒng)機制問題(或者說游戲本身的設計缺陷。說起這個,猴紙一會再吐槽)。
2. Mod的問題。如數(shù)量太多,腳本過多,內(nèi)容相互沖突等。
3. 機子性能瓶頸,裝mod卻不切實際,如顯存與高清。
4. 存檔問題。
5. 其它的未知原因。
在正式講這個問題之前,我要先聲明一點:
CTD是無法完全解決的,這個在四代就已經(jīng)被證明過。
無數(shù)大神,高手經(jīng)過多少努力,也無法完全根除這個頑癥。
而在五代,猴紙通過查閱官網(wǎng)、S網(wǎng),CK等技術(shù)文章,加上自己的試驗和分析,認為五代在游戲本身的系統(tǒng)機制上,并沒有很大的創(chuàng)新和進步。并且由于現(xiàn)階段操作系統(tǒng)正處于32位和64位混雜的現(xiàn)實情況下,以B社歷來那坑爹的內(nèi)存機制管理模式,這個問題有可能被進一步放大!
造成這個原因的禍首,正是上古系列的最大優(yōu)點,開放性!
既然無法根除,那我們就想點辦法,減少其發(fā)生的機率。下面入正題。
第三章 第1節(jié) 優(yōu)化游戲,減少跳出。
一、對游戲運行環(huán)境進行優(yōu)化:
這里我給大家解釋一個誤區(qū):所謂的4G補丁!
這里也是B社坑爹的一個原因。
他的內(nèi)存管理機制相當?shù)牟缓?非常容易溢出。
我用內(nèi)存監(jiān)視器hookWriteMemory和MemView等專業(yè)開發(fā)工具對上古五進行了長達一周的數(shù)據(jù)采樣,基本上開著這兩貨玩游戲,其內(nèi)存釋放我都不想吐槽了,尼瑪坑爹的是在一個Stack里我發(fā)現(xiàn)了三種不同的數(shù)據(jù)類型,8位FLOAT,8位INT,16位的FLOAT!(當然,這可能是MOD造成的)。
不過現(xiàn)在十號補丁打上后,從監(jiān)測數(shù)據(jù)來看,比七號時好很多了,內(nèi)存的釋放及時多了。
另外為了證明我的想法,我采取了很多辦法,無論我采取什么辦法,游戲的內(nèi)存使用值永遠達不到4G,這還包括了當前的顯存使用值!
有幾個很典型的例子,他們使用了包括官方4G補丁在內(nèi)的所有4G補丁,卻并沒有起到作用,這是為什么?
答案很簡單:上古五是32位軟件。(不必和我爭,如果它是64位軟件,你們的32位XP和WIN7根本就運行不了!B社出作品,必然要考慮到兼容性,這點上官方一查就知道!)
我這么一說,很多人會恍然大悟,由其是有計算機相關知識的。
舉個例子:我有時玩下設計,機子上裝了兩個軟件,一個是32位的CS3,一個是64位的MAX,很明顯對比就是,我用CS3同時打開N多圖片,到一定內(nèi)存占用值時必死無疑!另一個MAX,最高開到6G都行!
這是由軟件的尋址大小決定的,天生的,沒法改!
不明白的請?zhí)D(zhuǎn)到這里看:點擊進入
不過這個人說的是理論值,在現(xiàn)實值中,一個32位的應用程序,能使用最大的內(nèi)存大小為3.25G-3.75G之間,這還要算上游戲占用的顯存值,部分顯存也是要計入尋址編碼的。
所以說,再大的內(nèi)存,你也只能用這么多。
并且通常在WINDOWS的默認設置中,32位的應用程序,所能調(diào)用內(nèi)存的值默認是2048(包括在64位系統(tǒng)中運行32位程序也是如此!),現(xiàn)在,我們就來解開這條限制!
但是我建議WIN7 64,32位系統(tǒng),同時內(nèi)存在4G以上的同學,做下面這一步:
1. 以管理員身份運行CMD(在開始菜單輸入CMD,然后在CMD圖標上點右鍵,先管理員運行。)
2. 在CMD中輸入以下命令:
bcdedit(空格)/set(空格)IncreaseUserVa(空格)3072回車
重啟計算機
【它的作用是將單進程內(nèi)存上限可強制修改為3GB】
(適用于3.25G以上內(nèi)存)
想要恢復則輸入bcdedit(空格)/deletevalue(空格)IncreaseUserVa回車
重啟計算機【恢復默認】
注意三點:
一是值只能是2048和3072(為什么不能更高你去問微軟,微軟官方網(wǎng)站有這條命令的說明!)
二是剛好4G內(nèi)存的同學注意了,在玩游戲時,不要使用太占內(nèi)存的軟件,要知道,操作系統(tǒng)也是要占一定內(nèi)存的。
三是別回來問我,為什么游戲才使用2G多一點的內(nèi)存?用不到3G?我再說一遍,當前已經(jīng)使用的顯存中,有一小部分顯存也要計入尋址空間!
微軟官方網(wǎng)站相關說明:點擊進入
此方法對32、64位WIN7,4GB內(nèi)存以上配置有效,我自己用的就是!用hookWriteMemor監(jiān)測過,確實能使用多點內(nèi)存,減少因為內(nèi)存釋放不及時造成的CTD。
(另外32位系統(tǒng)的同學要注意了,見過不少同學4G以上內(nèi)存裝個32位系統(tǒng)的。見到這些同學我都不好怎么說,加上顯卡的顯存,你的操作系統(tǒng)只能識別到3.75G左右。即使用了網(wǎng)上的各種方法,例如PAE尋址-這個需要主板硬件支持!所能起的作用也有限。還是那句話,32位系統(tǒng)天生殘疾,沒轍!那么這些同學在用完這個命令后就要注意了,WIN7最少要占800M內(nèi)存左右,XP是400M左右,在玩游戲時盡量把別的東西都關了吧!64位系統(tǒng)的話,使用這條命令可能會使你在運行一些64位的程序時也會受到限制,不過沒有關系,到時用恢復命令就好了。而且64位軟件現(xiàn)在相對較少。)
這是在系統(tǒng)層面改變進程,不修改游戲任何配置,無毒副作用。
另外,還可以采用的方法有:清理磁盤碎片,把游戲裝到SSD上,這兩招對使用了超高清的高清包的同學有明顯好處,減少磁盤讀取時間。
補充說明一點,別把WIN7的虛擬內(nèi)存關掉,哪怕你的內(nèi)存再大都好。
我的是8G,我哥們的16G,我們兩個都沒關,原因是有些應用程序必須要使用到虛擬內(nèi)存,例如PS等軟件。
擔心老頭五這玩意也有這么個設定,畢竟新游戲用D9核心,B社什么坑爹的事做不出來,反正我沒關過。
有關過又很穩(wěn)定的朋友記得回來告訴猴子一聲。
二、對游戲本身進行優(yōu)化:
1. 對ini文件中的游戲參數(shù)進行優(yōu)化:
游戲一共有9個和游戲有關的ini文件。
CK官網(wǎng)鏈接,有興趣的請?zhí)D(zhuǎn):點擊進入
(其實是10個官網(wǎng)上也算少了一個,在游戲的Skyrim目錄下還有一個叫Skyrim的文件夾,那還有一個Skyrim.ini,這貨有什么作用我一直搞不懂,希望知道的告訴我!)
我們只根據(jù)官網(wǎng)的說明討論以下兩個ini文件,他們會被游戲使用(Used by the game):
在我的文檔My GamesSkyrim目錄下面有兩個:
Skyrim.ini和SkyrimPrefs.ini
這兩個ini的文件其實起的效果差不多,根據(jù)CK官網(wǎng)的介紹,以SkyrimPrefs.ini的設置為優(yōu)先, SkyrimPrefs.ini里的設置會覆蓋Skyrim.ini的相同參數(shù)的設置。
關于ini的手工設置教學請參考這兩篇大作,寫得很好:
《上古卷軸5:天際》優(yōu)化設置 SkyrimPrefs.ini 詳細解析:點擊進入
感謝紅燒茄子兄的努力與試驗
淺見:雖然是來自輻射三的INI設置,但是只要上古五的INI文件有的參數(shù),所起的作用是一樣的,大家可以參考,對比一下,明白每個參數(shù)的作用。再次感謝茄子兄的努力,我也是拜讀了他的大作不下十次。
Skyrim.ini優(yōu)化 12.18大更新:點擊進入
感謝CMD本人兄的努力與試驗
對于緩沖的見解很獨到。
[原創(chuàng)] 優(yōu)化的真正核心—上古卷軸5:天際SkyrimPrefs.ini設置解析:點擊進入
感謝超頻愛好者版主的努力。
對于ini參數(shù)在游戲中畫面的影響有很獨到的見解。
猴子為什么在這方面不提出自己的見解,是因為以上幾位基本上把ini對游戲的影響說到位了,猴子在這方面并不比他們強,甚至不如人家。
猴子是實在人,這是教學貼,需要的是嚴謹,就不提出一些子虛烏有見解來嘩眾取寵了。請諒解。請移步拜讀幾位的大作!
大家在看完上面的大作后,對ini設置有一定了解后,想動手設置的話,我給大家推薦一個工具,方便大家設置:
天際INI詳細配置工具(Skyrim INI Tweaker):點擊進入
xiaoma3000版主的漢化
對于實在是不想自己動手的同學,請下載這個軟件:
【ARROW&KNEE MOD TEAM?】『上古卷軸5優(yōu)化工具』增加流暢減少頓卡跳出,更新v1.1修復BUG!支持原版、DLC!:點擊進入
BoneAsh的力作,懶人專用,一鍵搞掂。使用方法我在一樓說了,請自行查閱!
2. 優(yōu)化ini中的Papyrus腳本設置(很重要,這方面很多人在認識上有誤區(qū)!)
其實這也是在ini中設置,為什么猴紙要單獨分開來講?
這是因為有關這項設置,有很多人被誤導了。
包括N網(wǎng)的一些設置,N網(wǎng)也是個魚龍混雜的地方,有高手,也有2B,外國的月亮并不比國內(nèi)的圓!
這里都要求在我的文檔My gamesSkyrimSkyrimSkyrim.ini,找到[Papyrus]組,在其下添加命令行:
iMinMemoryPageSize=100000
iMaxMemoryPageSize=5000000
iMaxAllocatedMemoryBytes=1800000000
為什么猴子如此斷定這些設置并不一定有效,反而有可能會起到反效果呢?
首先,我們來說說Papyrus的運行機制:
A. 先給同學們科普一下編程知識:
機器語言:我們平時玩的游戲也好,用的軟件也好,在電腦的眼里,就是一個個0和1的數(shù)字。如0111(4位)、11001101(8位),這些二進制代碼才是電腦可以執(zhí)行的命令,我們稱之為機器語言。
匯編語言:比機器語言高級的是匯編語言,基本上所有程序開發(fā),在編譯時,都要將我們寫好的程序先編譯成匯編語言。
高級語言:簡單的說這是為了方便程序員開發(fā)的一種平臺,使我們不用10101001這樣來擼代碼,也不用使用冗長的匯編語言來開發(fā)。
一般的程序開發(fā),在開發(fā)結(jié)束后,會最終編譯成電腦可直接運行機器碼。
B.我們來了解一下上古的腳本運行機制有何不同?
而上古的腳本函數(shù)則不然,就算我們這些Modder在開發(fā)完畢后,使用CK進行編譯后得到的可執(zhí)行腳本PEX文件,仍然不能直接被電腦所識別和運行,他們?nèi)匀灰谟螒騼?nèi)核中進行最終編譯!
上圖:
從上圖可以看出,CK只是對源碼文件進行了最初的編譯,這種編譯,僅僅是為了讓游戲能識別,這種代碼,是不能被計算機直接運行的。
所以,在最終被游戲調(diào)用時,游戲內(nèi)核還要對腳本PEX文件進行最后編譯,以轉(zhuǎn)換為可執(zhí)行代碼。我將其稱之為二次編譯(2nd Debug):
而我在這里要說的,就是對ini里的參數(shù)進行優(yōu)化,影響我們可以干預的那兩步。提高系統(tǒng)性能。