宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小

2025年03月21日 首頁 » 其他

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


獨立開發的獨特魅力。

作為去年獨立遊戲屆的「雙璧」,《動物井》和《小丑牌》兩款遊戲有一個共同之處,那就是都是由一人開發者獨立完成的優秀作品,兩位開發者之間也多次「商業互吹」。

前幾天《小丑牌》的開發者Localthunk分享了自己遊戲開發的時間線,回顧了遊戲開發的過程,而在近日的GDC遊戲開發者大會上,《動物井》開發者Billy Basso也做了一場有關遊戲開發背後的分享。

在《動物井》開發過程中,Billy Basso曾在Blog上記錄過一些遊戲開發的過程,上線之後也接受過一些採訪,所以這次的GDC分享並沒有太多關於開發理念的內容,而是更專注於技術層面的探討,他的主題是:《Developing at 5MB/Year——The Making Of ANIMAL WELL》。

相信每個玩家都對這款現代遊戲(PC版本)只有33M感到驚訝,Billy Basso的這個分享就對此進行了揭秘。

《動物井》於2017年開始開發,最初的計劃只是一個時長1小時、耗時6個月完成的小型遊戲,不過最後耗費了Billy Basso 7年的時間,內容豐富度自然也大大提升。在遊戲開發的前4年裡,Billy Basso還有一份開發醫療模擬軟體的全職工作,直到2022年1月,Basso辭去了這份工作專注於開發《動物井》。

結語

在演講的開始,Billy Basso坦言過去曾參與過多個大型遊戲團隊的項目,但始終未能擁有「屬於自己的遊戲」並最終完成,因此開發《動物井》的首要目標是選擇一個他「100%確定能夠發布」的項目。為了順利完成這個目標,他在開發過程中做了很多的自我限制,只使用自己熟悉的技術,比如為了確保項目能夠完成,他決定不採用新技術或複雜的3D建模,而是專注於自己熟悉的2D像素藝術,在引擎和開發工具上也是如此。

《動物井》的一個獨特之處就是沒有使用Unity或虛幻等常見的商業引擎進行開發,而是Basso基於C 自行開發的遊戲引擎,這需要自行處理大量底層工作,包括內存管理和資源加載等,但是也讓他能夠完全掌控遊戲的各個方面,避免了與第三方合作的麻煩,同時也滿足了他構建和理解底層系統的樂趣。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


Billy Basso介紹了自己使用的開發工具,沒有任何複雜的技術工具:

  • 使用Visual Studio 2019用於代碼開發:
  • 構建了自定義關卡編輯器,支持類似《超級瑪利歐製造》的瓦片繪製模式和世界地圖的拖拽式構建。
  • 使用Sprite進行像素藝術創作,並對其進行了修改,以支持自定義的動畫格式和導出。
  • 使用Reaper進行音頻處理。
  • 使用Notepad做文本設計與任務追蹤。

自定義關卡編輯器有三種主要模式:

螢幕編輯模式:類似於《超級瑪利歐製造》的風格,可以在調色板中選擇遊戲中的精靈並進行繪製,創建遊戲中的一個個螢幕。每個圖塊可以代表一種實體類型,從而在螢幕中生成可移動和更新的遊戲對象。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


世界構建模式:允許開發者將創建好的一個個「螢幕」拖拽組合成遊戲的世界地圖。最初,世界被限制為16x16的網格,因為每個房間都有一個單字節的ID,最多只能有256個不同的房間。這個限制其實也是Basso有意為之,他希望通過約束來推動更具創意的設計,最終儘可能地使每個房間都內容豐富。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


精靈圖集編輯模式:最初Basso是直接在C 文件中硬編碼精靈在圖集中的UV坐標,後來他創建了一個自定義的精靈編輯器,可以直接在精靈周圍繪製選框,並設置如碰撞、是否為泥土等標記。儘管如此,他最終還是實現了一個自定義的精靈打包工具(Sprite Packer),這是行業標準的解決方案,可以將文件夾中的所有精靈自動打包成圖集,但他最初的硬編碼方式仍然保留了一部分。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


在動畫方面,Basso表示他使用軟體Aseprite進行像素動畫的製作,並且修改了Aseprite程序本身以便導出他自定義的二進制動畫格式。他不希望在遊戲中使用任何文本字符串,以防止數據挖掘,並且認為解析JSON會涉及動態內存分配,這也是他想要避免的。他的動畫格式是以幀和圖層的數組形式存儲,可以在運行時快速循環播放並根據畫布偏移量進行繪製。此外,他還編寫了大量的過程化動畫函數庫,用於創建各種形狀和效果,應用於遊戲中的許多生物。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


對於遊戲中讓玩家印象深刻的視覺效果和光照,Basso表示沒有採用單一的著色器,而是使用了約50個小的獨立技術,在演講中介紹了他以其中幾個技術舉例進行了介紹。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


動態陰影:通過在螢幕空間中使用光點數組,並對周圍的圖塊進行相交測試,然後將生成的陰影遮罩渲染到大的精靈調色板上,再進行模糊和抖動處理,最終與場景進行疊加。他還實現了不同圖層之間投射陰影的效果,通過將不同的遊戲圖層渲染到單個渲染目標的不同顏色通道中,然後在渲染背景時採樣前景或中景來判斷是否需要投射陰影。

邊緣光照:通過對前景圖層進行簡單著色並模糊處理,然後根據設定的閾值來決定哪些部分需要著色,從而增強了平台和牆壁的對比度。同時雖然是2D遊戲,但Basso後期為背景添加了手工繪製的法線貼圖,以提供更具方向性的光照效果。

水體效果:每個螢幕都有一個定義水位線的單字節變量。渲染時,先正常渲染螢幕,然後進行第二次渲染,將相同的內容顛倒並扭曲(使用正弦波數學),並在底部逐漸淡化。

流體系統:《動物井》實現了一個複雜的2D Navier-Stokes流體模擬,用於煙霧、水花等效果。Basso表示這個技術所採用的算法原理和實現方法並不是什麼前沿技術,而是可以追溯到2004年出版的技術書籍《GPU Gems》上,需要多個渲染目標和著色器,通過速度和壓力的相互作用來模擬流體運動。

而在資產管方面,《動物井》的所有遊戲資產在離線狀態下都被轉換為C 頭文件中的字節數組,並直接包含在代碼中,這意味著遊戲運行時不需要進行文件I/O,所有的內容都直接加載到內存中,從而實現了極快的加載速度。這種方式也方便了資產加密,Basso使用AES加密離線加密資產,而解密密鑰則與玩家在遊戲中解決的謎題相關聯。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


Basso最後概括總結了遊戲為什麼只有33MB這么小的原因,並且表示還可以更小:「如果我知道人們會如此印象深刻,我可能會更加努力地縮小它」。

  • 自研引擎,所以沒有第三方庫冗餘。
  • 低解析度像素藝術,紋理尺寸極小。
  • 音頻壓縮和稀疏的音樂使用。
  • 大量動態生成內容,提高資源利用率。
  • 無文本內容,儘可能使用二進制格式。

《動物井》為什麼只用33Mb?開發者在GDC上說,還可以更小


通過這個分享我們可以看出,33M的遊戲文件大小也並非是Basso刻意的追求,而是其技術選擇和資源管理策略的自然結果。通過限制範圍、專注於已知技術、自製工具和擁抱實驗性的方法,Bily Basso成功地完成了這樣一個獨特且充滿創意的遊戲,而從最初對熟悉技術的堅持,到後期對複雜效果的探索和對遊戲體積的極致優化,也都體現了獨立開發的獨特魅力。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2025 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新