Android 上有些遊戲為什麼針對 CPU / GPU 做這麼多適配版本?

不同CPU差很多嘛?舉個例子:


既然用的是我們網站之前的截圖,那我來簡單說一下GPU和安卓遊戲的適配這塊的問題
ps:CPU和GPU是綁定的,和筆記本一樣,就不多說了,想看奇葩處理器,也就是移動平台CPU和GPU混搭的直接跳到最後,舉例了幾個國內的。

你用的截圖俠盜獵車手3以及俠盜獵車手3十周年紀念版在我們網站的錄入時間分別是11年12月和12年2月,在當時安卓遊戲的發展說實話真的很弱,說實話到現在有些遊戲也很難做到完全適配,畢竟安卓的設備太雜了,到底有多雜呢?我給你看一張我在做網站的機型適配時候整理的安卓處理器的Excel表,當然這還不包括解析度的,這裡需要提一點就是安卓的單機遊戲一般都是按照處理器進行適配,安卓網遊一般都是按照解析度來,目前這兩種都已經逐步消失,畢竟技術發展起來了。

該表整理於2013年6月,解析度和機型相關數據不變透露。

左側依次是常見的高通,英偉達Tegra,德州儀器和三星獵戶座的四大分類,主要還是因為圖片壓縮紋理的制式不同,當然有時候遊戲公司可以克服處理器的差異,但是不太可能克服同一處理器品牌下的工藝制式的區別,例如:

高通的GPU有Adreno 200,203,205,220,230,305,320,330等
德州儀器有PowerVR SGX530,PowerVR SGX540,PowerVR SGX544。
三星獵戶座的有Mali-400 MP4@266MHz,ARM Mali-400 MP4@400MHz,ARMMali-T604@533MHz,ARMMali-T658,PowerVR SGX544@533mhz。

可以一個字概括就是 雜 。一眼看過去,若是想給所有手機都做一個通用的完美的遊戲數據包真tm難。


如果一款遊戲的開發周期足夠長,技術足夠到位,是可以做全機型適配的,不過就算如此,若一款遊戲大賣或者火熱,還是會根據處理器推出其特別版本,不過該種情況目前比較少,也是今年才出現的(目測會成為趨勢?媽蛋我高通800的處理器為毛賽車後視鏡沒有圖像?請下載四核高通版),遊戲只有極品飛車17和狂野之血,除了全機型適配的版本之外還會有四核版,例如高通四核版。

狂野之血是著名廠商Gameloft出品的,Gameloft在業界的技術和品牌絕對是No.1,玩家關注度也是最高的,為什麼基本不分機型的Gameloft遊戲也要單獨出個版本?那估計問題只能存在於處理器方面了。EA的遊戲那是純粹的EA傳統,EA的每一款遊戲基本都是分機型的,這樣也是為了讓遊戲在不同的機型上有更好的表現,關於這一點EA簡直是喪心病狂,拿今年EA的《真實賽車3》來說,每個機器在第一運行遊戲時會根據你手機的配置下載不同的優化數據包,大概10-20M,每個機型都不一樣!而對於英偉達,老黃還是玩的PC的那一套,老子就要獨佔,關於英偉達Tegra處理器獨佔的安卓遊戲,請點擊:Android安卓英偉達Tegra遊戲專題

除了GPU繪製圖形的差異之外,CPU的性能也是一大問題,如果做一個通用的數據包遊戲,有可能在性能較弱的CPU上就會出現「卧槽,卡成馬了」這種現象。分機型的數據包遊戲不同版本的遊戲數據包可能會有個100-300M不同大小的差異,根據處理器的性能關係適配表現最好的資源文件,分機型的數據包遊戲就是這個思路。也就是說,那種通用機型的可能真的先天就捨棄了一部分機型,可以運行,但是效果真心不能保證,資源文件要求太高了中低端機悲劇了,資源文件太低了高端機質量太差,都弄了遊戲有太大,想想就蛋疼。

得益於美帝的運營商補貼和人均消費水平,中高端智能機在美帝應該比較普遍,就拿Google的Nexus親兒子系列來說,Nexus 4和Nexus 7十分便宜,就算奸商加個幾百塊在淘寶上依然有絕對的優勢,而且親兒子重要的是什麼?是在於系統版本能及時更新。拋開性能過剩的機器和最新的操作系統外,安卓遊戲的下載第一站點是Google Play電子市場,國外的版本幾乎不會閹割,不說那些國外打擊盜版,付費率高什麼的虛的,身邊有幾個朋友真的就是直接在Google Play上買正版遊戲,為什麼?因為正版的升級及時,不用考慮什麼適配不適配,而且一年中安卓遊戲中的大作也沒多少,消費真心不算多,就算手機格式化什麼的登陸一下Gmail(購買後不限制)直接下載。
ps:同樣的配置手機今年的賽車大作《狂野飆車8》在安卓4.3、4.2、4.1和4.0的系統上表現都不一樣,好像是廢話。例:我的高通800怎麼後車鏡黑的,你的600居然有圖像?!答:我是安卓4.3。

上一段的陳述主要是想撇清分機型適配真的不是因為安卓的原因,廠商做點好事情居然反而成了用戶的累贅,真是有點冤。當然安卓遊戲的完美運行受制於各種因素,此處就不一一說明了,實在是太多了。目前當樂網安卓門戶的下載已經做了機型適配,選擇機型後不會再看到這些數據了,整理的機型有上千種,主流的基本都包含了,歡迎體驗和反饋,由於網站剛改版,BUG多伺服器不穩定,還請見諒:

安卓Android手機遊戲免費下載 安卓Android手機軟體下載 中國第一安卓Android遊戲門戶(android.d.cn)

利益相關:前 當樂網 員工

-----------------------------------------------------------------------------------------------
其實除了這些常見的問題外還有一些就真的是中國特色了,隨便從遊戲角度扯一點,僅供有興趣的人鑽研:

除了四大廠商:高通、英偉達、德州儀器和三星獵戶座之外,還有一些廠商,以遊戲角度來說這些真不是遊戲玩家用的:

1.聯發科MTK
這個就不用說了,最常見的,膠水核+德州儀器的GPU,請使用改處理器的用戶下載德州儀器版本的安卓數據包遊戲,當然不建議使用該處理器的機型,體驗太差,會毀了你對安卓遊戲的好感。ps:那種小型的遊戲,100M以下的還是可以玩的。
2.展訊、瑞芯微
和聯發科一個德行,不過搭配是膠水核+三星獵戶座的GPU(Mail-400),國內的一些小品牌和山寨品牌用的都是這種,有些機器做了優化,性能還可以,主要特點還是 廉價。
3.全志
型號全志31的使用率比較多,搭配是膠水核+PowerVR SGX544,面向的市場和上面的「2」中的一樣,珠海的一家公司出品的,說是四核移動應用處理器,四核你懂得,分割線下的基本都是四核的。
4.博通Broadcom
GPU是VideoCore IV HW,哪裡跑出來的妖怪?我了解博通還是通過整理機型庫知道的,三星居然就有一款手機用了,那就是 【三星Galaxy Grand DUOS I9082/聯通版】報價,真心的不要買這種處理器的手機,真不是為遊戲而生的,因為沒有遊戲廠商為這種玩意兒去做適配。
5邁威Marvell
中興的U880和三星Galaxy i8250用的就是邁威的處理器,適配和博通一樣都是渣,因為沒人為你做,當然吃過一次虧基本就明白了,現在的這種機器也越來越少了。

少說了海思K3V2和Intel Atom的,補充一下:
華為 海思K3V2處理器請使用Tegra版本的數據包,至於為什麼?測試出來的啊!我也問了華為的同學,尼瑪華為做手機的同學都搞不明白海思K3V2這個奇葩的處理器到底是什麼玩意兒!公司有個P6,不過不是測試機,沒有好好研究,求贊助。

Intel Atom的也請下載Tegra版本的數據包,至於為什麼?也是測試的啊!而且這玩意兒也不一定非得下載T核的,目前使用該處理器的也少,和海思K3V2一樣,都沒摸透,好不容易買了個K900,由於各種機器之外的問題給退掉了,真可惜,求贊助。

溫馨提示:如果你想買一個主要玩安卓遊戲的設備,一定請避免上述5個處理器中的前5個,後兩者慎重考慮,如果你缺錢或者有其他原因非買不可,建議使用3D神器,可以在模擬環境中玩其他版本的數據包版本。
3D神器,Chainfire3D,又名「3D驅動」(官方)、俗稱「3D神器」(非官方),是一款由xda-developers社區(全球高端手持設備開發者社區)開發的安卓系統類軟體。


勘誤,這裡針對的是GPU而不是CPU。大多數智能手機的AP單片機裡頭的CPU都是armv7兼容的。

是的,差很多。

形象化的表述:x86格式的機器碼,不管是linux的ELF格式的還是Windows NT的pe格式,只要有執行環境配合,把其中的機器碼丟給CPU就能運行,不管CPU是英特爾造的還是AMD造的。但在不同的GPU上,往往做不到,這種差別主要源於GPU對紋理格式的支持。

關於技術上的事項請參考:
拒絕忽悠 移動GPU全解讀(一)

註:

iOS設備一直在用Power VR系列GPU
https://en.wikipedia.org/wiki/Apple_(system_on_chip)

MBX,SGX535,543MP2,543MP4,543MP3,543MP4,554MP4,Rouge G6430

WP設備一直在用Qualcomm的adreno系列GPU


看了排名前幾的回答有些不全面或者不對吧
我來說下,不保證一定完全對(^_^)
首先,android的廠商太多了。主流用的cpu主要是高通驍龍(htc,lg,sony,甚至三星都在用),三星自家的Exynos(雙四核什麼的,三星和魅族用的多),英偉達的Tegra系列,MTK(低端一些的手機很多在用),以前還有德州儀器後來不知道為什麼不玩了,其他還有些用的少的不說了。當然還有用的很少的x86架構的intel的cpu。之前那些的都是基於arm的。
當然玩遊戲資源包的不同和cpu還真沒有多大關係,都是gpu惹得禍。
GPU不同廠商用的也不一樣。
主流的是高通的Adreno系列。ARM的mali系列。Imagination的PowerVR系列(蘋果也用這個哦)。NVIDIA的自己cpu專用的gpu。
說問題,為什麼會有這麼多不同的資源包呢?為了更好的遊戲體驗,各家的gpu都支持相應的紋理壓縮格式。
他們各自有自己的紋理壓縮格式:
Adreno-ATC
PowerVR-PVRT
TEGRA-DXT
mali-ETC
現在看各種GPU的信息,似乎都支持ETC?谷歌官方也是這麼說的,他也是這麼要求的。
在這如果沒有接觸過遊戲開發的話,說一個概念,如果遊戲用的遊戲資源直接用的是.png或者.jpg的話是不會存在不同gpu需要不同遊戲資源包的。但是遊戲廠商會針對不同gpu用他們對應的紋理壓縮格式而不是直接用圖片作為紋理解析,從而在佔用內存和遊戲體驗上獲得更好的效果。
所以一般遊戲開始,會讀出手機gpu信息,根據不同gpu信息下載不同gpu所需要的資源包。
曾經在某世界上挺有名氣的手游公司工作過(好吧,就是山寨大廠Gameloft),對這些接觸的還是挺多,稍微了解點,但是發現要說的話,越說越多。。。還是打住了
總之真心的,同一遊戲不同設備你們會發現遊戲的效果不一樣,體驗差別有點多,甚至有些遊戲專門為某手機優化也有可能。很大的原因都是gpu,和cpu真的關係不大。


額,樓主你這個例子剛好舉錯了……

首先,Android上確實有針對不同CPU而匹配的軟體包,會出現這種東西的主要原因是因為Android系統支持多重CPU制式,比較眾所周知的有:ARM,MIPS(君正方案),X86(Intel方案)
一般來說,軟體要支持上面三種制式,是不需要做太多的處理的,不過某些使用了ndk的軟體,要支持全部CPU制式可能就會存在一定得問題,X86還好說,那個相比ARM少了不少東西的MIPS就很難說了……所以在有段時間,市面上雖然有些配置很強大的Android平板,但這些便宜而且配置強大的平板卻不能運行大部分遊戲,就是因為這些平板使用了君正的解決方案導致的。好在君正到了最後也沒有弄出一套手機解決方案,所以廣大Android手機用戶從來沒有感受到由於CPU制式不同導致的問題,除了少部分Moto用戶之外……

然後,針對題主你貼出來的截圖,這些軟體包產生的原因在於RockStar這家良心廠商針對不同的GPU制式進行了極其細緻的優化,以求給所有玩家最好的遊戲體驗。相比之下,某些日產萬作的大廠就從來不會如此良心的給這些GPU做針對性優化。基本上就是做好了主流機器玩得不卡就行。至於說良心廠商這麼做能獲得多少的收益……嘛,至少在麻煩破解者這個點上效果顯著的說。
至於說相關GPU技術的差異,這個參考@陳塵的回答吧。


其實主要是GPU差很多,CPU問題不是很大。

正版遊戲一般都是只下載apk然後第一次運行自動下載對應數據包的。


CPU方面我覺得倒是問題不大,畢竟現在絕大多數的手機都是ARM的。
不同數據包主要是因為對圖像的處理不同所以屬於GPU的方面了。


簡單的說Android是開源系統,要適配各個不同廠家,不同型號的晶元,為了作出適應就必然要付出一定的代價,相比之下與蘋果的IOS不一樣,他們可以更完全的利用硬體GPU之類的,而不像Android一樣是靠軟體更多的依賴CPU計算,順序可能不太對要說一句,Android是運行在Jave虛擬機上的,學藝不精,把記憶里的都掏給你了


主要是不同的gpu上的差別,例如三星I9000採用的是德州儀器SGX540,I9100/9300採用的是ARM的Mail400,小米1/2採用的是高通A系GPU,還有華為海思採用的GPU也不同,具體名字忘了


因為不同系列的CPU的指令集或者說機器語言是不一樣的,所以Android系統首推用一個通用的語言-Java來寫程序。但是Java程序必竟需要翻譯再執行,效率上肯定有損失。所以就有了NDK程序,也就是對不同的機器語言寫專門的程序執行,這樣的話,有多少機器語言就需要出多少個程序包。


推薦閱讀:

Android 平台最好的 Google Reader 客戶端是什麼?
MOTO G、MX3 和 Nexus 5 選哪個比較好?
Android 4.0 之後的版本,設備有必要定時清理內存嗎?
Google 可能在第二季度推出 Android 5.0,你怎麼看?
推薦一個安卓下的pdf閱讀器?

TAG:Android遊戲 | Android |