王者榮耀技能不流暢怎麼回事(王者榮耀關鍵時候為什麼老是卡)
最近,不少玩家都發現《王者榮耀》更新到某個版本後,似乎變得特別卡。而有心的朋友進一步觀察,發現在是由於《王者榮耀》的“優化”引起的。《王者榮耀》針對不同機型,會使用不同的圖形API渲染影象,而這些API的效率並不相同。就算是同樣配置的不同機器,《王者榮耀》使用的API不一樣,流暢程度也大不一樣。
很多玩家都發現《王者榮耀》最近更新後掉幀,iPhone也不能避免,這是什麼造成的?
此外,《王者榮耀》進行更新後,所使用的遊戲API可能會發生變化,這會導致遊戲突然比上一個版本變得卡頓了很多,或者流暢了不少。為什麼使用不同的圖形API,會有不同的“優化”效果?今天我們就以《王者榮耀》為出發點,談談手遊中所使用的API吧。
《王者榮耀》都會使用什麼圖形API?
很多朋友或者並不明白遊戲API的意思。簡單來說,遊戲想要顯示影象,就需要使用相關的圖形API和系統對接,而使用不同的API,會大大影響遊戲的執行效率、顯示效果,流暢度和特效都會有所不同。具體到《王者榮耀》,雖然大家下載的或者都是一樣的安裝包,但它卻會根據不同的機型,選擇不同的API運作,因此流暢度也各不相同。《王者榮耀》都使用什麼API和怎樣的優化方略?我們從遊戲登入介面就可以觀察到。
這裡會顯示《王者榮耀》的版本號,最後的“O2,F”則很大程度上可以看出遊戲會否流暢
仔細觀察《王者榮耀》登入介面的左上角,可以發現有“O2,T”、“O2,F”等字樣,視裝置不同,還會出現“O3,T”、“O3,F”、“V,T”、“M,T”,這些字樣其實就標明此時的《王者榮耀》所使用什麼圖形API來運作,以及是否使用多執行緒優化,字樣的含義具體如下:
O2:使用OpenGL ES 2.0 API
O3:使用OpenGL ES 3.X API
M:使用Metal API(iOS平臺特有)
V:使用Vulkan API(安卓平臺特有)
T:使用多執行緒(多執行緒True)
F:使用單執行緒(多執行緒False)
如此一來,我們就很容易明白《王者榮耀》登入介面出現的字樣意味著什麼。例如出現了“O2,F”,就意味著遊戲此時使用的是老舊的OpenGL ES 2.0介面,並只呼叫單執行緒,沒有對多核心多執行緒進行優化。
我們也可以看到,《王者榮耀》所使用的圖形API以及優化方略是多種多樣的,幾乎囊括了手遊大部分會出現的情況。這些圖形API在效率上有優劣之分,使用不同的API會極大程度影響流暢度,這也是為何《王者榮耀》有人覺得卡頓,有人覺得流暢的一大原因。
手遊使用的圖形API孰優孰劣?
為什麼你玩《王者榮耀》會覺得卡頓?最有可能的情況就是,《王者榮耀》既使用了老舊的圖形API,又沒有進行多執行緒優化,例如上文提到的“O2,F”。不同的圖形API的確會對執行效率造成影響,我們這就來說說手機中常見的幾個圖形API。
OpenGL ES 2.0。這是一個相當古老的圖形API。OpenGL ES由OpenGL演化而來,精簡了OpenGL的大量內容,以適配移動裝置,幾乎所有的手機都會支援OpenGL ES這個圖形介面。OpenGL ES 2.0這個版本在2007年已經發布,安卓2.0(NDK)/安卓2.2(JAVA)、iOS5以後的版本,以及黑莓OS、WebOS等平臺都支援OpenGL ES 2.0,普及率非常高。
OpenGL ES 2.0可以看做是OpenGL 2.0的子集,但也有一些不同之處
OpenGL ES 2.0和現在最新的圖形API相比,顯然是不夠先進高效的,在一些使用情況下還會頗顯麻煩。例如,針對不同的硬體,它需要遊戲提供不同的紋理包進行適配,如果你是一名安卓遊戲的老玩家,應該還會記得以前玩安卓手遊需要為PowerVR、Mali、Adreno、Tegra等不同的GPU找不同的紋理包,這是OpenGL ES 2.0帶來的侷限。在效率方面,OpenGL ES 2.0以現在的目光來看也不甚理想,因此如果你執行《王者榮耀》發現用的是“O2”,而且沒有對多執行緒優化,極有可能會出現掉幀卡頓。
在幾年前,玩安卓手遊基本都得找GPU對應的紋理資料包,這是OpenGL ES 2.0帶來的侷限
OpenGL ES 3.X。從名字就可以看出這是OpenGL ES的更新版本。安卓4.3、iOS7以後的版本支援OpenGL ES 3.0,安卓5.0之後的版本支援OpenGL ES 3.1,安卓6.0以後的版本支援OpenGL ES 3.2。而蘋果在iOS8開始主打Matel圖形API,不再以OpenGL ES為重點。
OpenGL ES的進化史
和OpenGL ES 2.0相比,OpenGL ES 3.X的改動是巨大的,例如在3.0版本中使用了統一的ETC2/EAC紋理格式,不再需要為不同的硬體區分紋理包,而且使用了新版的著色語言,增強了紋理功能;而3.1版本中支援通用計算著色器、3.2版本中支援新的ASTC紋理格式等改進,也都大大拓展了OpenGL ES的應用範疇,提升了效率。
OpenGL ES 2.0和3.X長時間並存,而且OpenGL ES 3.X相容舊版,因此為了相容一些手遊仍使用2.0
不僅如此,OpenGL ES 3.X還都向前相容,在支援OpenGL ES 3.X的裝置上,遊戲依然可以使用OpenGL ES 2.0的介面。也因為如此,目前仍有不少遊戲使用OpenGL ES 2.0,這主要是出於相容性方面的考慮。
Metal。這個API相信果粉們都相當熟悉了。在iOS8之後,蘋果大力推廣Metal API,現在Metal已經成為了iOS和macOS的御用圖形API。和臃腫的OpenGL ES相比,Metal的突出優點就是特別薄,更加底層,能夠更直接地呼叫硬體,這令遊戲的執行效率暴漲。
果粉都相當熟悉的Metal,有了Metal後,macOS在圖形API效率上才能和微軟DX一較長短
換用Metal後,遊戲的執行效率可以暴漲到何種程度?在macOS上《魔獸世界》和《星際爭霸2》從OpenGL換用到了Metal,效能竟然提高了50%之多。目前,iOS上的一流遊戲大作基本都使用了Metal,這一方面能夠使用更華麗的特效,另一方面也能夠保證遊戲的流暢度——如果你在《王者榮耀》中看到“M,T”的顯示,那麼就完全無需擔心會卡頓掉幀了。
Metal推廣得很快,根據維基百科,已經有超過148000款iOS應用使用Metal
Vulkan。這個API主要由安卓系統使用,可以大致看作是安卓版的Metal。在安卓7.0以後,Google引入了Vulkan API提升安卓的圖形效能。Vulkan的優點和Metal類似,遠比OpenGL ES高效,能夠訪問OpenGL ES所不及的GPU特性,如果遊戲使用了Vulkan,無疑會流暢不少。
和Metal一樣,Vulkan相較OpenGL ES 3.X,對圖形效能的提升也是巨大的,可達數倍
而和Metal相比,Vulkan對多平臺的支援有更好。它除了支援安卓,也支援iOS、Windows、Linux乃至任天堂Switch等平臺。而對於安卓平臺來說,由於Vulkan對多執行緒支援極佳,因此意義尤為重大——很多安卓裝置都是用了8核心乃至10核心的處理器,遊戲如果使用Vulkan,無疑能夠更充分得發揮硬體優勢。
如果你用安卓機玩《王者榮耀》顯示“V,T”,意味著得到了安卓上最好的優化
因此,如果你的安卓機玩《王者榮耀》顯示的是“V,T”,那麼就意味著玩起來會有絲滑般的團戰體驗。而一旦顯示的是“O2,F”,受限於臃腫的OpenGL ES 2.0,以及相較羸弱的CPU單核效能,遊戲體驗就很難令人滿意了。
總結
可見,圖形API和遊戲的“優化”是息息相關的,使用先進的圖形API,能夠讓遊戲流暢度大幅提升。其實很多玩家都發現,《王者榮耀》是根據機型,而不是具體的硬體和系統來判斷究竟是用哪種圖形API、哪種優化方略的,同一部機器,只需要偽裝一下機型,就能讓《王者榮耀》從“O2,F”變成“V,T”,效能瞬間暴漲。為何《王者榮耀》要如此設定?我們不得而知。希望騰訊能夠進一步開放《王者榮耀》對先進圖形API的呼叫,為玩家帶來更好的遊戲體驗吧。
絕地求生個人資料查詢,王者榮耀,LOL職業玩家都在用的APP,各大市場搜尋 玩加電競 下載