當前位置:
首頁 > 科技 > 救救鍵盤吧!遊戲畫面卡頓原因的甩鍋大會

救救鍵盤吧!遊戲畫面卡頓原因的甩鍋大會

對於廣大玩家們而言,影響遊戲體驗的一大元兇,就當屬卡頓和畫面撕裂了,特別是在玩動作遊戲時,卡頓影響發揮的情況讓人想要砸鍵盤——我依稀記得,曾經玩《阿卡姆之城》最高難度因為機能不行掀桌子砸鍵盤的黑歷史,那種按下按鍵過了將近一秒才能得到回應的體驗讓人無比的光火(但最後還是硬著頭皮打穿了,二十多幀的遊戲體驗,為什麼要跟鍵盤過不去呢,不如去換電腦...)。

其實,造成這一切的,不單單只是硬體水平的問題,比如說,同樣的硬體,驅動版本有問題的話,也會影響性能的發揮,而卡頓的表現也不只有幀率低的情況,高幀率卡頓的情況也會影響遊戲的表現,辨別卡頓的方法,除了看幀率外,還可以通過幀時間鑒別。

幀率是口鍋,什麼都能裝

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

事實上,幀率指的是平均一秒內,遊戲更新顯示了多少張「畫面」——同動畫和電影一樣,遊戲呈現給玩家的方式,也是通過快速的畫面更迭來實現動態的畫面的——這是利用了視覺暫留現象實現的,由於人類眼睛的生理結構,如果每秒能更新超過16張連續的畫面的話,就會給人一種「畫面連貫」的錯覺。

其實這是一個16幀的動畫,但換成3D遊戲就會覺得已經卡的不行了

但不同的是,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當互動電影來對待的)。

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

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

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

總之?

總而言之,面對遊戲畫面卡頓的情況,硬體和軟體都有可能是造成這一切的元兇,升級硬體,降低畫面設置誠然是一種不錯的選擇,不過識別卡頓的真正原因,對對症下藥,更新驅動或是放棄一款遊戲,也是遊玩過程中需要注意的,用幀時間來分析遊戲運行狀況,就能更為清晰地了解實情,是升級硬體,還是更換驅動,怎樣選擇也就一目了然了。在追求極致遊戲體驗的道路上,怎樣能少花錢多辦事,玩得舒心,還是一門值得研究的學問呢!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 太平洋電腦網 的精彩文章:

FTC將於8月舉辦研討會 廣泛討論遊戲氪金開箱問題
多玩魔獸盒子多玩移動配置教程

TAG:太平洋電腦網 |