遊戲不是幀數越高越流暢嗎?那麼為什麼遊戲還要加入限制幀數的功能呢?


現在有兩種情況:

1:平均80fps,但是波動巨大,在40-120fps之間波動

2:永遠是穩定的60fps

實際遊戲中,後一種體驗更好

限制幀率來避免硬體過熱,在遇到高負載場景時就能讓硬體有足夠的散熱空間滿血輸出,提高最低幀率。這纔是正確利用硬體boost的方法,而不是遊戲一啟動就顯卡風扇狂轉然後一會就降頻


老實說,我剛剛憑著自己的見解敲了一些字,但是我查資料的時候發現有別人說的更好的。我直接搬運了。


Reddit成員Pyronar發表了關於鎖幀這件事自己的看法。雖然Pyronar不在任何一家遊戲公司工作,但他曾參與過遊戲引擎的開發建設。

《惡靈附身》PC版提供了選項讓玩家調整幀率,官方則建議玩家以默認30FPS獲得最佳遊戲體驗。

據Pyronar介紹,遊戲引擎是整個遊戲的核心,是遊戲的心臟。他簡要地用三個步驟概括遊戲引擎是如何工作的:

第一步:獲取並處理輸入(get and process input):這些輸入包括來自於交互設備(遊戲控制器、鍵盤滑鼠等)的輸入,以及來自於網路的輸入;

第二步:系統更新(update game state):根據輸入或者自發地對各個子系統進行更新,以決定當前的遊戲狀態;

第三步:幀渲染(render frame):對整個遊戲場景進行渲染。

這是遊戲的一個主要循環,如果開發者只按照這三步編寫代碼,他們可能得到一個幀率不夠穩定的遊戲。因此開發者研究出三種方法應對這一問題。

《極品飛車18:宿敵》全程鎖幀30FPS,有玩家在遊戲中添加了一小段代碼,輕鬆將幀率提至60FPS。

第一招:鎖幀。我們大多數人已經領教了這一招。它讓遊戲全程都按照同一個速度運行。

第二招:delta time。delta time在代碼中表示上一幀所用的時間。通過這種方法,開發者可以不鎖幀率,轉而對上一幀以及基於上一幀的操作所消耗的時間記時。

第三招:雙循環。這種方式是現在很多遊戲引擎採用的方式。其中一個循環以毫秒為單位,另一個以幀為單位。前者負責更新邏輯,後者負責渲染幀。

這三種方案中,鎖幀是最簡單、最偷懶也是最糟糕的解決方案。

Pyronar駁斥了那些諸如「某某引擎不能解鎖幀」、「將遊戲鎖在30FPS有利於遊戲美感」、「不鎖幀將讓工作變得更困難花費更高」等遊戲開發商的主流藉口和謬論。內容如下:

第一條:由於遊戲優化工作難度較高。一些開發者沒有時間和資源讓他們的遊戲維持在60FPS

遊戲優化在技術上有門檻是真的,但和鎖幀與否無關。如果我的電腦不能將你的遊戲運行在30FPS以上,這是優化問題。如果你的遊戲鎖幀在30FPS,這是設計問題。你至少可以提供玩家是否鎖幀的選項或者設置一個幀數上限。

第二條:由於遊戲早期制定的「設計決策」(design decisions),遊戲將無法達到60FPS

技術上的確如此。只是在軟體工程領域我們不叫這個為「設計決策」,這叫「設計失誤」。

第三條:不是所有的引擎都可以解鎖幀限制

首先,遊戲引擎不是封閉的系統,至少絕大部分不是。如果你想增加點什麼功能,寫代碼就行了。可能會有難度,但總比從零起步好得多。其次,沒有引擎會自加鎖幀限制,如果它真的有,一開始你幹嘛用它?第三,現今大大部分引擎都為此提供有專門的工具。最有名的比如Unity,就已經內置了雙循環的設置。

著名遊戲引擎Unity內置了幀率設置

第四條:將幀率鎖定在30幀,是一種藝術化的處理

我不是藝術家,所以我並不打算就藝術這一點作爭論。然而,有一件事情我是知道的,如果你的遊戲設計得好,提供一個開放幀限制或至少將遊戲鎖定在60FPS的功能選項,也不是什麼難事。就算你想讓你的遊戲跑在30FPS,粗暴地強制鎖定是個糟糕的主意。

?

《刺客信條:大革命》的關卡設計總監Nicolas為30FPS辯護,稱這樣的幀率可以帶來「電影級的體驗」。

第五條:這項工作難度高、開銷大

真沒那麼燒錢,有點難倒是真的。這就是Unity等引擎為什麼早就內置了此類功能的原因。

這下你知道為什麼有些遊戲要鎖定在30幀了吧。這也可以解釋為什麼有些大神不用大費周章就可以解鎖遊戲的幀率限制(當然,可能帶來一些令人啼笑皆非的副作用)。有的玩家認為遊戲大多已經步入次世代,如果還因為各種原因鎖住幀率,實在是悲哀。60FPS是最舒服的幀數,有品質的遊戲就應該達到這一要求,不能縮水。


幀數高並不代表絕對流暢,幀數穩同樣是一個流暢的重要因素。

舉個例子,我之前顯示器送修,臨時換了臺144hz的2k顯示器,玩生化危機2重製版基本能穩定在120幀以上,但有些場景下會突然掉到90幀又上來,那麼這一下就表現為卡頓。

遊戲場景變化較明顯時,受資源載入和廠商優化影響,幀數就會產生波動,幀數波動較大時則發生卡頓。

這時候通過限制最高幀數就可以得到相對平穩的畫面。

至於「幀數越高越流暢」的說法,沒有錯。但實際上,我們評價遊戲「流暢」的時候常常也不是在表達同一層含義,因為「卡頓」就分兩種情況,分別對應幀數低和幀數波動大。以網路類比,前者類似延遲高反應遲緩,後者類似丟包高頻繁掉線。

還是舉例。

上世代的主機,遊戲常常只有30幀,如果你以「絲滑」為流暢的標準去看,那確實是「卡」,但也沒有人說過ps3卡的不能玩,因為這個30幀大多是穩的,不影響遊玩。

而在一些射擊或者動作遊戲中還會有一種卡頓,尤其是在顯卡佔用已經比較高的情況下,平常的移動、奔跑不卡,但只要發生戰鬥,出現開槍或者擊打的特效,就會變卡。如果你前面移動、奔跑的時候能有60幀,戰鬥場景怎麼也不會掉到30以下,按ps3的標準這個幀數就是流暢以上了呀。這就是典型的第二種幀數波動的卡頓,這種從流暢到卡頓的「頓卡」相比前一種就比較讓人難受了。

鎖幀的作用,就是把後一種「卡」變成前一種「卡」,讓玩家在體驗上相對的更舒服一些。

當然戰鬥卡頓這個情況一般更適合通過調整畫面設置解決,鎖幀更適合解決的是資源載入量突變或者開發商優化不到位造成的卡頓。

除此以外,出於功耗和資源佔用等方面原因,遊戲也會做幀數限制功能,常見於一些手遊。

典型的比如王者榮耀的高低幀率模式。王者榮耀默認是低幀率模式,高幀率模式需要手動打開。打開後就相當於解除第一種卡頓,而長時間開啟後,部分散熱比較差勁的手機(例如iPhone XS Max )就會開始過熱降頻,幀率也變得不穩定起來,演變為第二種卡頓。

總的來說,限制幀數的根本原因還是在於考慮到硬體上難免會有各種方向各種意義各種各樣的不足(包括軟體優化不得力導致的硬體佔用增多),硬體又基本不可能絕對完美,所以就有了這種方案。


幀率限制的原因有很多啊

1.降溫,這大概是打開幀率限制最常見的原因。

2.降功率,和1類似,但一般來說是散熱牆先到。但是遊戲本插著電源打遊戲打著打著電池沒電了這種事……也不是不可能。

3.降噪音,負載下來了風扇聲音就小了。這是真的,親測可用……你要是戴降噪耳機那我沒辦法。

4.省電費……開玩笑的。

什麼?你問的是那些故意鎖幀的屑開發商?60就算了,強制鎖30就是屑。


沒有這個功能的遊戲我也會在顯卡設置裏給它鎖了

要問為什麼,幀數越高確實意味著越流暢,但幀數不穩定意味著比幀數不高更卡頓

像csgo,我如果不鎖,很可能幀數會在180-300之間波動,尤其是遇到投擲物,會有明顯的幀數不流暢感,我把它鎖到144跟我顯示器一樣,就非常非常流暢

如果你的電腦可以把一個遊戲跑到60以上且穩定,那你就可以鎖60,當然如果顯示器刷新率更高電腦更好也可以鎖到刷新率上限或是高於刷新率也是可以的

當然低配電腦鎖30也是可以的,靠著垂直同步鎖30,我的輕薄本也可以「流暢」運行gta5


推薦閱讀:
相關文章