[心得] 遊戲的"縮水" 與 TLOUR的平行運算技術

作者: cjcat2266 (CJ Cat)   2015-06-08 09:01:40
不少遊戲初期公布的實機技術demo與最終成品有明顯畫質落差,為什麼?
本文將藉由說明在初期技術展示與最終成品階段的技術差別,來回答這個問題
順便介紹一些The Last of Us Remastered (PS4)壓榨硬體資源的技術
簡而言之:遊戲最終成品,通常所需運算資源種類與量,會比初期技術展示多
一個AAA遊戲成品在實機執行的時候,運算資源大致分配給以下幾項作業
1. 遊戲機制(CPU)
2. AI(CPU)
3. 物理(CPU and/or GPU)
4. 動畫(CPU)
5. 粒子(CPU and/or GPU)
6. 繪圖邏輯(CPU)
7. 繪圖執行(GPU)
初期實機技術demo,通常不會有多少1/2,可能會有3
4不會像最終成品消耗CPU與記憶體
所以大部分的運算資源都可以用在5/6/7
不要小看1/2/3消耗的資源量
這幾項在最終成品的資源消耗可以佔到CPU的50%以上
所以4/5/6/7能夠使用的硬體資源(粗估)只剩下初期技術demo的50%
如果在製作初期實機技術demo的時候
把100%硬體資源拿來展現4/5/6/7
那麼後來新加入1/2/3的資源消耗,勢必會產生"視覺上縮水"的情況
為了初期吸引觀眾目光,這幾乎是必然的結果
這樣是否表示AAA遊戲開發者不誠實? 見仁見智
不管是初期技術展示還是遊戲成品,硬體資源一定是幾乎被榨光的
製作初期demo的時候是否可以估計到之後會額外用到的資源? 非常難
不管是哪家工作室,應該都不想只用50%以下的硬體資源做技術展示demo吧
我個人是有了以上的認知之後
看到初期技術demo與最終成品的畫質落差
雖然會失望,但覺得比較可以接受這個事實了
接下來介紹TLOUR的一些壓榨硬體資源的技術
之前有提到,Naughty Dog為了從PS3跨到PS4
重新設計了一個平行運算的系統
負責人Christian Gyrling於今年GDC有個專題講座
強烈推薦給有興趣的資工領域朋友
影片連結 http://bit.ly/1eX5mb1
投影片連結 http://bit.ly/1HgtGQ9
TLOUR的硬體資源配置,可分為以下三種
1. 遊戲邏輯(CPU) 包含:遊戲機制、AI、物理、動畫、粒子
2. 繪圖邏輯(CPU) 生成繪圖指令,丟給GPU執行
3. 繪圖執行(GPU) 執行2生成的繪圖指令
一個單執行序的遊戲
1/2/3是串在一起,在同一個frame內線性依序執行的
如果要達到60fps,那1/2/3總共的運算時間就不可以超過16ms
<A方案>
CPU 遊戲邏輯 -> 繪圖邏輯
GPU -> 繪圖執行
|
作者: yearnway (..)   2015-06-08 09:53:00
謝謝分享~~又學到一些東西了~~
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:12:00
過去2個frame有擊中都算 所以邏輯資料會保留2個frame囉這樣會對記憶體造成負擔嗎 或是其實資料量很少 沒影響
作者: cjcat2266 (CJ Cat)   2015-06-08 10:14:00
既然遊戲生得出來,就表示記憶體可以負擔吧XD
作者: cowbaying (是在靠北喔)   2015-06-08 10:24:00
如果GPU的時脈拉到2GHz以上我推測可以用來算AI遊戲這種hard real time運算 對於平行後的資料蒐集
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:25:00
我的想法是 通常這個frame的資料出來時
作者: cowbaying (是在靠北喔)   2015-06-08 10:25:00
是相當嚴苛的...
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:26:00
上個frame的資料應該就丟了 甚至釋放了所以這作法 必須保留3個frame 的資料
作者: cowbaying (是在靠北喔)   2015-06-08 10:28:00
或許是硬體特性的問題 目前開發的HSA項目
作者: cjcat2266 (CJ Cat)   2015-06-08 10:28:00
當然不是所有資料全保留啊,只保留繪圖相關資料而已
作者: cowbaying (是在靠北喔)   2015-06-08 10:29:00
在GPU時脈800Mhz下 簡易四則運算的回應時間是
作者: cjcat2266 (CJ Cat)   2015-06-08 10:29:00
我們已經三個人在平行發言了XD
作者: cjcat2266 (CJ Cat)   2015-06-08 10:33:00
頑皮狗做的遊戲都是單人線性劇情走向,所以沒問題的XD
作者: akilight (OWeeeeeeeee~)   2015-06-08 12:07:00
不過TLOU和uncharted不是都有多人對戰嗎?對人對戰的部份也是用這種2 frame方式處理,還是改以反應速度為優先考量呢?
作者: cjcat2266 (CJ Cat)   2015-06-08 12:45:00
是使用同一套系統,畢竟射擊遊戲的被攻方錯誤容許度高攻方如果發現有瞄準到的敵人沒有攻擊判定,會很明顯而被攻方受到攻擊判定,也就只能認了一般也不會覺得 "明明自己躲過瞄準了,怎麼還被打到?"因為被攻方也看不到攻方的準星是否有瞄到自己
作者: akilight (OWeeeeeeeee~)   2015-06-08 13:55:00
了解XD
作者: wyvernlee (wyvernlee)   2015-06-08 14:43:00
專業文!
作者: holymars   2015-06-08 16:22:00
試著回答記憶體的問題:通常邏輯部份並不佔多少記憶體理論上,多存兩個frame的邏輯狀態並不會增加多少記憶體需求,至少和texture/audio之類動不動就上百MB比起來是很小的問題
作者: cjcat2266 (CJ Cat)   2015-06-08 16:32:00
也不用存邏輯狀態,只要存繪圖需要的transform就好
作者: azureblaze (AzureBlaze)   2015-06-08 19:26:00
記憶體幾乎就是texture的意思了 其他比起來都是渣XD
作者: lemmii   2015-06-08 23:27:00
推好文
作者: wangm4a1 (水兵)   2015-06-09 02:16:00
作者: yoyoleo0505 (leo)   2015-06-09 08:51:00
作者: yhn0tgb60 (呦厚厚)   2015-06-09 13:24:00
邏輯資料的記憶體 的確是非常小沒錯只是想到 videogame的記憶體也是寸土寸金 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com