從 2006 開發符合 OpenGL ES 1.0 的 Software Rendering Engine 與硬體加速整合,到四年國防替代役的 Game Engine 研發,現在於 "遊戲獨立團隊" 採用 UNITY。這一路 "七年" 走下來的歷程,讓我對 "自製引擎" 由愛生恨。
"自製"?甚麼理由、甚麼堅持、甚麼優勢?
過去的我:
- 技術是一切、是優越、是存在、是比別人 "屌大" 的鐵證
- 熱愛 Coding,從無到有一點一滴的經驗累積
- 對 "設計模式" 操弄的自我感覺良好
- 賤到骨子裡的 RD 使命,驅動對技術的無止盡追求
現在的我:
- 技術是手段,不是目的
- Coding 能免則免,超死自己不償命
- 沒有神話的 "設計模式",用對地方才是真強者
- "技術" 等同打手槍,自爽不能當飯吃
回到主題:
"自製"?甚麼理由、甚麼堅持、甚麼優勢?
迷思一:自製比較屌?
真的不會比較屌,屌爆了到是有可能,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的經歷。
所以自製 "勝"?某些觀點上,是的。不過自製最大的問題是,需要有個遊戲與其配合開發,不然可能永遠不知哪裡的設計是有問題的。
而這種專案進行方式,就是標準的:"爽到你,甘苦到我",苦主:策劃與美術。可能發生的悲劇如下所列:
- 資料格式更動,無法相容舊版本,資料重填
- 參數增加,得手動修改
- 提升效能,修改Shader
- Lightmap 格式更新,場景全部重算 ... etc。
結論:
以上 "迷思" 並非刻意貶低 "自製引擎" 的開發。而是希望提醒想以 "自製引擎" 為前題的遊戲開發者,注意思考以上三個問題。
現在遊戲業也開始吹起 "M型社會",專案大者恆大、小者恆小,不上不下死最快。所以不管是 "獨立開發" 或者 "剛起步的公司",慎重的考慮以上三點是必要的。尤其創辦人是技術背景出生,可能更容易陷入 "迷思" 當中。
小弟相信,如有強力的團隊在 "足夠" 的時間與金錢下研發自製引擎,相信都會有不錯的成績。看清楚喔!重點是 "足夠" 兩字。台灣投資人或老闆往往沒甚麼耐心,加上台灣軟體業其實沒有大的成功案先例,自然在資金上的耐性有限。可惜偏偏是沒耐心又愛說嘴,所以 "自製引擎"、"自主研發" 天天掛口邊,成了 "炫富" 的一部分。
這個分工越來越細的年代,是不是有必要養一群 "燒錢" 的 RD 來打造自己的 Engine?如果你的答案 "是",那就認清楚事實:
"在自製引擎沒 Run 過兩、三個專案前,這東西是不會穩定"
Unreal 2 修正了多少年?UNITY 修正了多少年?,大家的RD都非等閒之輩,人家花了四、五年的修正,你憑甚麼一年就成功,還附帶一款驚世巨作?
記得,人家的Target User是 "遊戲公司",不是 "遊戲玩家"!!這才是關鍵。
UnityIN 總編輯:Bric Lin,
Email: ericlin09@gmail.com
Email: ericlin09@gmail.com
曾任職台灣某遊戲公司研發Game Engine,為書籍“OGRE入門指南”譯者,專攻Rendering技術與遊戲開發,目前為獨立團隊CocosPlay主程式
真是感同身受...
回覆刪除THX~ :)
刪除真是太中肯了
回覆刪除THX~ :)
刪除忠肯阿~
回覆刪除THX~ :)
刪除不寫文件,真是要人命
回覆刪除引擎交給專業的 將創意發揮在遊戲性上
回覆刪除大大真是中肯
回覆刪除