GDC 2011 Day 5  

Posted by 藍斯洛 in

最後一天,算算只有四個小時的課。

今天的開場,由 Bungie 的 Halo : Reach 開始。

首先是 Automated Level of Detail Generation。

顧名思義,就是用程式算出 LOD Mesh。裡頭的演算方法,是很不錯的想法,可以找時間來模擬嘗試看看。

而除了 LOD Mesh 之外,他們還提出了一個做法 – "Unified material model"。

簡單講,就是所有的 LOD Mesh 都使用同一種材質 Shader ,這樣一來,也可以提升很多效能。更重要的是,反正距離很遠、物件很小的時候,就算畫的很粗略,也不是那麼明顯...

在這裡,他們也展示了一個在除錯模式下的攝影機,可以用來檢查 LOD 的變化是否如預期。

Hmm… 我們似乎也該弄個 Debug Mode Camera 來了。

第二段,講述的是 Halo : Reach 裡的 Effect。

第一個來的 Effect,就是嚇死人的粒子系統。

有多恐怖?

1. 粒子的運算全部交由 GPU 計算,CPU 只決定粒子的數量。

2. 在 GPU 裡計算的粒子,照樣可以跟場景中的物件計算碰撞跟彈跳。

所以,只要一個 GPU Draw Call ,就可以畫出所有的粒子,而且還會有碰撞彈跳。

碰撞與彈跳計算的資料來源有兩個,Depth Buffer 與 Normal Buffer。計算的概念,說穿了一點都不難,但是,要能夠想到這點,還真的是不容易。

接下來的效果,都跟 Depth Buffer 有關。

Bungie 給了一個結論 – "Depth buffer is incredibly useful"

前兩天,岩田聰社長說 : "Content is KING"

今天我們的結論是 : "Depth Buffer is KING"

接下來聽了一場跟想像中的內容不太一樣的講題。

本來以為他們會介紹如何處理一個龐大遊戲場景的概念與方法,結果,他們是有介紹啦,但是卻是基於他們自己的工具系統,有一點失望,不過也還是有一點收穫就是。

下午聽了一場是關於拳擊遊戲裡,對於拳手的皮膚效果的處理方式,很新鮮,而且他們的專業研究,也不得不讓人佩服。

過去一整個看起來像 "塑膠" 的皮膚,經過研究分析改進之後,變得非常自然。

真是夠專業。

 

最後,把像素拼圖的完成圖拍了下來。 ( 雖然這已經是由工作人員完成的了... )

DSC01442

GDC 2011 Day 4  

Posted by 藍斯洛 in

中午又跑去任天堂的展場去玩 3DS,本來是想要玩玩薩爾達的,可是人好多擠不進去,晃了一陣,只玩到 Street Fighter。

也很讚。

早上第一場,去聽了 Killzone 3 有關 Occlusion Culling 的技術,基本概念也還是用個 Buffer 來記錄深度,然後做測試運算,沒什麼新的。不過說的很詳細,比起昨天用兩三張畫面帶過的那一場,好太多了。

更重點是,他們做了一整套在 Occlusion Culling 上的 Debug 工具,可以很清楚看到 Occlusion Culling 計算前計算後的結果。

視覺化很重要,尤其是這東西跟美術有關。

接下來去聽了 Dead Rising 2 在網路功能方面的經驗分享。

這遊戲好像賣的很不錯? 整場聽眾有爆滿啊...不過我很懷疑有多少人不是技術背景的,至少最後發問的人裡頭有一兩個...( 問的問題居然是遊戲的銷售量?? )

網路功能,嗯,對我們在 MMO 上面已經有些經驗的人來說,這些分享的內容並沒有太多的不同。反倒是,他們也做了個 工具來監看 Traffic、監看資料同步的結果...就顯示在遊戲畫面上...Real-Time…

只能說,他們真的很愛做工具。不知道是因為專業還是因為人太多?

下午,有一個題目很吸引人。

"Adaptive Order Independent Transparency"

Render 半透明物件不用先排序。

基本概念還是與 A-Buffer 有關。只不過,將 A-Buffer 的第二階段 -- 排序與組成,引入一個 "Visibility Function",以當作權重的方式,計算半透明 Pixel 最後合成的結果。用這樣的方式,刪去耗費時間的排序工作。

效能增加很多。

不過這 "Visibility Function"的計算有些複雜。

接下來的課程是,Bugie 講述 Halo : Reach 遊戲裡網路相關的技術分享。

有一句話寫得好 : "Technology to help multiple players sustain the belief that they are playing a fun game together"

他舉了兩個遊戲中的例子,來看他們把網路延遲藏的有多好。

然後,又看到了 Traffic 監看的工具...也是直接顯示在遊戲畫面上...也是 Real-Time…

DSC01306

他們真的很喜歡做工具...

不過,這工具應該還是有用的,至少他們抓到了一個問題: 一個還在滾動的手榴彈用了很大量的頻寬...

最後一堂課程是超大的一顆地雷...

又沒有其他課程好去,所以就坐著混到下課...

 

今天的像素拼圖長這樣:

DSC01234

昨天那個日本人做的馬力歐已經不見了,應該是工作人員把它拆了。

那個蹲著在拼的,應該就是工作人員。手上有一大包同樣顏色的方塊,拼完了又去拿了一大包來拼。

有工作人員做修正,那這個活動也沒什麼意思了...

GDC 2011 Day 3  

Posted by 藍斯洛 in

Game Develop Conference 今天算是正式開始。

一開始的盛事,就是任天堂社長岩田聰的 Keynote 演講。

DSC01132

DSC01134

說真的,日本人講的英文聽起來有難度,我想他說起來也不會簡單...

所以,在他演講台的正對面有大字報...

DSC01135

演講主題呢,就是內容啦、創意啦、熱情啦...這些東西...

一個小時的演講,中間還讓北美的任天堂主管進來工商服務一段 N3DS…

N3DS

真的是很讚。

中午休息時間,到任天堂的展場去,搶到空位,把玩了一下 N3DS 的任天貓狗,整個裸眼 3D 的畫面效果好逼真啊...

不過這個真的要親眼看,有圖就沒真相了。

其他的四堂課,好像都碰到了大大小小不等的地雷,沒有什麼非常 Exciting 的東西。倒是另一位同事選到了一兩個有意思的課程。

首先是 Autodesk 講他們正在進行的新計畫 -- DNA Language,用來做為 Game Runtime, Game Editor, DCC Tools 之間的資料庫管理橋樑。讓 Asset 的製作與測試,能夠有更快速順暢的 Workflow。

可是,我只是想知道 Asset 的版本管理方法啊... 課程簡介上不是寫的是這個嗎? 你們不能就這樣輕輕鬆鬆帶過啊...

下午,先去聽 Valve 的演講,這場技術性比較高些,可能跟這個演講者老是在玩組合語言有關。

網頁: http://bit.ly/hPCmVW

然後去聽了 BattleField 3 的新的場景 Culling 的方法。

什麼新方法?

把矩陣行列轉過來,讓 SIMD 運算比較快些,也算新方法?

然後講 Software Culling,什麼? 就畫在一張比較小的 Z-Buffer 上然後做 Z-Test ?

我快昏了...

最後一堂課,去聽 AMD 介紹新版 PerfStudio。心得就是 : AMD 用了一張顯示卡,換到了幾十張開發者的名片...

 

今天的像素拼圖是這樣--

DSC01151

那個蹲跪著在拼的應該是日本人,他也不管格子上面寫的是什麼符號,反正就是要從別的地方拆方塊下來拼馬利歐就對了。

我開始覺得,每個人都想要做自己的創意,這張圖應該沒辦法完成了...

GDC 2011 Day 2  

Posted by 藍斯洛 in

DSC01131

這是一道壁報牆,上面的一點一點紅色藍色黃色黑色的小方塊,是由每一位 GDC 的參加者,一人一塊貼上去的。

白色的格子上有小小的標示,寫著方格該貼的顏色,每一位 GDC 的參加者會拿到一塊方塊,自己對著顏色貼上去。

很有意思的活動,象徵著古早時代的遊戲美術一個像素一個像素的"刻點"。

不過那個戴帽子的老兄不知道在幹嘛,一直從別的地方把方塊拔下來黏到他要的地方去...

明天再去看看完成度如何...

第二天的課程,選擇去微軟的 Kinect Develop Summit。

據說 Kinect XDK for Windows 即將要釋出,不知道是不是表示 Kinect 可以裝在 PC 上了。這會是什麼景象?

---------------------------------------------------------------------------------------------------------------------

微軟還是很上道,去聽的人都能夠拿到一份光碟,所以就不用拼命低頭寫重點或是把投影片拍下來。

還送了一小疊很有質感的筆記紙。

一開場的簡介,快講完的時候,有這麼一段--

本來完全不玩遊戲的媽媽,跟參與 Kinect 開發的兒子說,要買 Kinect 來玩,而且,現在每天玩。所以,這是一個遊戲產業的世代革命...

好,這故事從 Wii 換成 Kinect,故事主角從宮本茂的老婆換成某位微軟員工的媽...

老梗。

Kinect 有幾個主題,Joint Filter, Gesture Detection, Speech Recognition, 還有 Mechine Learning, Neural Network。

我們能說,整個系統已經不再是 true / false, 0 與 1 的思考方式,必須改用機率、權重、取樣分佈來想。

而且,這樣的系統裡,取得的資料很多,資料裡的雜訊更多,如何取得能用與有用的資料,就變成是 Filter 的技術所在。

Gesture Detection 也不簡單,因為每個人的姿勢手勢都不同,很多元,所以設計就變得很複雜,要考慮的狀況、要測試的條件也很多。

例如,"伸出你的右手"。

男人女人的伸手方式就不一樣了,老人與小孩的伸手方式也不會相同。

這程式要怎麼寫?

Hmm…

Mechine Learning

我們決定演算法之後,讓機器自己去決定參數與權重...

不知道是不是所有的體感遊戲平台都有這樣的做法,不過對習慣於 Input 始終是 0 與 1 組成的我們來說,應該是很有挑戰性。

課程結束,填了問卷交回。

哇咧,今年沒有 "填問卷送 T Shirt" ?

GDC 2011 Day 1  

Posted by 藍斯洛 in

2011 年的 GDC,是第 25 屆,不過也好像沒有特別盛大什麼的。反而是讓人感覺規模越來越小,就連報名參加所給的一個資料袋,質感都越來越糟...

依照慣例,前兩天是 Tutorial 課程跟一些 Summit 演講。

今天還是參加了一整天的 Tutorial,題目是 – "Advanced Visual Effects with DirectX 11"

--------------------------------------------------------------------------------------------------------

早上第一堂課,介紹的是 DX 11 裡的 Device Context & Command List,多緒繪製的架構。

接下來,是 Deferred Shading 的最佳化策略。包括 Light Pre-pass, Light Geometry Optimization 幾個方法。不過,Light Pre-pass 馬上在下午的課程裡被打槍...

接著是 Civilization V 。

他們用了一個稱為 "Packetized Rendering" 的設計策略,將所有的 API call 包裝成一個 packet,送到 engine 去處理,每個獨立的 render job 可以降低彼此之間的關聯性,甚至沒有關聯。然後可以很自豪的說,"No threading bugs"。

展示了一個很壯觀的 Screen Shot -- 滿滿畫面的兵,底下還秀了CPU 效能,12個核心同時在跑!!

然後是 Dragon Age II ,介紹他們所使用的 DX11相關技術。

他們主要用在 Dynamic Lighting ( Light Pre-pass method ), Tessellation, Diffusion Depth of Field (DDOF), Contact Hardening Shadows 上。

從這裡開始,DDOF 就一直出現了...

根據他們所說, Tessellation 是一個效能殺手。所以,只用在看得到的、很靠近攝影機的地形上。

也就是,這技術並不是什麼都適用的好物...

Contact Hardening Shadows 做出來的 Soft-shadow 效果,比過去用的 PCF Filtering 好非常多。DX11 SDK 上有 Sample,不過,我的電腦還是 DX10的顯卡,跑不起來,只能看靜態的圖...

下午第一堂課,就由 DICE 介紹他們的大作 Battle Field 3。

這遊戲,只支援 DX11,拋棄 DX9。

他們說,BF3 是大作,所以可以推動 OS 以及硬體的更新。

我們在旁邊,表示 .. "一切樂觀其成"...

太樂觀了...

BF3 的 Deferred Shading 並沒有使用 Light Pre-pass 方法,因為 Light Pre-pass 要對 Geometry render 兩個 pass,對 BF3 而言,Geometry 太多,不適用。

BF3 用了一個特殊的想法。

將 Screen Image 切分成幾十個 Tile,每個 Tile 用 Compute Shader 計算相關的 Light Info,這樣,據說可以計算場景裡高達 1000 個點光源...

BF3 的場景裡的物件也是很多的,所以依舊存在著 Draw Call 的 Bottleneck。所以, BF3 將 Instancing 發揮到最大極限,從一個 Object 一個 Draw Call ,變成 "一種" Object 一個 Draw Call...

效能大提升。

最後,BF3 呼籲 : Drop DX9!!

(我們還是繼續在旁邊... "樂觀其成"...)

接下來是一個日本人的介紹。

精神不濟加上日式發音很難懂,以致這半個多小時全部不知道什麼是什麼...

然後,又來 DDOF 了。

主題是 DDOF Solver,不太懂在做什麼,回去要開始找資料開始瞭解。

接下來的主題是 Separable Filters。

是用 Compute Shader 取代 Pixel Shader 做 Image Base Filter 的想法。

舉例就舉例嘛,不知道為什麼,又拿 DDOF 來舉例...

DDOF 看起來好像真的很重要...

然後談到 Tessellation, Displacement Shading, 重點 : 請用在 "Key Assets" 上...

最後,再經過一段冗長的 Post-Processing Performance Optimizing 演講,好不容易,下課休息。