“That man was a magician”
在獨立游戲開發者中,不乏有十分優秀的團隊,他們各司其職,共同創作出制作精良的游戲。
而去年,一款名為《動物井》的類銀河惡魔城的冒險解謎游戲讓玩家驚嘆不已,更令人驚奇的是這個游戲“團隊”是一人成軍——制作人Billy Basso既是獨立開發者,又是程序員、設計師、美術、音效師,幾乎所有工作都由他一個人完成。
他采用了一種非常高效的數據壓縮和渲染方式,使游戲在僅 33MB 的體積下就實現了豐富的光影效果、流暢的動畫和復雜的謎題設計。
左動物井排隊現場,右王國之淚排隊現場
在GDC第一天,我們有幸聆聽了這位傳奇制作人的演講,他分享了自己的開發經歷,其中有不少內容似乎都是有些“晦澀難懂”的程序問題,但這并不影響這場演講的火爆程度,現場的人數幾乎堪比GDC2024上《塞爾達傳說:王國之淚》的分享。對于Billy而言,在游戲開發中的一切,包括各種困難和挑戰都讓他十分享受。
“就像解謎一樣”,在演講后的采訪中,Billy這樣告訴競核。
七年鑄夢,成就《動物井》
Billy在正式制作游戲前,曾有十年在芝加哥的游戲公司及工作室內工作,主要從事有關教育游戲和手機游戲的內容。
后來他開始制作自己的游戲——《動物井》,一款花費了他七年心血的作品。
在這七年中的前四年里,Billy還有一份全職工作,所以他只能兼職做游戲,就像在開發一個愛好類的項目。到了開發后期,他終于積累了足夠的儲蓄,從此開始全身心地投入到《動物井》的開發中。
Billy對待《動物井》有超乎尋常的認真和專注,他向在場的人展示了自己的引擎:“人們經常問我‘你用過SDL之類的工具嗎’,答案是沒有,我只是直接調用了Windows的原生API。”
不僅自制了游戲引擎,Billy還基于此做了各種平臺的移植內容,包括Xbox、PlayStation 5、Switch,還有PC。
這似乎反映出了Billy的確想要制作一款“自己”的游戲,他在演講中提到“我有點厭倦(過去)這種狀態:一直在大型團隊內開發游戲卻從沒做出真正屬于自己的游戲。”
在最初,Billy只想做一件100%確定能完成的事情。對于當時的他來說,重新學習制作3D模型不是一個很好的選擇,而且對整個開發過程而言有些冒險,于是他決定從2D像素風格入手。他原本的目標是制作一個一小時左右的游戲,并且將于六個月內完成它。現在我們可以看到,他的制作周期遠遠超過了預期。
制作游戲并非一帆風順,除了《動物井》,Billy還嘗試做過其他游戲,比如行走時重力不停變換的老鼠,比如一款以涂鴉為主題的射擊游戲。這些嘗試雖未成型,但Billy在此過程中學習的內容,都成為了未來制作《動物井》的最佳養料。
詳解游戲開發,自研與精益求精
Billy的開發工具包括:Visual Studio、自定義關卡編輯器、 像素動畫軟件Aseprite、計算機音頻編輯軟件Reaper以及寫字板Notepad。
其中,Billy詳細介紹了他所制作的三種不同模式的編輯器。
第一種是屏幕編輯器(Screen Editor),Billy表示這有些類似編輯馬里奧游戲。他不僅可以在屏幕底部調用調色板直接創建一個個圖塊,還可以用字符串來定義這些圖塊。每一種圖塊都代表一個實體類型,而Billy要做的就是把這些類映射到他所需要的物體上。
“你們猜怎么著?我甚至還跑到Photoshop的安裝文件夾里,把它的油漆桶圖標拷貝過來裝到我的編輯器里,就因為我想讓它看起來更專業。”演講之余,Billy不忘幽默了一把。
第二種是世界編輯器(World Editor),這是一個可快速構建整個游戲世界的便捷模式,用屏幕中的方格代表游戲中的房間,在編輯器中能夠實現隨意拖拽和排列組合。
Billy強調,“每個房間都有唯一的ID,而每個ID只占1個字節……我是故意這樣設計的,我不想讓游戲世界的范圍太過膨脹。結果就是,我反而把每個房間都塞得很滿,用盡了所有可能的組合。不過這種限制挺有趣的,就像大家常說的那樣:約束能推動你往更有創意的方向走,而這正是我所想要的。”
第三種則是對象編輯器(Sprite Editor)(注:Sprite原意“精靈”。據悉,在游戲中Sprite可表示為一個可以移動、旋轉或變換的二維圖像,在此暫譯為“對象”),Billy為了不讓自己在開發過程中“硬編代碼”,著手寫了這樣一個可以標記各種坐標的編輯器,后來他又為自己寫了一個自動打包工具,但有些部分依然保持了手動設置的“老方法”。
“我會先做一個很爛的系統,專門去體驗它的糟糕之處,接著再做個稍微好些的版本,這樣能稍微減輕一點我的‘痛苦’,最后可能還會做出個不錯的版本。”
除此之外,Billy還設計了一種自定義動畫格式,以便導出各種二進制內容。他可以在時間軸中做出傳統動畫效果,不僅能分層處理動畫,還能在不同幀之間進行共享,從而導出JSON文件。
這些“額外”的工作聽上去相當辛苦,但Billy甚至還會給自己上難度,他給自己定了個規矩:不用任何文本類字符串,他不希望玩家通過挖掘數據或代碼來搞清楚每個東西的作用。
還有一些動畫內容,Billy是通過代碼實現的,為此他積累了一個小型函數庫用來輔助他繪制形狀、動作通路、樣條線等各種內容。這些技巧應用到了游戲里的很多生物身上,比如圖示的這只水獺。
Billy會先設置它的前后腿動作,而為了水獺能在不同地形坡度上行走,還需要根據地形坡度動態調整它身體的上下部分位置,然后再利用函數庫實現動作鏈接,最后才呈現出一個活動自如的水獺形象。
《動物井》中的視效也貫徹了Billy精益求精的態度,Billy不是用單一著色器來實現游戲中的獨特視效,游戲的最終呈現效果可能涉及50多個“小細節”。在演講中,Billy也著重介紹了其中幾個關鍵效果。
首先是動態陰影,Billy用了幾種不同的陰影渲染方法,其中一種是通過創建光源陣列實現的。
以每個光源的頂點繪制光線——從一個圓心向外輻射出一片扇形區域,接著對該區域內的所有圖塊進行交互,以致每個圖塊都有指向中心的點狀陰影,最后把陰影渲染上去。等所有陰影都渲染好后,再把它們全部合并疊加,這樣才是最終的效果。
這一過程比起實現視效,這聽上去更像是在編程,Billy表示這種實現方式其實在《動物井》的開發過程中非常普遍。他一直在努力呈現匹配像素藝術風格的視效,并嘗試使用不同方式。例如當他想要模糊事物時,不會選擇簡單的“模糊”或“抖動”畫面;再例如當需要漸變效果時,會用著色器來一點點調試。
同樣復雜的陰影渲染過程還有將游戲內的四層結構——遠景、背景、中景和前景,渲染到同一個目標的四個顏色通道里。
Billy還講述了一種重要效果:邊緣光效。嚴格來講,這不是光效,而更像一種陰影效果。Billy認為這種效果不僅能豐富游戲環境,對玩法也有所幫助,“增強平臺和實體之間的對比度,當角色行走在上面時會表現得更明顯。”
與此同時,Billy認為另一種光效也非常重要,即法線貼圖的使用。這種光效通常被運用在3D領域,在2D游戲中其實并不常見。但Billy依然決定使用它,以此賦予光照一定的方向性。要想實現這一效果,需要經歷有些枯燥的手繪編輯過程,但好在Billy只是將其運用在靜態元素上。
復雜的光效被如此打磨,Billy同樣也沒有“放過”簡單地視效,例如實現“水”,他為每個屏幕都單獨設置了一個水位變量、用正弦波調試UV坐標以及用流體系統來表現水霧和飛濺的水花。
而要想實現多種流體效果,就需要很多額外的渲染目標。有時還可能需要使用一種多變量微積分的散度計算方式,然后就能實現一種“非常酷、非常逼真”的效果。
對于Billy來說,最難的是整體代碼結構的調整。他裝載了很多不同的簡單卻獨立著色器,不得不用一種迭代算法來緩解渲染時的計算壓力。
這么多的算法、代碼和程序,難免會出現一些錯誤,但他以非常樂觀的態度看待這些“小挫折”:“如果搞錯了,反而會生成特別酷的bug……最后渲染出來的畫面簡直像藝術作品。你知道嗎?這種意外反而成了推動你繼續前進的動力。”
在介紹開發部分的最后,Billy提到了他的游戲資源管理。游戲內的各種資源會在離線狀態下被提前轉換成數據文件,每個文件都包含一個龐大的字節數組。整個游戲都能被裝進內存里,這樣一來,除了初始加載外不會產生任何額外加載時間。
這一點同樣是Billy的堅持,“我想營造出那種“完全沒有加載時間”的錯覺,就像玩復古游戲卡帶一樣”。
這種形式的資源管理還能實現有趣的加密功能。理論上,直接運行在CPU電路中的加密形式很難被黑客攻破或被眾包破解,因為必須有密鑰才能看到內部文件。
而Billy早在游戲編譯前就為資源加密了,他還為玩家準備了“鑰匙”來激勵他們尋找游戲中的隱藏內容,一旦成功,玩家們就能發現游戲中的“小彩蛋”。
“還能做得更小”
人們總是驚嘆Billy竟然能在33MB的“小空間”內完成如此優秀的游戲,而Billy卻認為他其實還能做得更小。
在演講的最后,Billy提到他并不是想炫技,也不認為這是獨具開創性的事情。
“由于自研引擎的特性,再加上我使用的是低分辨率像素,數值只有320×180,對于越來越高的現代顯示器分辨率,我的游戲體積自然要比常規情況小得多。”
為了不讓游戲體積膨脹,Billy盡可能多地重復利用現有資源,所有內容都用二進制格式存儲。“如果早知道大家會對這點這么感興趣,我可能就多下點功夫了。”他這么說道。
這不禁讓人好奇,如此享受開發過程的Billy究竟有什么事情是能讓他覺得困難呢?競核在演講結束后忍不住采訪了這位傳奇制作人,沒想到Billy的回答是“市場營銷”。
他認為制作游戲的整個過程都是快樂的,但他說“如何獲得人們的關注和互動這一點超出了我所擅長的范圍。這對我來說真的很難,所以我最后不得不向Dan他們求助,由此來獲得人們的關注。有一段時間,我有非常努力地嘗試自己來做這件事,所以我得說這是最難的部分了。還有一些和宣發(市場營銷)相關的內容,比如參加展會、申請或舉辦活動以及為《動物井》建立一個網站。這些都超出了我的能力范圍,我真的覺得這些很難。”
而他與發行商的“緣分”也來自一次《動物井》游戲視頻的展示。
Billy這樣告訴競核:“我們在那里做了一個演示視頻和美術概念圖,然后獲得了很大關注。就在那一次,Big mode注意到了我們——雖然那時候他們還沒有正式成立。發行商在那之后主動聯系了我們,還打了一次視頻電話。我們知道成為Big mode的首款發行游戲是個千載難逢的機會。這真的是個絕佳的機會,我們當時既興奮又充滿不確定性,但直覺告訴我們這是個正確的選擇。”
現實總是不會虧待真正有準備的人,而Billy也成功抓住了他的機遇。
或許已經具備成熟的開發技能并經歷了一個完整開發過程的Billy,下一次能呈現給玩家一個更加精巧、也更加驚艷的作品。
*爆料丨合作丨招聘:點擊或戳微信號 luoxuanwan111
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.