電腦玩遊戲畫面卡頓不流暢是什麼原因(筆記本玩遊戲卡頓怎麼回事)

對於廣大玩家們而言,影響遊戲體驗的一大元凶,就當屬卡頓和畫面撕裂了,特別是在玩動作遊戲時,卡頓影響發揮的情況讓人想要砸鍵盤。

我依稀記得,曾經玩《阿卡姆之城》最高難度因為機能不行掀桌子砸鍵盤的黑歷史,那種按下按鍵過了將近一秒才能得到迴應的體驗讓人無比的光火。

但最後還是硬著頭皮打穿了,二十多幀的遊戲體驗,為什麼要跟鍵盤過不去呢,不如去換電腦...

其實,造成這一切的,不單單只是硬體水平的問題,比如說,同樣的硬體,驅動版本有問題的話,也會影響效能的發揮。

而卡頓的表現也不只有幀率低的情況,高幀率卡頓的情況也會影響遊戲的表現,辨別卡頓的方法,除了看幀率外,還可以通過幀時間鑑別。

幀率是口鍋,什麼都能裝

“哎呀,又掉幀了”,一般遇到遊戲卡頓大家都會這麼說,但對另一些同學來說,幀率卻仍然是一個非常陌生的名詞——遊戲卡頓,和掉幀有什麼關係呢?

事實上,幀率指的是平均一秒內,遊戲更新顯示了多少張“畫面”——同動畫和電影一樣,遊戲呈現給玩家的方式,也是通過快速的畫面更迭來實現動態的畫面的。

這是利用了視覺暫留現象實現的,由於人類眼睛的生理結構,如果每秒能更新超過16張連續的畫面的話,就會給人一種“畫面連貫”的錯覺。

但不同的是,3D圖形渲染的機制,就決定了動畫和電影中一些能夠造成“動態視覺”的設計方法難以同樣地應用。

因而在3D遊戲當中,就需要更高地幀率來實現動態的畫面,這也是為什麼人們常說需要至少30幀的原因(當然,30幀只是最低要求,如果有足夠重新整理率的顯示器,能夠以更高的幀率來執行遊戲,自然是更好的)。

一般來說,幀率已經足以反映遊戲體驗是否流暢了,不過,它其實是不能詳實可信地反映遊戲執行過程中實際情況的——如前面所說,動畫和遊戲實際上是通過視覺暫留現象來實現動態畫面的。

而具體到遊戲而言,則需要至少每秒30張畫面(也就是30fps)才能保證人眼不會明顯地感受到卡頓,但幀率作為計算方式計算的實際上是每秒的平均幀率,它並不能準確地反映這一秒內硬體渲染畫面的真實情況。

你需要幀時間來救場

這個時候,就可以求助於幀時間來更為詳細地分析卡頓的情況了——幀時間指的是硬體渲染每幀畫面的時間(也可以說是每一幀畫面的繪製時間),它的計量單位是毫秒(ms)。

理想情況下,當我們遊玩某一遊戲獲得每秒60幀的幀率時,它每幀畫面在1秒鐘(1000毫秒)內停留的時間應當精確於16.7毫秒。

但實際上,遊戲在實時運算時,隨著畫面的變化,顯示卡、CPU、記憶體等硬體由於需要互相協調運作,因而每幀生成的時間間隔,並不一定穩定地在一個理想的數值。

比如說,極端情況下,一秒鐘內,如果前500毫秒渲染了60幀,在後500毫秒沒有渲染任何幀,這樣雖然幀率測量結果將仍將顯示為平均60fps,但在那沒有渲染的500毫秒內,人眼是會感受到影象資訊沒有變化的,這樣的體驗基本就可以稱之為卡頓了。

當然,這只是個極端的例子,但在實際情況中,30fps的理想幀時間是33.3ms,如果高於這個數字,人眼就有可能感受到卡頓。

簡單來說,較高幀數下出現的卡頓問題正是幀生成時間不穩定導致的,當硬體無法及時處理遊戲資料的實時運算時,就會出現一些生成時間驚人的幀,這時即使硬體已經處理好這一幀後面的數十個幀了。

因此,為了獲得流暢的遊戲體驗,高幀率和穩定的低水平幀時間就缺一不可了。

你們猜,下面這種情況,你們覺得實際遊戲體驗有沒有出現卡頓呢?

真相只有一個!卡頓卻不是

硬體是造成卡頓和掉幀的第一元凶?硬體當然是出現卡頓時人們通常能想到的原因——執行遊戲後臺進行的計算工作的,是處理器,將資料傳輸給處理器的,則是記憶體。

面對日益複雜精美的圖形畫面,顯示卡多年來一直都在風中搖擺,價位的差異,基本上就是計算機硬體水平的劃分,五千的遊戲本,自然和一萬的遊戲本能完成的工作是有著天壤之別的(桌上型電腦同理)。

更好的計算機硬體,能同時處理更多的資料,應對更為複雜的工作,支援更新的影象技術——從DX8到DX12,這幾年遊戲畫面的進步也是有目共睹的——需要佔用至少3.5GB視訊記憶體的遊戲用4GB視訊記憶體的顯示卡執行,出現卡頓也是正常的了。

因而,人們面對卡頓第一時間懷疑是自己硬體的鍋,也是很正常的,畢竟——沒那能力硬攬瓷器活是會翻車的。

驅動也來湊熱鬧!

另外,驅動程式也在很大程度上影響著硬體的效能發揮,我就曾經遇到過某一版本的驅動導致遊戲幀數下降了一大半不到二十幀的情況。

嚇得我趕緊回滾至前一個版本了(其實一開始玩新遊還以為是硬體不行,後來發現玩之前的遊戲也這樣...)。

但這又是因為什麼呢?我們先來了解一下驅動是什麼——裝置驅動程式(英語:device driver),簡稱驅動程式(driver)。

是一個允許高階(High level)計算機軟體(computer software)與硬體(hardware)互動的程式,這種程式建立了一個硬體與硬體,或硬體與軟體溝通的介面,經由主機板上的匯流排(bus)或其它溝通子系統(subsystem)與硬體形成連線的機制,以使得硬體裝置(device)上的資料交換成為可能。

由於驅動程式需要對硬體功能進行低階訪問才能執行,因此驅動程式通常也是在高特權的環境中執行的,如果出現問題,幾乎可以肯定會導致系統的執行出現問題。

這也是為什麼編寫驅動程式的任務通常軟體工程師或計算機工程師來完成的,這是因為他們比大多數人有更好的資訊來設計他們的硬體。

因此,驅動程式的表現直接決定了硬體的實際效能輸出,如果某個版本的驅動更新出現了問題,就會遇到我之前遇到的效能問題。

好在,一流的軟體工程師和計算機工程師也不是吃素的,因而,一般在後續的版本更新裡也會修復這些問題。

落井下石的遊戲負優化

那我大幾萬買的筆記本/桌上型電腦為什麼有時候玩一款遊戲也會卡頓呢?這就不得不說到遊戲公司有時候令人驚訝的“負優化”的。

事實上,除了負責硬體資料輸出效率的驅動,在製作遊戲時,遊戲中要出現多少素材,怎樣優化硬體資料傳輸的效率,也都會影響到最終的遊戲體驗(比如寒霜朋克玩到後期就會出現這個問題)。

比如說,2007年的二戰即時戰略遊戲《英雄連》,如果正常遊玩的話,用現在的遊戲本來執行就能保持到一個很高的幀率水平。

但是在開啟了修改器取消人口上限後,幾百個小分隊擠在螢幕中央的畫面的確看起來雖然十分的壯觀,但同時也會因為佔用過多的系統資源而不可避免地發生卡頓的情況。

事實上,許多遊戲在設計時就是通過減少場景內不必要的素材來提高遊戲的效能表現的,而一些取巧的設計思路也能產生不錯的效果。

著名的射擊遊戲《使命召喚》系列,就是以區域內素材的使用見長的。

它將遊戲使用的素材集中於設計好的“必經道路”上,不僅避免了浪費機能的情況,還給玩家們帶來了一流的電影化體驗(事實上,有一段時間裡,一些玩家是把COD當互動電影來對待的)。

而另一種常見的解決方案,大概就屬遊戲設計當中的紙片山紙片人了——這種設計大大減少了硬體的資料處理量,還在一定程度上保證了視覺效果的體驗。

而硬體應用效率的問題,則分別和遊戲所使用的引擎和開發人員的技術功底有關。

前者主要是引擎本身採用的演算法可能導致的效能問題,而後者則在於對遊戲執行過程中對硬體使用的優化——如何更加高效地運用記憶體、視訊記憶體還有處理器,是開發人員在技術層面一直試圖不斷突破的一種能力。

而負優化的情況,基本上就是反面教材了。

總之

總而言之,面對遊戲畫面卡頓的情況,硬體和軟體都有可能是造成這一切的元凶,升級硬體,降低畫面設定誠然是一種不錯的選擇。

不過識別卡頓的真正原因,對對症下藥,更新驅動或是放棄一款遊戲,也是遊玩過程中需要注意的,用幀時間來分析遊戲執行狀況,就能更為清晰地瞭解實情,是升級硬體,還是更換驅動,怎樣選擇也就一目瞭然了。

在追求極致遊戲體驗的道路上,怎樣能少花錢多辦事,玩得舒心,還是一門值得研究的學問呢!