獨立團隊是如何飛上高天的:《浮天小子》開發手記

作者丨星詠

媒體人。甜食控,掌機雙持,雜食各類書籍。

編者按:這是一篇非常非常長的開發手記,詳細記錄了《浮天小子》(Heroki)的開發經驗和教訓,原文發佈於Gamasutra,由觸樂編譯。這款遊戲曾經獲得蘋果的全球首頁大圖推薦,你可以點擊這裡來獲得詳細的遊戲評測和視頻。開發者對評測中提出的諸如「關卡過長」的一些問題,給予了正面回應。同時把自己在開發過程中走過的彎路一一細數,想必能給各位遊戲開發者一些借鑒。這裡是他們的官方博客,裡面有更加詳盡的資料。

和其他所有獨立遊戲開發手記一樣,所有的故事都開始於一句:「如果我們……」

當iPhone3GS推出的時候,Michael Balm(音樂家,特效製作)是我們之中第一個買蘋果手機的,並且把它看做一個嚴肅的遊戲設備。他和Bobby Bouman(3D效果製作)詳細交換了相關的意見。不過在當時,Bobby Bouman在Triumph Studios製作某個3A的主機遊戲,他覺得手機遊戲實在太過簡單,而且也不看好移動設備作為遊戲平台的前景。

隨著時間流逝,iPhone逐漸證明了自己在遊戲方面的潛力。我們逐漸產生了「在這個平台上搞點什麼」的想法。一天夜裡,當我們一起滑冰的時候,Bobby和Jeffrey Kamermans(程序員)聊起來移動遊戲開發的事情,並且最終同意加入我們。而在鹿特丹的一次旅行中,我們邀請到另外一個朋友, Jimmy de Meza,來擔任遊戲的概念設計。

如果我們把自己的專長都集中在一起,會做出怎樣的遊戲?由於我們都有自己的工作,所以遊戲的開發只能在業餘時間完成。這就決定了這款遊戲必須具備兩個特點:要足夠小(沒錯,小),要足夠有趣。

開發團隊Picomy的合影

在一開始的時候,我們有無窮無盡的點子和想法。為了檢驗這些點子的可行性,我們開始為這些點子匹配合適的遊戲機制。我們所想到的第一個遊戲十分簡單:玩家在遊戲中需要操作一輛載滿了乘客的公交車,在一條顛簸的路上行駛,汽車每顛簸一下就會有幾名乘客掉出來,最後在終點以所剩的乘客多少來定勝負——對於我們來說,這個遊戲足夠簡單,也足夠有效地磨合了團隊。

團隊的所有成員都十分喜歡「有趣」甚至是有點怪異的遊戲機制,我們決定通過自己的作品,探索移動平台上可能的遊戲機制。在製作遊戲的過程中,負責程序的Jeffrey正在做其他完全不相干的小項目,但是他將自己的靈光一閃告訴了我們。多虧了他的點子,我們第一次發現了最適合觸屏設備的操作方式:在觸屏設備上,我們可以把一個物體進行360度旋轉,推來推去。就好像一陣風把屏幕里的世界吹過一樣,你的指尖就是那陣風!這是第一個得到我們所有人認可的遊戲原型,太完美了!

很快,我們就發現這個新的思路背後有無限的潛力。所以我們就中止了「公交車」項目,全力發掘這個新點子的潛力。根據這個機制,我們最初的遊戲原型是一個迷宮遊戲,玩家需要在不驚動任何守衛的情況下走到終點。開始,我們覺得一年怎麼也能做完了。沒想到,這個小點子做成了一個大項目,而且居然做了有5年。

丨 我們做對了的事情

新平台上的操作方法

在一開始,我們就知道自己必須圍繞新的操作方式來做文章。核心玩法一旦確定,我們自然而然地產生了很多新的想法。而我們最終的目標,就是做一個向諸多經典遊戲致敬的冒險遊戲。

嚴格來說,《浮天小子》並不能算作平台過關遊戲,因為它會飛!之所以給它增加上飛行功能,為了體現遊戲獨特的操作。遊戲在保留了原有的平台遊戲的要素和挑戰性,同時因為有了新的操作方式,又大大提高了角色的自由度。

遊戲主角Heroki看起來和一個淘氣的小男孩一樣

Heroki可以去到地圖上任何一個地方探索——我們在設計探索地圖的時候也試圖將兩種玩法結合起來:玩家既可以幹掉那些敵人;也可以躲開那些敵人不做理會,不過這樣做的話,玩家會喪失掉一部分挑戰性和樂趣。我們在設計關卡的時候,時刻提醒自己:我們的關卡是用來邀請玩家探索,引導玩家戰鬥,而不是難為玩家的。但,具體要怎麼戰鬥呢?

傳統的平台遊戲是通過跳躍或者是把敵人踩扁來進行攻擊的。但這種方式並不適合我們的遊戲,因為我們的Heroki會飛,讓它直接跳起來會顯得有點蠢,所以我們需要一個更符合遊戲風格的角色跳躍方式。而如果允許角色隨時隨地都能攻擊,我們又認為太過簡單,所以,我們想通過一個類似「扳機」機制來對攻擊的時機做出調整。這個「扳機」應該在點擊之間就可以觸發,當玩家點擊目標的時候,Heroki就會自動朝向那個方向;當玩家按住目標的時候,會觸發新的機制:Heroki會拿起箱子,按住目標的時候調整方向,當玩家鬆手的時候它會把箱子丟出去,這是他基本的攻擊手段。這種攻擊的流程是受到了彈弓的啟發:按住、拉回來、射擊。

這是一張自帶BGM的圖

到了這個時候,我們已經有了所有的基礎遊戲機制。但是當我們自己試玩遊戲的時候,總是覺得缺點什麼:遊戲的節奏在有些地方總是顯得太慢了。所以,我們加入了一個新的機制:自由落體,Heroki可以進行自由自在下潛,這讓整個遊戲的節奏都變得更快。玩家通過快速單擊就可以實現這個操作(根據選擇模式不同略有區別)。「自由落體」是《超級馬里奧》和《索尼克衝刺》里的跳躍,只不過是反方向的——它是我們遊戲機制之拼圖上缺失的一塊,有了它讓整個遊戲的節奏和深度都更加完整。

隨後,我們又加入了「衝刺」、「背刺」和大環境中風隨後,我們又加入了「衝刺」、「背刺」和大環境中風力的影響等附加能力,試圖讓遊戲變化更多。因為有了風的影響,我們必須設計一套新的觸發機制,這樣才不會和原有的機制有所衝突,比如說從屏幕邊緣畫出風的軌跡。在這之前,我們並沒有見過類似的操作方式,但是這個方式出奇地好用。

在觸屏設備上,不通過任何虛擬按鍵設計如此之多的手勢,並且對每一個都明確區分、防止誤觸是一件很有挑戰性的事情,尤其是當我們決定只用一根手指就完成全部操作的時候。同時,所有操作必須足夠簡單,因為只有為數不多的幾個手勢是可以被用到觸屏設備控制上的。我們客服了這些挑戰,最終呈現出來的成品看起來十分簡明易懂。

美術方面

我們希望《浮空小子》的美術風格能被足夠多的人所接受,這樣玩家才會耐心去探索遊戲的每一個角落。並且希望能讓玩家感覺到自己置身於一個美麗的幻想世界中。

在確定現在的風格之前,我們也做了一些嘗試,但是從頭到尾的大方向沒有變。我們的遊戲應該有一副老少咸宜,造型有趣,顏色鮮明的好皮相,既可以被廣為接受,而且還讓人印象深刻。

這是我們最初的概念圖:

概念圖

我們從小時候的那些遊戲中得到了豐富的營養,比如《超級馬里奧》《大金剛》《超級索尼克》《星之卡比》,每一個遊戲都有自己獨特的風格。就Heroki而言,我們期待這個角色能有很高的辨識度。比如他用來抓取東西的長胳膊,可以讀取表情的大腦袋,小小的身體和短腿,都說明這個角色是偏重飛行功能的。

之所以選擇3D遊戲是為了表現空間感。當我們開始製作《浮空小子》的時候,iPhone 3gs的內存並不足以實現我們想要的效果。如果製作2D遊戲,很容易出現內存崩潰的情況,用3D的就可以解決這個問題。我們決定使用通用材質,這樣可以製作許多不同的場景和形狀。當2D圖像轉化成3D圖像的時候,我們儘可能保留了2D概念圖的風格,很高興我們做到了!

耗時又長又累人的AO效果

隨著開發進程的推進,我們逐漸增加了越來越多的視覺特效:實時陰影、 邊緣光材質球、 明暗漸變、溶解特效、鏡頭耀斑等等。很快我們發現,這些效果並不適合2D表現,我們需要一個別的東西來營造氛圍。所以我們將自己的注意力轉到環境光遮蔽(ambient occlusion)上,這讓我們可以在保留2D效果的基礎上增加景深。唯一的問題在於我們的引擎不支持環境光遮蔽的效果,所以最後決定用頂點著色的方法來手工來增加環境光遮蔽的效果。手工加特效的好處在於,可以把精心挑選的顏色和材質紋理進行最合適的匹配——我們甚至還配出了全局照明的效果!實際上,使用單調的黑色只會讓畫面看起來十分「臟」,所以對於顏色進行細微調整十分重要。但,手工添加環境光效果也有一些弊端:這個工作十分單調,而且耗時十分長。

音效和音樂

《浮空小子》的音樂和音效為整個遊戲奠定了基調,歡快的節奏和Heroki飛行時的胳膊一起搖擺,希望各位玩家能夠聽到就開心起來。

雖然我們的音樂幾易其稿,但其中「歡樂搖擺」的調調從未改變。我們在遊戲中用了大量動態循環的音樂,比方說,當Heroki在村莊的時候,玩家所聽到的是村莊主題曲和主旋律的混音。我們在大多數場景都用了這種方法增加背景音樂的豐富程度。在遊戲地圖選擇界面時,當玩家切換不同的地圖時,背景音樂會強調不同的樂器;而當玩家在水下的時候,背景音樂也會為之一變。這些都是十分微小的改變,但可以讓玩家的視聽體驗更好。在《浮空小子》中,總共有40首不同的音樂(包括劇情過場)。

遊戲的所有音效都是配合當時音樂的基調(global pitch)。從總體來說,遊戲音效應該比音樂的音調要低一點,展現一種不同的調性。使用基調進行音效製作,可以很好地解決這個問題,達到最好的環境音效。我們最後在遊戲中使用了900多個音效來營造氛圍。

合適的開發工具和優化工具

《浮天小子》所使用的是開發者自研的遊戲引擎

在2010年的時候,像是Unity或者是虛幻這樣的引擎都十分貴。我們沒錢買這些引擎的商業許可,所以就自己做了一個。這讓我們對遊戲引擎有了百分之百的掌控權,同時,開發引擎的過程也為我們提供了不少經驗。

使用自研引擎其實有非常大的優勢。我們可以輕而易舉地在穩定性、幀率,以及載入速度上達到最好的效果。所有的部分,都能在不增加垃圾進程的情況下得到最恰當的優化。因為我們對遊戲引擎有著完全的掌控,所以成功實現了在蘋果全系列設備上都能以60fps的速度,向玩家展示華麗的特效和陰影效果。即使在老機器上運行遊戲,我們也不需要犧牲視覺效果作為代價。這證明,我們當初選擇自研引擎是正確的。

不過,自研引擎也有一些缺點,構建一個可用的引擎十分花時間。DIY引擎一方面在拖慢你的工作進度,另一方面在磨損你的耐心。控制好工作進度是非常非常重要的一件事,而這正是接下來要談到的內容。

總體來說,我們的Picon引擎最後成為了非常有用的工具,我們為它而驕傲。

業餘開發=比較小的可能會有資金問題

對於手機遊戲來說,5年的開發時間實在太長,甚至是聞所未聞。主要是由於是利用業餘時間開發,所以我們敢說自己有著全世界最寬鬆的遊戲開發環境,想怎麼做就怎麼做。對於我們來說,沒有死線的壓力;SEGA在時間方面對我們也沒有步步緊逼,給了我們相當大的自由度。我們可以拍著胸脯保證:我們自己也很愛玩《浮天小子》,並且我們把所能想到的點子都放在了遊戲中。

我們的成員都有穩定的收入來源,並且沒有直接在做遊戲上花錢(除了時間、必要的軟體許可和個人貸款什麼的)。儘管會有一些麻煩,但是這種開發方式讓我們的成員都感覺很舒服。

左圖為2012年遊戲成品,右圖為2013年遊戲成品

丨 我們做錯了的事情

工作進度

因為我們主要是以進度為中心,並不能投入足夠的時間去熟悉合適的工具。製作關卡時,選擇合適的工具十分重要。在開發的最後幾年,我們沒能在在關卡編輯器上運行過遊戲,也不能在Mac的模擬器上運行遊戲——因為遊戲太大了!

為了測試遊戲,我們不得不:

1、提交文件到伺服器,然後等著,直到壓出來一個合適的工程文件;

2、把工程傳到Test Flight或者iTunes Connect;

3、從Test Flight下載遊戲到手機或者平板上,這時候才能看到測試版遊戲有什麼問題。

2015年的正式成品

我們必須在「做(找)一個好工具」還是「做一個好遊戲」做出選擇,很明顯,我們選擇了後者。但我們不知道這個選擇是否正確:好工具無疑可以提升生產效率,不合適的工具會浪費時間——我們在反覆的上傳和等待中深刻地認識到了這一點。

除了引擎方面的問題,異地工作並不像想像中那麼高效,這也拖慢了我們的遊戲開發進度(平時都是各自在家開發遊戲的)。我們大多數溝通都是通過Skype進行,每次必須十分清楚地詢問對方才能避免誤解。即使這樣,依然時不時會出現成員之間對於一個玩法解讀不同的情況。萬幸的是,最終我們適應了這種遠程工作關係。

在項目快結束的時候,我們終於可以在同一地點工作了,這段時間我們的工作效率十分高。一同工作讓我們的創作和測試流程以及開發進度更加快。

毋庸置疑的是,我們自己工作進度控制十分差。不過,這種寬鬆的流程正是激發我們創造力的因素之一。不管寬鬆或者是嚴苛的工作流程,大家能一起工作,這個事情本身就是一份有趣又有益的經驗。

計劃

好的計劃是成功的一半,它應該能對項目當前的進展有一個大概的描述——我們用一種非常慘痛的方式才認識到這一點。

關注了我們社交媒體的人,都會注意到:在遊戲完成之前,我們說了很多很多遍「要做完了!」。

我們說了很多遍「要做完了!」

我們發現一個制定按部就班的計劃會花費很多時間,但我們都沒那樣的閑心。結果,我們做了一系列小計劃保證項目順利推進,但這些小計劃並不能做到總攬全局,也不能讓我們看到還剩下多少工作沒做。如果有一個切實可行的計劃,會讓我們對開發進程有更明確的認識。

我們向大家保證,已經好好地吸收了這些經驗教訓,在下一個項目中絕不再犯。

人際支持

在業餘時間做這種規模的遊戲,需要我們每個人都做出一些犧牲。對於項目的熱情讓我們放棄了一些陪伴家人、朋友和伴侶的機會。這些犧牲對我們的個人生活造成了一些影響,令遊戲開發的最後階段舉步維艱。

試玩

雖然我們自己承擔了大部分遊戲測試的工作,並且還找了專業的測試人員進行協助,SEGA方面也給了一些行之有效的建議,但還是發現這些測試結果遠遠不夠。

在遊戲推出後,我們發現一系列的Bug,這些Bug無一例外的都可以在測試中發現。比如在iPad Mini上遊戲會閃退,這主要是由於設置了錯誤的材質大小,而導致內存崩潰。這個問題很容易解決,但因為我們沒有在iPad Mini上測試遊戲,所以沒有發現。由於類似這樣的Bug,導致一部分玩家在App Store上打出低分。

在遊戲推出後的幾天再更新一個Bug修復版已經成為iOS遊戲的常態。4天後,在我們修復這個問題以後,我們收到了很多積極的回應,App Store的評分也有顯著的提升。

(對於移動遊戲玩家來說)關卡太長了

在我們自己玩遊戲的時候,可以在5到10分鐘就完成一個關卡。我們收集了幾位玩家總的通關時間,發現平均每位玩家完成一關的時間在20到30分鐘。雖然這不是什麼致命傷,但我們發現,總有玩家在意料之外的地方卡住。

既然有喜歡某款遊戲的玩家,就一定會有不喜歡某款遊戲的玩家。我們很難說清楚到底什麼遊戲更加適合移動遊戲市場。但現在我們知道,在iOS平台上玩家比較喜歡短小精悍的遊戲流程和簡單易懂的遊戲設計。這個結論看起來如此簡單易懂,但是和我們的初衷相反——我們的目標是製作在視聽效果和遊戲性上都能達到主機品質的遊戲。因為市場上缺乏這樣的作品,所以我們想要把這樣的體驗在帶到移動遊戲市場——儘管,這可能是一個比較小眾的需求。

丨 結語

開發《浮空小子》是一場非比尋常的奇妙旅程。我們在其中學到了很多遊戲開發的知識,和一個大發行商合作了5年——這只是開始。《浮空小子》是我們的第一個作品。隨著遊戲發行,我們的團隊也要「從頭開始」。我們一路上克服了各種困難,互相激勵。《浮空小子》已經證明了我們能作為一個團隊工作,一起做出好玩的遊戲。

遊戲名:《浮空小子》

開發商:Picomy

發行商:SEGA

發行日期:2015年7月2日

平台:iOS

開發人員名單:Michael, Bobby,Jeffrey,Jimmy

開發時長:58個月

開發工具: Picon引擎,Maya,,Photoshop,FL Studio等

觸樂網原創,轉載請保留作者名、註明源自觸樂(觸樂帶給您最優秀的移動遊戲資訊)及附帶原文鏈接:獨立團隊是如何飛上高天的:《浮天小子》開發手記。


推薦閱讀:

《偶像大師灰姑娘:星光舞台》:我是你的偶像
一張二星卡牌為何這麼閃——手機遊戲動畫化的那些事兒
陪你度過漫長學期——十款好好學習的手機遊戲

TAG:触乐 | 星咏 | Gamasutra | 点击这里 | 这里 | 触乐带给您最优秀的移动游戏资讯 | 独立团队是如何飞上高天的:《浮天小子》开发手记 |