作者:Christer Kaitila
你今年可以制作12款游戲,聽起來很不可思議?不,試試這個已經有人實踐過的簡單游戲開發方法,你就會發現每月一款游戲并非神話。
McFunkypants方法
在此我將與各位分享我自己的游戲開發方法。當然,這并非制作游戲的唯一系統,它只是一個充滿我個人建議和技巧的工具箱,我就是用它來戰勝包括“拖延癥”、功能蔓延、孤注一擲以及無限樂觀主義在內的諸多惡魔。
在2012年我成功實現了在12個月內制作12款游戲的目標。令人驚訝的是,這并非那么困難的目標,我在此所花費的精力甚至比過去幾年的許多失敗項目還要少。
那么這其中有什么區別呢?這是一個更為成熟,更有經驗,更為務實和更不樂觀主義的方法。不要誤會,樂觀主義本身并沒有什么錯。事實上,我還鼓勵大家懷有樂觀主義的心態。如果沒有樂觀主義,我們沒有人會涉水游戲開發領域。沒有樂觀主義,你永遠一事無成。在此我只是主張以更低調謙遜的方法制作項目。
在此要聲明,我所分享的技巧并不一定適用于每個人,但如果你能夠因此而成功實現一個月開發一款游戲的目標,那我就會備感欣慰。
設置多個終點
90%的游戲項目永遠無法見到天日。我個人經歷就足以證明這一點。我制作游戲也有20多個年頭了,在所有我滿懷熱情,計劃周全,窮盡想法開始制作的游戲中,僅有一小部分最終獲得發行。這是我多年的心病。我是一個優秀的程序員,也能夠制作一些得體的美工,也有足夠的想法支持自己的計劃,但究竟何時可讓游戲見光卻真是一個難以捉摸的目標。
為什么?因為真正執行所有這些令人興奮的計劃總會遇到各種我無法預料的挑戰。另外,我對每個項目所懷有的熱情也總會隨著終點來臨而逐漸消退。這個過程會很困難,你會花光所有資金,但卻還是超過了截止日期,開發樂趣也就蕩然無存了。剩下的就只有許多開發者稱之為“墻壁”的埋頭苦干了。
inde_developer(from david-amador.com)
墻壁是軟件開發項目中不那么有趣的一個節點。此時你已經為一切容易執行的內容編完程序,剩下的就是一些雜活:修復漏洞,棘手的代碼,重復返工,超過你控制范圍的事情,遺漏的關卡或音效,安裝問題,用戶測試,你無法重制的報告漏洞,以及應用商店審核等。
完成一個游戲項目好比是攀向一座高峰。運氣夠好的話,你只要穿著運動鞋,帶著雄心就行了——但這通常會導致災難性的失敗。但我這些自由攀登的山峰上,我一開始就會準備好繩索,研究眼前的石壁,記錄可能很棘手的片段,測量自己的步伐。
降低風險:經常保存
想象一下如果一次都不保存就直接完成游戲會是怎樣。這正是許多游戲開發者制作軟件的習慣——孤注一擲,不是讓它橫空出世就是將其徹底拋棄。中間沒有任何商量的余地,不考慮任何意外情況。這是注定會失敗的方法。
你這樣反復數次后,就會開始看到一個模式:沒有保存習慣,一條路走到黑的樂觀主義計劃通常風險極大。為何不降低風險,在開發過程中設置多個保存點?
從開工到結束
在此我將以自己在某個周末編寫的游戲為例解析這些要點。
1.頭腦風暴階段
頭腦風暴最棒。我喜歡草草記下大量關于道具類型、寶藏、任務、角色姓名、關卡理念或構建模塊等大量列表。這很有趣,也是一種開始制作游戲的絕佳方法。但這里有個潛在問題:頭腦風暴本身注重的是數量而非質量。我甚至可以將頭腦風暴戲稱為“廢話連篇”的過程。
如果你的每個項目都要從大規模的頭腦風暴入手,很好。但最好要確保不要等到你已經將原計劃列表中99%的內容納入“下一版本”計劃列表時才開始動工。
2.制定兩個列表:需求和渴望
有一個削減常規游戲開發頭腦風暴那種大規模、功能蔓延、過于樂觀基調的絕佳方法就是,縮小范圍評估各個要點,例如:
*原創性
*可行性
*開發難度
*美工需求
*玩法趣味性
*編程趣味性
篩選你的列表,摒棄大多數想法。將其中多數想法(游戲邦注:尤其是最困難的理念)保留到以后的項目。
針對每個打勾的項目,自問它是一個必須選項,還是優化選項?對于第一個原型,要集中關注其根本元素,因為沒有這些元素原型就不會具有可行性。
其次要思考:每個項目的執行難度有多大?這是否需要大量編碼或內容?此時可以大膽以一種懶惰的方法執行計劃,因為你不久就會發現自己不得不將許多最棒的想法擱置一邊,因為執行這些理念需要耗費大量工時。所以此時無需太勤快,選擇那些最容易創造的基本功能即可。
提取你最喜歡,并且最容易執行的單個核心游戲機制理念。把一件事情做好,總比只完成一堆半成品要強。
這就是所謂的“最小可行產品”理念。
3.編寫“電梯游說稿”
當你自己描述這個最小可行產品,也就是能夠用一句話描述整個基本游戲理念,最多只強調一兩個方面,那就是時候進行潤色了。
要假設你需要在電梯中向一名主流游戲發行商高管講述自己游戲的可行性。你只有10秒時間,那么你可以在如此短暫的時間中充滿熱情、興趣而富有感染力地描述自己的游戲,從而獲得一筆可觀的預付特許使用金和一份發行合約嗎?
寫下這個電梯游說稿。進行修改編輯。使其簡明扼要。要假想你是在為游戲包裝盒寫文案,想象一名玩家拿起這個盒子并轉一面會看到什么文字。他們有成百上千款其他游戲可供選擇,但他們決定給你幾秒時間以便他們做出決定。那么你的文案能否成功推銷游戲?
如果你向一位好友(或者一名陌生人)朗讀這個文案,他們會感興趣,興奮還是懷有極大熱情?如果對這些問題你都能給予肯定回答,那就說明你走上正軌了。
以下是我為最近制作的一款游戲所描述的電梯游說稿:
“你是個壞蛋。有兩名情人極想擁抱對方,你的任務就是通過建圍墻來拆散他們。這是一款基于A-star尋徑的回合制策略謎題游戲。”
4.繪制粗線條的故事板漫畫
下一步,就是在你開始編程或創造大量內容庫之前,繪制游戲運作的草圖。你不需要什么美術技能,只需要畫一些黑白線條的縮略圖即可。此時你的目標是以可視化形式呈現整個游戲由始至終的情況。
在一張紙上繪制一系列面板,先畫一個類似以字幕或者主界面的東西。在之后的面板中繪制下一幕場景。這可以是游戲介紹,也可以是第一個關卡。總之就按照你玩游戲的順序一幕幕接著畫下去。你需要繪制的面板越多,就表明你制作游戲時需要完成的任務量越大。因此,最好在一張紙上完成所有東西。最好不要超過12個面板。
以下是我最近編寫的《Pathos》這款謎題/策略/戰術游戲中的游戲機制草圖:
mockup(from gamedev)
我用了各類游戲標題的變體假裝A-star尋徑算法,并加入許多《龍與地下城》RPG風格的圖片,因為這正是我的靈感來源。我喜歡奇幻世界地圖,并認為這將成為一個理想的關卡選擇屏幕。
制作一個快速故事板的原因是,它會讓你更準確地描述出游戲內將發生的情況。此外,它還可以視覺化地列出內容。例如,你在一個屏幕中可以放置多少個按鈕,虛擬角色有多大,移動方向,積分或命值條應放置在哪等等。這些縮略圖是一種從設計師角度看待游戲的絕佳方法。它們可以在你編程的時間提供許多幫助。例如,通過這種簡單的布局你就知道自己需要繪制多少圖標或按鈕圖像,關卡美術內容有什么需求,游戲將呈現什么面貌。
如果你的漫畫現在看起來還不像是有趣的游戲,那么你可能就得先弄清楚需要進行哪些調整再繼續投入開發。如果漫畫看起來無休無止,那么你就需要提醒自己這種工作量過于龐大,你得削減過場動畫或關卡、玩法元素的數量。
同電梯演講一樣,這種一頁式的粗線條故事板也是去粗取精的好方法。將它展示給朋友看,看看他們是否會喜歡玩這種游戲,他們是否認為這值得你投入時間。
5.制作無美工的早期可玩版本
下一步就是在第一天就制作一個可玩游戲。沒有字幕,只有一個關卡,以及基本的玩法機制。
它不需要很棒,也不需要很完整,當然也不需要那么有趣。這個步驟就是你的最佳武器。讓你挑戰自我創造一個能夠在最初幾小時編譯和運行的代碼庫。這個版本應該能夠接受輸入,移動、具有動畫,并觸發一些聲音。
你越早完成這種早期可玩版本,就越有可能成功。這將成為你的首個“保存點”——這相當于你攀峰的時候可以在半途休息的一個高地,經代表游戲的前景。由此開始,你就可以根據自己的需要潤色游戲,因為你知道自己已經擁有一個“可行”的版本了。
以下就是我這個項目的初級原型。它含有簡單可行的尋徑元素,沒有美術,只有一些彩色的方形。
prototype(from gamedev)
到達這一階段需要投入大量編程時間。我估計這個項目開發周期中有半數時間投入于令游戲呈現上圖這種效果的階段。這種無美術的方法很適合編程:它更節省時間,可以助你找到漏洞,迫使你關注游戲的“感覺”。
無美工的原型還有另一大優勢:在之前的游戲中,我會用Photoshop制作好看的模型,并搜集大量可愛的精靈以備游戲所用。在開發完成后,總要更換、調整或拋棄大量的美術內容。我在編程之前浪費了太多時間制作游戲的美術內容。現在我已經明白技術規格以及不斷發展的玩法機制意味著,你一開始做的許多內容最后都不會派上用場。
6.開始潤色MVP的外觀
當你所制作的游戲機制開始運行時,你就可以為自己的最小可行產品(MVP)進行潤色。在這個階段,你還是沒有一個主菜單或字幕,但游戲規則及移動方式應該已經到位,以覆蓋主要機制。
現在你可以開始為精靈準備特定的像素尺寸,決定布局,顏色方案以及你需要在屏幕上呈現多少貼圖,并開始將高質量的美術內容注入游戲世界。這也是試驗游戲運行性能以及處理技能局限性(例如保持良好的幀率,讓游戲不超過帶寬或紋理大小)的時候。
在我的示例項目中,我只使用了一些占位符精靈。每一個與另一個之間的距離都要經過測量:
screenshot(from gamedev)
7.解瑣成就!
好消息是,這就是你的下一個“保存點”!你已經擁有一個“可行”的游戲。你可以點擊屏幕看到一些發生情況。這里沒有人物只有一個關卡,但至少它是你可以展示給好友讓他們試玩的東西。你已經有了一些可以編譯的內容。
此時我們的目標是功能,也就是一些你可以暫時中止,但卻已經有些可以試玩的東西。它可能與有趣根本就沾不上邊,或者外觀極為丑陋,但這一點都不重要。至少,你有一個沒有編程錯誤的代碼項目,并且它能夠傳遞一些內容。
你只有當你完成這個“初級可玩版本”時你才有可能到達終點,因為這時你才可能推出令人信服的產品。
8.一次只專注于一項功能
現在核心玩法機制已經到位,你就可以著手開發更有趣味環節了。也許你會選擇先添加一些關卡,編寫一些對話,或者為自己的游戲世界開發一些角色。也許你還認為游戲應該含有一個很棒的粒子系統,很酷的音樂,或者高分排行榜。那么,現在就可以開工了!
但要記住一件事:一次只能專注于一件事情。要專注于一項任務,直到其基本成型后才能繼續處理下一項。
此時你可能厭倦了老是做同一件事情,需要先暫停一下。這也無妨,但要保持自律狀態,還是要繼續完成最小的一個系統,直到它進入那種準備就緒的狀態。
例如,在執行戰斗、命值或粒子特效時,要專注于角色移動和碰撞檢測,直到你確信角色能夠移動、撞到墻壁,回應鍵盤、鼠標或搖桿的控制輸入。
此時你才能著眼于武器,跳躍等高級移動功能,檢測玩家是否接觸到熔巖并且受傷等開發內容。
盡量以線性方式展開工作,你會發現自己不需要同一時間處理多個問題。你可以一次僅專注于一項任務,而不是被50個不同類的漏洞所淹沒。這是保持動力、注意力和熱情的關鍵。同時遇到太多需要解決的問題,最容易令你因為受挫而心生退意。
正如有漏洞的堤壩一樣,只有一個漏洞尚能修補,而如果是50個漏洞同時出現,如果你還不能修復一個漏洞就要奔赴另一個挑戰,你很快就會發現自己處于一團糟的境地,這會讓你產生極大的恐懼感。
9.繼續向保存點前進
在游戲開發生涯中,你每完成一個MVP或可玩原型,或游戲的可發布版本,你都相當于是創造一個保存點。
要記住將這些可玩版本保存在工作文件夾之外的地方。使用版本控制方法,將其置于你的備份硬盤中。以郵件形式發送給游戲測試者。無論此時你在做什么,都要確保自己如果搞砸了一切,還有退路可走。
要堅持以創造多個迭代性優化,以及逐漸增強運行功能的可執行文檔為目標。如果你經常忘了備份游戲,必要的時候可以公開情況,這樣你就會開始緊張了。
一般來說你將會有很長一段時間用于尋找漏洞。當你發現游戲已經基本上沒有功能性問題時,要保存一個備份,這就是你的另一個保存點。
以上提到的線性、迭代方法也適用于你的美術內容或游戲關卡。一次性完成一個關卡的潤色。這樣如果你沒有時間、資金、耐心或者熱情去完成所有的99個關卡時,至少你已經有三四個準備充分,值得驕傲的關卡。
簡單地說,此時一定要確保你手頭上已經有一個隨時可以上線的游戲版本。畢竟,誰也不知道明天和意外哪個會先到。為了預防萬一,你最好不要在這些保存點上出現差錯。
迭代、性線、按步驟,一次一個任務的開發方法就是12個月制作12款游戲的成功秘訣。
10.到達終點!
當你到達一定保存點時,你的游戲將會呈現很棒的效果。此時,你才能確定項目大功告成的時間。要認識到你永遠無法將最初頭腦風暴文件的一半功能添加到最終成品中。但這些內容很可能變成你第二個版本的元素。
以下是我這個示例項目的成品。此時我已經準備推出游戲。我更改了名稱,添加了一些很棒的美工,為我的關卡編輯器編寫了一個分析程序,并找了一些音效和音樂內容。這是一款游戲,具有可玩性,我為它而驕傲。我將其稱為《Pathos》,下面就是它的最終面貌。
title-screen(from mcfunkypants)
pathos-map(from mcfunkypants)
canvas(from mcfunkypants)
記住:要接受自己的局限性
所有的游戲開發者都是充滿激情、創意的人。不幸的是,正是這種無窮的熱情和創意讓我們深陷麻煩。作為樂觀主義者,我們都總會為項目抱有一個遠大的期望:心目中的游戲成品就像薄煎餅一樣暢銷。
這個項目的每個環節聽起來都像你真的能夠輕松做到一樣——事實也確實如此。但是,如果你將每個任務加起來,就會發現制約因素并不在于你的能力,而在于你的時間有限。
記住你在主機上玩的多數游戲,背后都有持續投入數年時間的上百名全職開發人員。如果你是試圖與這些團隊相抗衡的單人開發者,你就得計算清楚他們的工作時間遠超過一名獨立開發者終身壽命。
你還得接受一個事實,你一開始的目標不可以太高(游戲邦注:除非你想投入數年開發一款游戲),這樣才有可能完成項目。要考慮到優秀獨立游戲平均利潤也不過數千美元,你不可以在游戲上投入成百或上千小時,除非你篤定這款游戲一定會成為驚世之作。你需要設計那種只需20或50小時工作就成完成的游戲。
無論如何,可以大膽假設——但要小心求證。要創造最小可行產品,如果得到測試人員的認可,那就添加更多內容,并將其稱為2.0版本。
記住:要接受不完美
完美實際上是一種不可能達到的境界。你得收斂你的驕氣接受自己的不完美。如果忽略了這一點,你就可能把這自己一直綁在這個項目上。記住,你可以一直制作續集。在項目妥當時就可以發布游戲,雖然你可能覺得它還可以不斷完善。因為這不但可以為你減輕壓力,還可以讓你獲得一些成就感,但游戲到達玩家手中時,他們可能還會提出一些你永遠無法想到的新建議。
記住:盡早發布,經常更新
在你沒有時間,精力,資金或動力的時候,那就發布已經完成的版本,吧。如果你堅持那套保存點系統開發方法,你就該在項目任何階段都有一個可玩版本,即便你的功能清單上還有許多內容尚未落實。這沒有關系。
“盡早發布,經常更新”已經是被許多成功開發者反復證明的真理。你需要玩家反饋,現實世界的測試。在暗無人處編程,直到游戲最終見到天日,這是一種錯誤的觀念。首先,你只是通過自己有限的視解看待自己的游戲。因為長時間看同一件事物時,你的大腦就開始麻木了,需要他人不同的眼光和視角來補充見解。
你可能會發現一些機制,雖然在理論上看很棒,但落實之后卻很無聊或令人受挫。
除此之外,盡早發布并經常更新的游戲可以獲得更多曝光度。你更有機會進入“最值得關注的新游戲”榜單,可以吸引粉絲。你可以讓更多人測試自己的游戲,并獲得將影響游戲設計的有用建議。
玩家可能會提供一些讓你意外的批評或稱贊。而你認為很重要的功能可能卻會遭到冷遇,你認為不重要的元素反而博得眾人青睞。總之要關注公眾對游戲的反應并及時作出回應。這可以為你節省時間,免去一些棘手問題。這也會為你未來的游戲發布找到方向。最重要的是,這可以為你帶來新粉絲,支持者和更大的動力。
現在開始編程吧!
既然你已經有了一點動力,了解了我個人的游戲開發方法,我鼓勵你現在就下線開工吧。調查或計劃得太久可能會浪費時間和精力。有時候你需要的只是創建一個新文件夾,創造一個空白的項目,并開始編碼。發動你的游戲開發引擎吧!
如果你遵從了這個基本的游戲開發方法,我相信你會有不少收獲。其中最主要的就是減少壓力,讓你的開發過程更有趣,更實際,這種保存點系統也更可能獲得玩家反饋。最后,將項目分解為更小的部分,你就有可能在今年每個月都發布一款游戲了。
原文發表于2013年1月24日,所涉事件及數據以當時為準。