最近跟朋友稍微聊到前公司的事情,想到有個一直想分享卻沒有寫下來的故事。

很久很久以前,有一間遊戲公司,姑且叫它做 E 社。那時候還在紅白機的年代, E 社想到說可以把職業運動做成電玩遊戲來賣,所以跟各式職業運動聯盟簽約,把他們的肖像做到遊戲裡去賣。結果大受歡迎,而且每年只要更新不用整個重做就都會有固定的銷量,簡直就是挖到金礦。

這樣的情況自然看得別人眼紅,有另一間公司叫做 V 社決定跟進,他們也跟職業運動聯盟簽約製作運動遊戲。E 社覺得他們很煩,於是開始跟運動聯盟商量簽訂獨佔授權。加碼授權金讓運動聯盟只授權他們一家肖像權。失去肖像權的 V 社嘗試創造跟現實球隊相仿的幻想聯盟繼續跟 E 社拼鬥,但是第一年就大潰敗,弄得 V 社只好放棄已經經營許久的市場。

不過籃球聯盟沒有被 E 社買通,他們還是堅持不簽獨佔授權。V 社就在這最後一塊戰場上跟 E 社繼續拚鬥。

一開始因為 E 社領先 V 社好些年的製作經驗,所以玩家都去玩 E 社的籃球聯盟 Live,V 社的籃球聯盟 2000 只是小眾。但是漸漸得玩家發現 V 社的籃球聯盟 2000 進步越來越快,甚至有些地方做到比 E 社的籃球聯盟 Live 還要好。而且籃球聯盟 Live 不只新功能出得比較慢,還有很多 bug 過了一年還是原封不動地出現。玩家們開始罵 E 社不長進、傲慢、老大心態。

此消彼長,最後籃球聯盟 2000 佔了上風。E 社覺得再這樣下去會失去整個市場,所以打算大幅重製籃球聯盟 Live,且改名叫籃球聯盟 Elite,打算藉此收復江山,但是事與願違,在發給玩家的 Demo 裡面發生了嚴重的 bug ,這個史稱「耶穌降臨」的 bug 重創 E 社,讓 E 社好幾年都回不了籃球遊戲。

就這樣 V 社享受了好幾年沒有人打擾的好光景,賺到接近兩倍的市場份額讓他們笑到合不攏嘴。但同時玩家之間也開始出現當初批評籃球聯盟 Live 相同的聲音:更新速度變慢、Bug 重複出現等等等。玩家這次改罵 V 社在失去競爭者之後墮落了。

在籃球聯盟 Elite 11 失利之後過了一陣子,E 社突然說他們要以籃球聯盟 Live 13 強勢回歸,這一個舉動嚇得 V 社出一身冷汗。雖然最後 Live 13 功敗垂成,在上市前緊急取消。但是隔年再次世代主機上,E 社終於突破萬難發表了 Live 14,雖然遊戲內容不比對手,但是隔年的 Live 15 改進幅度讓人驚艷,好像當年 V 社追趕 E 社的故事翻轉過來。今年再戰,鹿死誰手亦未可知。


Inception

如果是玩家的角度來看,他們會覺得這是一個龜兔賽跑的故事,誰領先了誰就怠惰了,然後就會被對方打臉。

但是很不巧的,我待過其中一間公司,其實在團隊裡面的成員都很想做新功能、修掉該死的 bug ,他們不是不想去做,而是做不到。這個過程是非常讓人挫折而沮喪的,絕對不是玩家們想像的大家都在翹腳喝咖啡,然後遊戲放著沒在動。

所以為什麼這兩家公司的員工想做卻沒有辦法把遊戲做好呢?

技術債

其實這個故事是兩家公司輪流被技術債壓倒的故事,當初 V 社進步的比較快,就是因為它們的 code base 比 E 社的還要新。所以改動比較容易, bug 也比較少。所以 V 社能追過 E 社,但是時間一久,V 社也開始被技術債壓垮了。至於 Elite 11 跟 Live 13 那時候到底發生了什麼事情呢?其實就是很簡單的砍掉重練:Joel on Software 有一篇很好的老文章在講這件事情:

你絕對不應該做的事

基本上 E 社就跟 Netscape 一樣面對技術債選擇揮刀自宮,然後發現在一年的週期裡沒有辦法從無到有生出一款籃球遊戲。在這樣趕著想要上市,然後失敗的過程中,白白地送了三年給 V 社。

不過雖然代價慘痛,他們還是做出來了。之後的競爭,我想 E 社的包袱會比 V 社小很多。

從 Software Engineer 界來的經驗,開發者應該要時常清理程式,撰寫測試,降低程式碼裡面的亂度,而不是想著時間到要砍掉重練。不過在軟體界裡面都有點難做到了,在開發過程更混亂、需求更常變化的遊戲業界裡面實在更是困難。實際上的狀況就是所有人都怕改東西,因為怕出 bug 。所有人也都不敢加新功能,因為無從加起。在進度緩慢的情況下接近到 release deadline 跟 crunch time ,大家心一橫,反正沒有做完就是死,也就別管什麼漂不漂亮乾不乾淨了,然後 code quality 今年又惡化了一次。雖然有人會想 Crunch 結束之後回來清理,但是更多的時候大家累到放空,回來也忘記自己改爛什麼了。然後下一年的開發又會受到前一年的影響,新功能更難做,bug 更難解。

我還是相信像是 Scrum (控制時程)或是 TDD (控制程式亂度)是有能力應對這些狀況的,不過實際上做過之後發現不是把教條都實踐過一遍之後就能一勞永逸。而且很多時候要推動是有參雜到一些團隊互動跟政治方面的問題的。我是很想分享說我找到了什麼解法,但是實際上我只能跟大家說這個故事,點出大家可能沒看出的點,要分享可能還要修練一陣子。

如果各位還想要再類似的故事的話,這邊還有一個我猜也是相同的故事。

Dota 2 Updates Have League Of Legends Players Threatening To Swap Games

最近我們家老闆對於 Scrum 這個題目有個分享,有興趣可以參考一下:

《Implosion》首席工程師以「別太敏捷遊戲開發」為題 闡述團隊不斷進化的心路歷程

我們下次再見:)