現在遊戲設備的性能是否已經能完全滿足任何2D遊戲的畫面需求了?如是的話,最早從哪個年代開始已經滿足了?
提問中的遊戲設備包括了PC、家用機、手機與掌機等。所謂2D遊戲,不包括3D建模的2D渲染,例如無主之地那一類的畫面。
解析度方面,PC和家用機以1080P為準,手機和掌機以自身顯示屏的解析度為準。是否無論怎樣複雜的畫面,也不足以榨乾GPU的性能了?如果設備的2D性能現在已經發展到了這種程度,那麼再往前推的話,具體在哪一代就已經達到這一標準了?
2D遊戲刻意耗盡現代設備機能並不難,如增加STG飛行射擊遊戲的子彈數目,1萬顆不行就1億顆,10億顆……,再不行就將每顆子彈都設置跟蹤。
或者增加背景層數,5層不行就10層,100層,1000層……
在這些增加層數的每一層背景上都設置活動的背景畫面等。
問題是這樣做,難度會急劇上升,無意義的分散玩家注意力的東西會急劇增加,以至於可玩性會急劇下降。
刻意耗盡機器機能非常簡單,但製作出給力的,好玩有趣的遊戲,有相當的難度。
潑個冷水。不能。
只要實時GI沒解決,不管2D還是3D,都滿足不了。
反對一些回答中像素數量的說法。育碧有個引擎好像是叫ubi art,用在像great war和child of light 這種橫版2D遊戲里,是用上了GPU的。由於場景含有很多圖層及後期特效,並不能簡單理解為輸出屏幕解析度。實際運行下來,複雜場景在低配機器上還是會有卡頓。另外有些用2DLive的galgame也是一樣。極端來講,像Photoshop這種軟體也可以視為純2D。想要Photoshop完全不卡需要多好的配置呢?相信大家應該都明白了吧?
只不過沒人用特別消耗性能的東西而已,2d一樣可以做得很複雜,更多複雜的精靈,更多的關節,搞複雜的物理引擎,用更複雜的演算法,更渣的優化,更高的解析度。現在的高解析度超級本還有玩galgame不流暢的呢,人家可還沒特意搞複雜化。
有人按像素數算,搞個1080p的視頻把madvr渲染參數調到最高卡的你每秒1幀都不到
其他答主答了主機,我回答下掌機吧。
第一個可以在屏幕不受限制任意渲染2D畫面的掌機是GBA。GBA的GPU引入了bitmap mode,在這個模式下,你可以在32768色240x160解析度的屏幕上渲染任何你想要的畫面,直接把你要渲染的bitmap圖填到GPU指定的VRAM區里就完了。
在GBA以前,包括多數2D主機的背景圖層要麼有發色數的限制,要麼有圖案限制(以前背景都是劃分成8x8之類的小塊,然後每個小塊根據nametable里的tile編號去存放VRAM查對應的圖案,不能任意設置某個像素)。其實根本原因還是那時GPU的VRAM不夠大。
滿足不了。上面提到了實時GI(全局光照),實際上,也可以擴展為所有的動態內容。3D和2D的差異其實也就是是否要做一次頂點變換而已,在像素光照上面臨的挑戰是一樣的。
2D有性能要求不高的映像,是因為以前的2D保存的都是預渲染完成的「動畫」,但是「動畫」的缺陷就是固定(還有解析度幀率和內存佔用了)。而3D因為角度問題,根本沒辦法做成固定的,所以才有了性能差距。
但2D當然也不希望做成固定的啊,所以現在開始搞2D骨骼,想各種辦法,必要時也得用上3D手段。
如果2D有性能要求低的事實,那也是對畫面苛求度更高的人,都選擇了3D遊戲而已。
---------------------
另外稍微糾正下某位答主的說法
1.3D遊戲一樣也是「理論上」屏幕上每個點只算一次,而且比起2D更容易達到這個理論目標,因此表現出來的結果是,2D遊戲更容易在像素填充上出現性能問題。
2.其實目前用3D邏輯渲染2D浪費的性能並不多,除非你的遊戲畫面沒有縮放旋轉背景不動,但現在這樣的2D遊戲基本沒了。所以以後也不會為2D設計專門的渲染架構。
3D拼的是運算(CPU/GPU)
2D拼的是內存和顯存這個知識點請務必記住!(敲黑板)
當然在內存佔用優化到極致的情況下,利用各種後處理效果來提升畫面表現就又是燒運算能力了PS2就已經沒有2D畫面的機能限制了。當然PS2實現的只有480P水平的畫面,1080P是到PS3時代實現的。
我的印象是DC就已經能實現所有2D畫面了,但是DC上的遊戲比較少。
PS以圖層方式組合圖像,並不需要顯卡,完全靠CPU去刷屏。部分SS上的遊戲PS無法完美移植,與其說是CPU的限制,不如說是受到內存大小的限制,2D畫面本身就是拼內存的。
硬體並沒有,還是得優化才能好好玩,而且瓶頸不單單是硬體,高清解析度帶來2d繪製的工作量巨大也是瓶頸。還記得當年信誓旦旦高清2d街霸2嗎?因為素材生產問題差點被砍掉.
AA,AA,AA 重要的話說三遍
剛好最令klei發了個大招,缺氧
2d簡化版有限元分析,32位機性能太差其實你要知道世界上目前沒有哪個pc敢說用photoshop做任何圖都不會卡。
例如某星際照片,一張照片就24G+,你還指望干別的嗎?
=====4.10編輯分割線=====
回答一下評論區以及其他回答的質疑。
1. 為什麼還是有2d遊戲掉幀?
因為遊戲除了GPU佔用時間,還有CPU佔用時間,另外網路遊戲還要考慮網速。
2. 關於像素只渲染一次和圖層。
題主問的是硬體性能,所以我假設軟體是理想狀況能保證每個像素只渲染一次,這是模型簡化的必要步驟,否則如果一個遊戲場景寫的太爛有10000個圖層那再牛的硬體也抗不住啊。
3. 只討論填充率是否充分,是遊戲還是放視頻。如果以現實遊戲來考量,又如何?
這個估算就比較麻煩了,我重新想了一下。
以一個用cocos2d-x開發的2D遊戲為例,只有Sprite和Action,沒有任何3D內容如光照陰影等等,假設有8個圖層。那麼對於3D實現來說,可以看作對8個Render Target分別做帶一個Texture的blt,最後用八個Texture混合輸出。
要實際估算他的幀數,需要知道每個blt需要的GPU cycle數,以及最後blend的cycle數,然後加起來用填充率來除。這個數據各個硬體都不相同,而且是很敏感的performance數據,非內部人士不能知曉。我盡量往大的估,同行就不要笑話這些離譜的數字了。
一般texture採樣需要的cycle較多,因為要訪問texture的cache,我們假設是50個cycle。坐標變換是純粹矩陣運算數學指令用不了這麼多,我們假設30個cycle,輸出到顯存假設10個cycle,那每個blt是100個cycle。最後八個texture做blending,假設簡單的blending用20個cycle,那就是30+50*8+20=450個cycle,整個更新要用1250個cycle。需要的填充率是1250*120M=150億像素/秒。
這個數字已經比實際需要的大很多很多了,可是這樣的填充率對於現代GPU來說也不算什麼啊,GTX 1080的像素填充率是1028億像素/秒。
4. 如果加上後期特效,比如粒子系統,全局光照(?!喵喵喵)呢?
那當我什麼也沒說,後期特效永無止境,你寫個幾百條指令的pixel shader來生成2D的特效加上去,那我肯定不敢說現有的像素填充率夠用啊。
總之我要表達的意思是對於純粹使用圖層和貼圖的純2D遊戲來說,3D顯卡是完全夠用的。
=====原答案=====
2D遊戲只要把屏幕上每個點的顏色決定好就行了,沒有3D所以沒有遮擋,理論上是每個點一次就可以了。那麼以PC上1080P解析度,刷新率60來算,1920*1080*60大約是120M像素每秒。也就是說2D遊戲只要每秒能輸出120M的像素就可以了。
現代GPU是不考慮2D的,所有的架構都是為3D和並行計算設計的。如果用GPU來顯示2D的畫面,只需要一次採樣和輸出就夠了,這基本上近似於理想情況下的像素填充率。而像素填充率很好算,GPU的頻率乘以渲染管線數量。
不過一個遊戲不僅要靠GPU,CPU也一樣要耗時間的,所以實際上需要的像素填充率要更高一些才能保證輸出。1999年7月的voodoo3 3500顯卡的填充率是183M,基本上應該沒有問題。
你不能只考慮單純的畫面輸出。佔用的內存呢?吃掉的CPU資源呢?遊戲AI呢?所有的2D遊戲範圍太大了,目前電腦的性能都很難滿足這個要求。大型MMORPG來說,所謂同屏千人戰鬥,你試試?不卡死你!
謝Fisher邀請
家用遊戲機這塊在PS2時代就基本解鎖了現有2D畫面的特效,PS3時代就飆到1080P上去了
手機這塊其實剛到達這條線沒幾年。。。。。
所謂2D遊戲,不包括3D建模的2D渲染
其實 2D 遊戲完全可以不包括任何 3D 建模,但是仍然是用 3D 渲染的邏輯。
比如你做個超級瑪麗,所有的 sprite 上除了帶顏色信息以外,同時加上深度信息和法線信息。這些完全可以手繪(大概法線畫起來麻煩點……),而不依靠「3D 建模」,或者你可以離線 3D 建模以後導出。然後使用這些信息渲染,神馬景深模糊啦 ambient occlusion 啦各種效果都可以搞。你想搞光線追蹤大概都可以…… 這些都是屏幕空間的噢,都是純粹的 2D 渲染噢~~
換句話說,你手工擼 g-buffer.
這種遊戲並不是沒有:http://www.wholehog-games.com/devblog/2013/06/07/lighting-in-a-2d-game/ 只不過這裡只考慮了光照。
還有另一種增加性能需求的方法,就是加入物理。即使是純粹的畫面需求也可能需要物理計算。比如我想擼真實的火焰特效,完全可以上 Navier-Stokes 方程硬解,給你個超算都不夠用~~
短視,你這麼想都是因為你無法想像超出現在機能的2d畫面長啥樣。這種事情歷史上發生過很多次。比爾蓋茨之於內存,ip地址數量等等。啊,還有皇帝的金鋤頭。
玩過DNF么。。那叫一個卡
看看奧丁領域!PS4pro加boost模式還是卡成狗。前場人物還湊合,你盯著背景看看,一動就幌花眼!還用不著複雜的戰鬥畫面,普通和平場景都能晃瞎眼!
只是沒有人用更複雜的演算法,更高精度的模擬罷了。遊戲裡面隨隨便便加個什麼物理模擬,上工作站都不夠用的
我去年做了個flash動畫,就是幾片雲,分了10個圖層飄過去,時長一分半,渲染了五個小時。所用電腦宏碁v5-471pg,自己擴成8g內存,渲染圖像,1080p,所用軟體,flash cc。
「不受限制」的定義是什麼?舉個極端的列子,圍棋遊戲,做成2d的,簡單的一個小程序就可以做,甚至FC乃至GB都有商業髮型的遊戲。但是如果我要求圍棋遊戲有人工智慧深度學習又怎麼樣呢?根據DeepMind員工發表在2016年1月Nature期刊的論文,分散式版本(AlphaGo Distributed)使用了1202個CPU和176個GPU,同時可以有40個搜素線程。也就是說,同樣類型的2d圍棋遊戲,可以有幾MHZ的FC的6502CPU帶動的版本,也可以有分散式的上千顆數GHZ計算的CPU和GPU才能運行的版本,簡直不可放在一起比較,是完全沒有可比性的。2D顯示所消耗的系統資源其實已經可以忽略,但是遊戲為了生成2D圖像而做的後台運算是可多可少的,所以不加限制的話這個問題是沒有意義的。
推薦閱讀:
※為什麼OV的同價位SOC比小米和華為的性能差那麼多?
※買mate10還是等p11和榮耀v10?
※手機維修行業水有多深?
※如何看待小米5X定價1499元?
※小米半年銷量不到4000萬,全年怎麼完成1億台的目標?