2011年3月8日 星期二

GDC 2011 Day 5

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

今天的開場,由 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

2011年3月4日 星期五

GDC 2011 Day 4

中午又跑去任天堂的展場去玩 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

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

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

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

2011年3月3日 星期四

GDC 2011 Day 3

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

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

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

2011年3月2日 星期三

GDC 2011 Day 2

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" ?

2011年3月1日 星期二

GDC 2011 Day 1

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 演講,好不容易,下課休息。