2010年3月26日 星期五

My GDC 2010 (Day 5)

GDC 最後一天。下午上完課,晚上就要到機場去,很操...

Day 5

第一堂課,本來要參加一個滿有意思的課程,但是,由於出發得較晚,結果因為人數已滿而進不去。( 我又要抱怨這糟糕的課程安排了... )

跑去聽了一場比較另類的題目,"Paint-by-Gender: How to Add Pink Gameplay to Your 'Blue' Title (and Still Keep All the Boys Happy)"。

意思是,如何讓你的遊戲可以受女生歡迎,男生也不會太反感。

底下有Check-List

Female-Friendly Checklist

1. Detailed backstory for characters and the world

2. Major female character(s), non-stereotypical

3. In-game relationships, especially ones the player can affect

4. Emotional moments

5. Moral complexity in characters and situations

6. Opportunities for non-violent action

7. Gameplay variety that creates strategic options

8. Important choices

9. Meaningful victory condition

其實說穿了,就是要多一點的Fu,少一點暴力,女性角色不要只是花瓶...

第二堂課,去聽了模擬市民3,講述他們怎樣去模擬遊戲中的每個小人。

感覺上就是,這是一個很龐大的資料驅動式系統,每個小人有 motives, traits, long-term progression, production rules, …

還看到了一個2D Top-view,專門用來測試小人的生活狀況的測試工具...

今天下午,GDC 到 1600 就結束,下午課程只有兩場。

下午第一場去聽的是,"The Rendering Tools and Techniques of Splinter Cell: Conviction"。

內容主題好幾個,Occlusion Query, Cascaded Shadow Map ( 啊...又見到它了... ), SSAO…

他們用的Occlusion Query方法,是改良過的 Hierarchical Z buffer。效果還不錯。

Cascaded Shadow Map就不多說了。

SSAO的部分,偷吃偷得很兇。完完全全是事先算好,甚至美術修過圖的一張貼圖,然後用類似 lightmap 的方式,計算貼圖軸後貼上去。效果沒差多少,但是效能差很多...

( 我們來參加 GDC,簡直就是來觀摩各式各樣的偷吃步的... )

最後一場,本來並沒有期待很多,不過卻真的有些收穫。

"Uncharted 2: HDR Lighting"

一開場,講了很多 Gamma 曲線的東西,本來搞不懂是什麼,後來在朋友的 Blog 上看到 Gamma Correction 的觀念,才瞭解了。

簡單說,美術製作的貼圖素材,所有的顏色與亮度數值,都不是線性的,而我們在 Pixel Shader 裡,卻拿這些數值去做線性運算,這中間就有誤差了。

這就是人家比我們專業的地方,就是人家可以上台發表,我們只能在台下鴨子聽雷的差別。

故事還沒完,Gamma Correction 之外,他們還做了所謂 Filmic Tonemapping 的修正,修正掉過亮以及過暗的地方。

再來是SSAO。印象最深的,就是 "Who needs sphere? A box will do just as well"。

用個盒子算AO就好啦。 ( 怎樣? 又觀摩到一個偷吃步... )

最後呢,講述了他們的 Rendering Pass 架構,以及他們很自豪的最佳化的做法。不過,這部分完全是 PS3 硬體上的東西,真的是有看沒懂。

( 就在那一瞬間, 四個 Cascaded Shadow Map 畫在一張貼圖上的畫面,又閃過在我眼前... )

 

THE END

2010年3月22日 星期一

My GDC 2010 (Day 4)

GDC 的講題,分成幾類,程式、美術、設計、製作等等,參加 GDC 的人也算是各領域的人都有了。不過,有點要注意的是,可以的話,最好不要跑到別人的場子去。

例如昨天 Blizzard 的場子就是程式領域的,所以,當程式人聽到這麼重要的 Hotspot 分析工具, Designer 卻覺得 "not so valuable" 的時候,底下會響起一片 "你們真是不識貨啊" 的笑聲。

不過程式人在美術人的場子裡也好不到哪裡去。根據我們美術同事轉述,以下是演講人講述在他們公司裡的對話:

美術 : 「這個功能可以做嗎?」

程式 : 「不行」

美術 : (中指)

程式 : (當作沒看見)

美術 : (遞...)美鈔

程式 : (眼睛上全是Dollar Sign)

「兩天後,我們有了這個酷功能...」

( 類似的故事好像有發生在我跟我的美術好友 Louis 的身上,不過我當然是不記得的啦... )

Day 4

一大早參加的課程是由冰島的 CCP (做 EVE 的那家公司)演講的題目,"Code and Complexity: Managing EVE's Expanding Universe",演講人是個金髮正妹的程式設計師,大清早看見金髮正妹的同行,一整個讓人神清氣爽啊...

好吧,內容。

內容是,EVE Online 營運了七年下來,他們怎麼去控制程式的各種版本,各種狀況。版本控制方面,用了四條 Stream—Dev, Stage, Release, Hotfix,沒有很多的分支。程式碼方面,有幾個重要的點,

Think ahead – simple, clear, and clean

Follow a coding standard

Think big – optimize

Think carefully

Balance features vs. technical debt

很重要的就是,不要去標新立異,寫一堆別人很難看懂的 Code,也不要去做一些技術性很高,但沒什麼用途的東西。

接著下一場,全會場只有一堂課程,就是 Sid Meier 的演講。大製作人,所以逼著全部的人都要去聽。我就不多寫了,同行的 Designer 說,沒什麼新鮮的。

下午第一場,聽的是"Streaming Massive Environments from 0 to 200 MPH",講的是他們的賽車遊戲,如何將賽道 Streaming。

用了很多的技巧,似乎是能節省時間的技法全都用上了。LOD, 貼圖壓縮, 甚至連 Disk I/O Cache 都考慮進去了。因為有這樣的需求,所以他們自己發展了一套 Pipeline 工具。

也算是很猛的啦...

接著呢,不小心選到一場地雷課。聽了十分鐘就跑出來了。可是課程的安排很糟糕,又沒別的課好去,所以就又去微軟講 Windows Phone 7 的場子裡,看看還有沒有禮物可拿...

本日最後一場,走到了 Intel 的場子,聽聽有沒有什麼多緒的新概念。

不多。

新的 Windows 作業系統裡好像有個 Slim reader/writer locks 和 Condition variables,據說比 Critical sections 還要節省資源,可以找天來試試看到底是什麼東西。

2010年3月21日 星期日

My GDC 2010 (Day 3)

現在開始進入正式的 Main Conference。

Day 3

第一場重頭戲,就是 Blizzard 的 keynote 。鐵定會爆滿,所以我們早早就從飯店出發到會場去排隊。

題目是 "Designing for Performance, Scalability & Reliability: StarCraft II's Approach"

一開場,先講幾個 Blizzard 的 Core Value。

Gameplay first – the “invisible” tech. ( 這個尤其重要,所以放在第一個... )

Think globally – games are global

Commit to quality – we are all QA

接下來,展示了 StarCraft II 的 Performance 分析工具。是的,這一場演講的最主要主題,就是 Blizzard "自己做" 的效能分析工具。雖然是自己做的,但是功能絕不輸專業的分析工具。

( 後來想到,你們就是因為自己做這個工具,才會讓遊戲 Delay 這麼久吧? )

B社抱持的想法其實也不是沒道理,因為第三方的效能分析工具很難做到即時的分析,換句話說,即使有很多分析的資料,但是依然沒辦法跟遊戲畫面或狀況結合起來,對於分析效能來講,效果總是打了折扣。

所以我們就看見了,在 StarCraft II 的遊戲畫面上又多了一層效能分析的 Layer ,所有的分析曲線都能夠顯示在上面。

程式團隊還另外做了一個分析地圖 Hotspot 的工具,可以讓 Designer 了解地圖的效能狀況。有人問,這東西 Designer 覺得怎樣,答案是 : "Not so valuable…"

接下來,就像我之前說的,因為課程時段安排的很糟糕,我又多出了很多時間。

於是跑去聽了一場主題是 "The AI of BioShock 2" ,內容是跟製作流程相關的演講。

幾個重點:

Less document, more prototype

Don’t over concept & over document

Prototype early

Prove features before enter production

Work iteratively as a group

下午,時間還是很多,所以到底下的展場晃了很久,看了一些有興趣的攤位。

下午的最後一場,跑到了戰神III的課程去聽。主題是戰神III的影子。

Cascade Shadow Map。

對,又是它。

也許是PS3的運算比較快,記憶體比較小的關係,這裡的 CSM 運算,跟PC上的運算有些不同,但基本理論跟演算是一樣的。

而戰神III也另外做了一些最佳化的處理,減少運算量,這部分,PC上倒是也可以應用的。

簡單講,兩個偷吃步。

看不見的不要算

看不清楚的也不要算

2010年3月18日 星期四

My GDC 2010 (Day 2)

今年的GDC是在 3/9 至 3/13 ,所以我現在寫的是回憶錄...XD

Day 2

早上還是待在微軟的場子裡,聽了兩堂關於 DirectCompute 以及 Tessellation 的課程。

DirectCompute 主要在介紹 Compute Shader 的使用( 對..今天也還是Tutorial.. ),重點在於,Compute Shader 本身就是為了做平行化計算而生的,所以各式各樣我們在做平行化、多執行緒的程式所需要考慮到的問題,例如Shared Memory, Atomic Operation...等等,都在這裡一一出現。

平行處理始終是個大課題啊...

在 HDR 計算時,可以將平均亮度的計算拉到 Compute Shader 來做,這算是很好的應用了。

DirectCompute 是 DX11 的規格,不過某些 DX10 顯卡已經有 Compute Shader 可用,DX10 也有函式可以呼叫來使用說。

Tessellation 課程的演講人是個華人,他說大部分的 DX SDK Sample 都是他寫的。

這個課程的主題,就是介紹幾個 Tessellation 的 Sample,每個 Sample就解說一下做法,然後把範例跑一跑,還不算太無聊。

範例咧,在 Dx11 的 SDK Sample 裡都有。

下午,微軟的課程就走到即將發表的 Windows Phone 7 作業系統上了,所以我就先到了 iPhone 的場子去。iPhone 有一場很有意思的講題 -- "如何讓你的 iPhone App 保持 Apple Store 的排名上"。

答案就是,跟我們的MMO要保持在遊戲社群網站排名的手法一樣...

持續的做更新

節慶的時候出個更新做 in-game 活動

網站上面弄點相關新聞

官方人員有事沒事在社群網站上放點消息,跟玩家溝通

...

MMO Game, Mobile Game, Social Game, ... 只要是在網路上玩、網路上營銷的遊戲,操作手法都極為相似啊...

下午最後一堂課,又回到了微軟的場子裡,聽聽 Windows Phone 7 這個系統。

微軟打算把這個系統跟 XBox Live, Windows Live Games 結合起來,然後把 Apple Store 的功能、Facebook 的社群功能全部包在這裡面...

換句話說,就是整碗捧去啦...

一天結束,有始有終,又填了一份問卷,又拿了一件微軟 T-Shirt

2010年3月17日 星期三

My GDC 2010 (Day 1)

到了會場後的第一個感覺,就是規模縮小了。

過去兩年都使用了西、南、北三個館,今年只剩下了南北兩個館做為會場。

課程變少了,而且課程的安排很糟糕,常常會是,要不是這個時段沒課可上,就是想上的課衝堂衝很嚴重。例如,有個時段 Program Track 的課,只有兩堂,而另外有個時段,Program Track 的課少說有八九堂,其中NVidia跟AMD還各佔了一堂課,這是怎樣? 逼我們選邊站嗎?

GDC五天,前兩天是 Tutorial & Summit 的課程,後三天才是正題 Main Conference。

Day 1

一整天待在微軟的場子裡。

一入場,微軟就先發個筆、筆記紙、還有投影片檔的 CD ( 省得裡頭的人拼命把投影片拍照... )

一開始,題目是VC 2010。

有點鳥。

不過,聽到一個很奇特的東西," Move Constructor "。

回頭翻光碟片,google了一下,原來這是C++的新規格,號稱 C++0x。VC 2010會支援全套的C++0x規格。

C++0x FAQ

Move Constructor 可以處理掉某些效能上的問題,應該是個頗實用的東西。

接下來聽到的是,xperf的介紹。

這是一套效能分析的工具組, Windows Performance Toolkit ,功能很強大。甚至能夠收集處理Disk I/O, seek time, content switch的資料。

找時間要抓來瞧瞧。

接著下午聽了一個重頭戲, Cascade Shadow Map 。

只不過裡頭的內容,早就發表在 MSDN 上了。微軟還是有點混。

Common Techniques to Improve Shadow Depth Maps

Cascade Shadow Map 在當前,基本上已經成為影子計算的最佳解法了, God of War III 用到它,Uncharted 2 也用到它,更不要說PC上的遊戲了,WOW已經用了,你要不要跟進咧?

微軟一天的課程結束,把問卷填一填,換了一件 T-Shirt。還滿好穿,不過就是大了點。

2010年3月8日 星期一

GDC前的舊金山一日遊

今年的GDC是從週二開始,週一是我們多出來的一天調整時差以及城市旅遊日。因為是週一上班日,所以連續陪了我們兩年的地陪朋友,就沒辦法再來帶隊了。

這一回,因為也還是有幾位頭一次來舊金山的同事,所以,這一日遊的行程,就還是那樣,萬年不變的舊金山行程景點--漁人碼頭和金門大橋。

只不過這一次,我們是在舊金山自己找交通工具。

去漁人碼頭,叮噹車一定是首選。

DSC00828

DSC00829

叮噹車最有 fu 的搭乘方法呢,就是抓住車旁的欄杆,然後一路上這麼掛著,到了站,直接跳下車。不過今天早上氣溫很低,這樣掛著吹風不是好事...

我們從 Powell Street 上車,經過幾個上下坡,就可以到漁人碼頭。

如果叮噹車沒有壞掉的話。

DSC00831

就在最後一個下坡之前,叮噹車壞掉了,只見前面的駕駛員 ( 很高很壯,就像哈利波特裡的海格那種體型 ) 跳下車,大喊"Take off”,叫後面的售票員下車,然後..兩個人就這樣連人帶車..在“推車”啦!!!

車子開始動,兩個人就跳上車,前面的駕駛員用煞車控制車速,就這樣讓車子滑進了終點站。

DSC00834

DSC00837

這次來漁人碼頭,也還是只有遠遠的眺望惡魔島,真的,如果還有下次的話,應該要坐船到惡魔島上去逛逛。

DSC00839

吃完午餐,一群人就走到公車站牌,坐公車到金門大橋去。公車很貴,成人票2元。( 不過後來才知道,這個票不是算次數的,算時間的....)

這次到金門大橋,就可以有很充裕的時間多走一走了,前幾次真的只是拍照來個到此一遊而已。

DSC00847

DSC00853

橋上還有兩個警告,貼得到處都是。

DSC00852

不准從橋上丟東西或飛彈(??)

DSC00854

『還有希望,打個電話吧!』『從橋上跳下去的結果是致命而悲慘的..』

兩個景點晃完,就回到飯店房間宅一下,準備到GDC會場去領識別證去....