2012年8月21日 星期二

七年研發,破 "自製引擎" 的三大迷思!!!



從 2006 開發符合 OpenGL ES 1.0 的 Software Rendering Engine 與硬體加速整合,到四年國防替代役的 Game Engine 研發,現在於 "遊戲獨立團隊" 採用 UNITY。這一路 "七年" 走下來的歷程,讓我對 "自製引擎" 由愛生恨。

"自製"?甚麼理由、甚麼堅持、甚麼優勢?


回答前,先想想 "以前的我" 與 "現在的我",在觀念上有怎樣的差異?

過去的我:

  1. 技術是一切、是優越、是存在、是比別人 "屌大" 的鐵證
  2. 熱愛 Coding,從無到有一點一滴的經驗累積
  3. 對 "設計模式" 操弄的自我感覺良好
  4. 賤到骨子裡的 RD 使命,驅動對技術的無止盡追求
現在的我:
  1. 技術是手段,不是目的
  2. Coding 能免則免,超死自己不償命
  3. 沒有神話的 "設計模式",用對地方才是真強者
  4. "技術" 等同打手槍,自爽不能當飯吃


回到主題:
"自製"?甚麼理由、甚麼堅持、甚麼優勢?

迷思一:自製比較屌?
真的不會比較屌,屌爆了到是有可能,RD優越感作祟。甚麼都自己來,一點一滴的累積到最後遊戲販售,不能否認這樣真的爽。但背後所付出的代價有多少?

首先,巨額的維護成本精算過嗎?假定一個RD年薪只有50萬,這個團隊十人,從無到有的第一個版本快一點兩年,成本一千萬。接下來,持續的 "改進" 與 "維護" 的成本無止境,這中間還夾雜人員的流動與交接等問題。

以台灣的陋習,主管通常不會對 "寫文件" 有所警惕,因為他覺得 "他" 還在、Code可能都是 "他" 寫的,那幹嘛寫文件?但 "他" 沒想到可能有一天 "他" 也會走人,此時誰還有心寫文件、做交接呢?

沒文件的後果就是:誰接誰倒霉。邏輯與架構只能從Code裡一行一行Trace,記費時又費工。好一點的註解從片段能略知一二,差一點的你被框了還不知道。這時,有能力的RD會自告奮勇的說:與其花時間看,不如自己重幹一個還比較快。於是舊的架構被淘汰,新的Engine 由然而生。至於新、舊的好壞,後生晚輩只能從 "傳說" 去考究。這種以 "生命會自行找到出路" 的研發方式,才是讓一個 Engine 沒有機會檢討、改進的最大敗因。

所以千萬別被 "RD優越感作祟" 所迷惑,這背後可是個大錢坑!!

迷思二:自製效能好?
先想一下!這裡說的 "效能" 指的是....?C++實做比較快?或者編譯式語言比直譯式語言有效率?OK!如果你想的是這些,那跟過去的我沒兩樣: " 賤到骨子裡的 RD 使命"。

現在的 Engine 對效能講求的不再只是程序面向的: Code 能跑得多快、FPS 能飆多高。而是開發團隊的整體運行,是否能透過 Engine 的幫忙大幅提升。遊戲內容製程不再強烈依賴程序員才能給力。團隊需要的是對想法的快速實踐與反覆測試。還記得 CryEngine2 在 2007 年 GDC 上的 DEMO 嗎?WYSIWYP (What You See Is What You Play)。當年震撼人心的展示,已成為現在所有 Engine 的標準。

如果你還停留在演算法的 BigO、FPS的高低,那就不講究搂!

請收看 2:32秒片段


迷思三:自製保險高?
不可避免,只要是軟體必定有Bug。自製的好處在Source Code自有,所以任何問題、功能,都能解、都能加。沒錯!這是自製的最大優勢。

用別人的只要沒Code,發生問題解不掉時,真的會讓人像熱鍋上的螞蟻。尤其所挑選的 Engine 剛起步時,問題真的是說來就來,每次版本的更新無不提心吊膽。根據 Game Developer Magazine 對遊戲 "鎗神" 的幕後報導指出,當年 Unreal 2 每三個月一次的大更新,都讓他們團隊雞飛狗跳。



這問題也發生在UNITY身上,這點感受最深的人也不外乎網路某 "J大神"!當年在Muse Game的經歷。



所以自製 "勝"?某些觀點上,是的。不過自製最大的問題是,需要有個遊戲與其配合開發,不然可能永遠不知哪裡的設計是有問題的。

而這種專案進行方式,就是標準的:"爽到你,甘苦到我",苦主:策劃與美術可能發生的悲劇如下所列:
  1. 資料格式更動,無法相容舊版本,資料重填
  2. 參數增加,得手動修改
  3. 提升效能,修改Shader
  4. Lightmap 格式更新,場景全部重算 ... etc。

結論:
以上 "迷思" 並非刻意貶低 "自製引擎" 的開發。而是希望提醒想以 "自製引擎" 為前題的遊戲開發者,注意思考以上三個問題。

現在遊戲業也開始吹起 "M型社會",專案大者恆大、小者恆小,不上不下死最快。所以不管是 "獨立開發" 或者 "剛起步的公司",慎重的考慮以上三點是必要的。尤其創辦人是技術背景出生,可能更容易陷入 "迷思" 當中。

小弟相信,如有強力的團隊在 "足夠" 的時間與金錢下研發自製引擎,相信都會有不錯的成績。看清楚喔!重點是 "足夠" 兩字。台灣投資人或老闆往往沒甚麼耐心,加上台灣軟體業其實沒有大的成功案先例,自然在資金上的耐性有限。可惜偏偏是沒耐心又愛說嘴,所以 "自製引擎"、"自主研發" 天天掛口邊,成了 "炫富" 的一部分。

這個分工越來越細的年代,是不是有必要養一群 "燒錢" 的 RD 來打造自己的 Engine?如果你的答案 "是",那就認清楚事實:

"在自製引擎沒 Run 過兩、三個專案前,這東西是不會穩定"

Unreal 2 修正了多少年?UNITY 修正了多少年?,大家的RD都非等閒之輩,人家花了四、五年的修正,你憑甚麼一年就成功,還附帶一款驚世巨作?

記得,人家的Target User是 "遊戲公司",不是 "遊戲玩家"!!這才是關鍵。





UnityIN 總編輯:Bric Lin,
Email: ericlin09@gmail.com
曾任職台灣某遊戲公司研發Game Engine,為書籍“OGRE入門指南”譯者,專攻Rendering技術與遊戲開發,目前為獨立團隊CocosPlay主程式

9 則留言: