最新版本panda compile中,Andrew被Ruth拉著在討論Max egger的優先任務,沒有新版本東西寫不下去,距離midtem presentation的前兩天,暴風雨前的詭異寧靜。
我猜這篇今天是不可能去打完的,左右現在處在一個意外的真空狀態,紀錄一下已經快一個月沒有更新的生活(週刊->雙週刊->月刊.........what's next?)。
該從什麼地方開始講起呢.........一個月前的暴雪吧.........quarter present前,下了一場猛烈到誇張的暴風雪,一個晚上,雪積到了膝蓋以上。次日清晨,走到門庭前,整個世界被覆蓋在一片白色的大棉被下,所有停在路旁的車子變成一堆一堆隆起的白色沙丘,教堂的下半身整個消失...............幾個人在大馬路上直接拿著滑雪板開始滑起雪來(當時的狀況根本沒辦法通車)。在這之後,連續停課三天,待在匹茲堡超過四年的同學都在說四年來從來沒看過這般大雪,之前在雪天裡說東北的雪比這大多了的大陸同學現在也是直呼嘖嘖,聲稱:比東北的還大還兇猛!
整天窩在家裡,事情還是得幹,我跟Andrew一邊在gtalk上討論,一邊遠端連學校的電腦趕進度(好佳在走前電腦沒關掉),一個texture copy feature搞了這半天沒搞出來已經搞到有點毛起來了。code短短不到一百行,就是在選要放進去的地方一直折騰,雖然也不是說code多就好,但這種慢吞吞的碎活就是讓人幹得心浮氣躁,最後high poly的薩爾達林克model在被我把貼圖到處亂放後,看到egg出來的成品還是乖乖的把貼圖都抓到放到egg檔旁邊,pview時一切正常,也是長吁一口氣,暴雪假後的meeting該是有交代了。
大哥你拿著滑雪板是要幹啥?
loop subdivision完全是資料結構大考驗,一變四,四變十六,給你玩個四五輪資料就破百倍了,點線面交替reference,哪種方法才有辦法省時省空間,大學時學的演算法跟資結給我丟到哪去了........以前的coding習慣又不好,常常直接開個大空間慢慢用,寫ACM玩時還可以這樣睹睹玩玩,這次要給它資料穠纖合度的動態塞進空間裡,出來跑總是要還,大學欠的,在這邊補回來吧。看到粗糙的兔子模型一按個鍵立刻變得光滑細緻,跑出來還是一個爽字,期中考前看到了half edge的資料結構做法,卻又是大嘆一口氣:用這個做法就是最速最佳解啦!我為什麼想不出來........學而之不足,整個學期一直都有這種感覺。
quarter,presentation表現自我感覺良好,只是Deepak說texture copy不用特別細講也不用秀,只講些無關痛癢的東西仍是有點掛懷。MK聽完present後直接跟我來個擊掌:HI FI!Wayne!present 之後的一個中午,組員一個一個被叫到Advisor房間給成績,我拿到個:B........Mike跟Ruth問我有沒有意見時我只差沒有髒字直接問候出來,兩個人一直說這是在鼓勵我繼續努力,看到我有點失望知道我會做得更好,聽一句心理問候一次娘親。原本還在想說是不是只有我遭到這種待遇,當天下午Deepak就開了一場會,整組氣氛凝重,看起來大家都覺得評分有被虧待。幹點不是那個B,都已經研究生這學位也應該是我在念的最後一個學位,去他的GPA,不爽的點是我並不覺得自己不用心,做的事也不會比別人少。除了Andrew沒有人要做egger,被分到這組我也是乖乖學乖乖做,這就是人家看待我在做的事嗎?
踏雪尋梅,千山我獨行
Hugo聽我在吐苦水時隨口說了一句:可這feature感覺就不是會有人要用的東西啊.......都會用command line的人還會這種texture絕對路徑當相對路徑的笨事嗎? 我當然知道這東西感覺很沒用啊.......可我們客戶要求啊。就好像我們說關掉auto shader generator時texture color會爆炸時,跟客戶反映,客戶回說:阿那個沒關係,我們工作時只需要vertex color(後來還是修好那個bug啦,openGL該死的alpha value),那是客戶的要求!!!把客戶服務的高高興興不是本來就是做服務的基本嗎?
客戶?Deepak得出一個結論,雖然說名義上我們的客戶是Disney,實際上我們的隱藏客戶包括panda comuniy以及CMU ETC本身,Max egger那東西ETC要Disney不要,shader generator那東西community要Disney不要。所以,我們得自己找客戶要求以外的東西來做,而且要是能滿足其他兩邊客戶的東西。
你沒看錯!左邊那棟房子只剩上半棟!
Present時Ralph就再嚷說:這些東西.......你們computer science出來的人當然都知道,但我們完全聽不懂啊.......有沒有什麼影片之類的東西,直截了當,像Deepak你之前的Pandai不就有很多有趣的影片嗎?Disney給我們的評語:肯做髒活,不怕在黑幕底下幹事。advanced shader input只是幫助你寫shader方便,並沒什麼辦法給你更棒的shader,revamp egging process是幫你消除掉egging的惱人臭蟲,也不會幫你egg出更漂亮的model,你想看什麼漂亮的東西?客戶覺得我們辦事迅速其他人嫌我們辦事不力?
這作業還是要看格線圖才有那種爽快感
well,都已經過了快一個月的東西現在寫起來還是莫名其妙幹意往上湧,修養還是很差........我不介意做髒活,但我不喜歡人家在我在做黑手時要求我把東西打扮的漂漂亮亮的,然後用漂不漂亮來評斷我為這東西投下去的心思。客戶滿意了。給成績的不滿意,所以現在要想辦法去滿足給成績的。做這邊的東西又不能讓客戶覺得我們不務正業,因為他們希望我們專心弄documentation(panda的manual出了名的殘破不齊),不大希望我們接新的feature(他們說蠻訝意比預期的快,半個學期就幾乎做完一個學期的任務了)。什麼時候這些東西也要遮遮掩掩了?(開會時跟他們說我們這週專心做documentation,不要提auto shader generator的東西!)當學生也要耍政治啊~
方塊酥變成甜甜圈也很有喜感就是了
大約一個月前,Dan從Silicon Valley突然打了一通電話過來,久沒聽到這個第一輪戰友的消息,接到時也是頗為開心,問他怎麼打電話過來: "I need a programmer for the pitch team project, would you like to join us and be the programmer?"呼,還以為你是要來找sound designer的,這麼看得起我?"I'm serious Wayne! You are the most self initiative people I've worked with in the BVW, I really expect your contribution to our team!"心裡那時感覺是真的頗溫暖的:人活著就是拼那一口氣啊!你們想pitch什麼樣的project?"一個中世紀第一人稱寫實肉搏戰遊戲,在webbrowsrer上操作並加上microtransaction機制!"聽到這裡又開始笑了:前半段真標準的Dan Driscoll風格,龍劍騎士硬派格鬥,後半段八成是那次的西岸旅行現學現賣。聽起來很有意思,之前又好像也沒什麼人做過,可是要在webbrowser上跑這種東西你確定吃得消嗎?"我們想用Unity3D引擎,他有一個plug-in可以把遊戲直接buildup成網頁格式!"
OK,看了一下Unity的網頁,感覺是真的相當威猛的引擎,值得一試!還有哪些同學想要跟這project呢?"Ji, Katherine, Martin, Jan, Kent, Mark"聽了到這名單也是嚇了一跳:前兩位基本上就是ETC這一年最強的3D跟2D Artist,還擺了個專們搞生意的製作人,四個有program能力的programmer(有兩個要去當Design),這陣容會不會太噁心了?"沒錯!我們就是要做到驚人嚇死人到噁心的地步,你跟不跟?"好!我跟!
之後除了現在這個project team,我們開始準備這個新學期team的pitch,Dan真的是個硬派角色,敢說敢作,勇於實踐。當天晚上他馬上把腦袋裡的概念弄成投影片,包括世界觀,角色設定,分工圖表,靈感,特色,又自己錄了一段pitch的影片。我們在pitch前又開了一兩次會把內容潤飾了一下,大家主要在意的,還是:"這對ETC有什麼好處?沒有好處,他們根本不會讓我們過"Deepak在聽到我們pitch的點子後,馬上表達:"很困難啦!ETC根本就不在意遊戲這塊領域,五成的faculty從不玩game,九成的faculty不care,你們這種陣容,等於拿掉一個(或是兩個,因為人數實在太多)幫他們接project賺錢的組別,我之前也pitch過一個MMORPG的project,他們壓根沒興趣"所以,又到了政治時間了,明明知道根本不是那回事,還是要講成:遊戲是為了蒐集"人類網路行為研究資料","微交易模式分析"的一個"手段",我跟Mark在討論到這裡時,忍不住罵了一句:"It's fuckin bullshit, fuckin artificial!"Mark:"well, it's politician's world, you got to get used to it!"
Project Ethereal希望二輪順利度過.......
pitch當天,砲火之兇狠超乎預期,雖然早就知道不會很好過,但Jesse跟Drew問題辛辣的程度一副就是要把你釘死在台上:"microtransaction的第一人稱遊戲你沒玩過?" "你沒玩過這game,你跟我pitch這idea?" "點在哪裡?你確定你們這東西真的有任何創新之處嗎?"不是MK在旁邊緩頰擋子彈(MK是我們這輪pitch的champion),死都不知道怎麼死.......走出conference room時感覺背上都是冷汗,每個人都是灰頭土臉,正當我們想說就這樣結束吧,卻又收到我們過了第一輪的消息(有點像金旋那年PO挺進決賽的狀況),絕處逢生之下,當下也不知要怎麼去進一步讓這項pitch更具有說服力,下一步,就是在GDC與矽谷校區的組員們會師啦(講這話實早就已經會完了,這篇文章真的有夠晚生出來),有什麼要講,到那裡在講,現在也沒什麼時間去煩惱那東西了。當Federico把shader input一個人幹掉,GUI/phong shader bug/texture copy做完之後,Disney的要求算是告了一段落,what's next?讓給分的教授們高興。怎麼讓他們高興?做他們喜歡的東西,讓ETC臉上有光的東西:讓panda社群稱讚ETC的feature。所以我們開始到panda論壇徵詢用戶們的意見:你們希望有什麼新東西?做這件事真的實在有夠恐怖,論壇上臥虎藏龍,隨便一個都可能一隻手指把我電翻,現在跑到這種地方說:我能為你效勞嗎?一直很怕會被直接回嗆:"你們ETC又能幫什麼忙?"中間寄信聯絡panda社群第二把交椅rdb時更是得知一項超恐怖的真相,這個接近包辦五成以上panda1.7.0新feature的妖怪,居然是個剛滿十八的大學新鮮人。聽了真的在想我的大學到底時間都花到哪裡去了= =
customizing auto shader generator,這應該是我下半學期要接的任務了。是的,我又被調組了,在春假前一周我被告知先去弄期中presentation要用的demo,Federico打算做個一千盞燈的demo來展示advanced shader input的power,之前的panda3D不支援array的input,用手去餵包你餵到死(後來發現其實有deferred shading這招,也是可以做出類似的效果,只是也是吃效能吃很兇的招式就是),anyway,我跟Panda之後就被分來弄這個千燈demo,如果用panda3d內建的打燈(openGL的產物,餵的參數名字都取的一模一樣= =)極限就是八盞,用shader"理論上"可以達到無限盞(其實用這種硬加的蠻幹方法大概三十盞shader就開始哭了= =),Ruth再看了初步的implement結果就說:如果需要的話,她的tech demo裡面的場景可以借我們來用。好消息!那個tech demo幾乎就是為了挑戰panda的極限而生,充滿了各式各樣的glow map, spec map, normal map跟high polygon模型,如果使用shader的話,可以產生跟原始場景天壤之別的效果,有這麼的東西撐場,真的是再好不過了!
接到Panda把八盞燈點好的初步場景,我開始有種既興奮又有點害怕的感覺:"這麼棒的材料,我能夠把它的美發揮出來嗎?"美術組已經出盡全力了,程式組能拿出相對應的program把場景的"威力"完全釋放嗎?剛彈吉他的小孩子馬上給他一把PRS,他禁受得起嗎!!!!!!(最後一句大概大家比較能理解= =)。其實這問題之前也有跟梁立衡聊過,遊戲的畫面應該是誰負責?現在這個狀況,沒有把東西搞漂亮就真的是你自己的責任了......per-pixel lighting雖然是shader基本到不能在基本的入門程式,但是的確是可以把shader跟fixed function pipeline距離拉開的範例。看到使用自己的shader將場景照出一道微光(attenuation設很大,因為假設會有千盞光 )後,就開始在想:要怎麼讓這盞燈更像一盞燈呢?
還沒有經過"魔法"處理的per-pixel lighting
如果要讓人看到燈產生"炫目"的感覺,要用lens flare,光源暈開,要用glowing shader,光線軌跡,要用volume shader,同一個時間CG的第三個作業toon shader也是一連串布幕下的黑箱作業。直到這一刻,我才發現遊戲裡要打出一盞漂亮的燈有多不容易........在non real time rendering還沒辦法變成real time的現在,原來有這麼多種近似"作弊"的手法,怪不得TD組裡有專門負責這們學問的專人!這段時間,CG用的是GLSL,project用Cg,手頭有的中文參考書(歐陽老大好久以前的學生的著作)主力是HLSL,同時間三種shader langage攪在一起,有種三國大混戰的錯亂感.......
這時要跟人家說那些白點是光誰都不會信= =
CG期中考,啊~~我已經多久沒有聽到這個名詞了......多久沒有考試了........題目其實不會很難,觀念有通都還算好答,只是大概真的是太久沒考手感有點鏽掉,一題parametric function還來不及寫完就交卷。晚上跑到Panda跟小溪家裡去吃鍋,詭異的點是:湯底居然是外國人(Mark)買的,喝了一點小酒,開始漫無邊際的殺人遊戲跟扯淡,這種片刻的悠閒自在,還是很舒服。
再會了!我在亞德利亞海散漫的歲月
週六週日,開始鑽研FBO的用法,有的時候真的覺得openGL有好多難以理解的voodoo knowledge,卡了半天的東西,最後都是用一些很詭異的方式修好(depth_component改成depth_componet32這個最經典!),第一次率先破台完成基本分要求,感覺就是一個爽!( John: OMG! Wayne has finished the project! Everybody just go ask Wayne how to do that!(轉頭)Sit here! You'll be here for a while XDD)歐陽老大!學生謝謝你當年的教誨,學生不希望在國外丟台灣的臉!台灣人不會比外國人差!看著吧!
這句話是拜倫說的? 不!我說的!
講了半天一大堆宛似現在式的東西,我們還在過去式,流水帳又臭又長打不完,GDC一定要分出來獨立講(整個是震撼教育!),好吧!我們現在補到春假開始四天的進度,下一天下一站,舊金山電玩高峰會Game Development Conference!