《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

遊資網發表於2019-08-26
本文將由《BitUp》的開發團隊介紹這款遊戲在Unity中的製作過程,包括關卡設計和自定義地圖編輯器的開發歷程。


來自墨西哥的Cosmogonia是一個由5名成員組成的小型獨立遊戲團隊,2013年,我們得益於PlayStation拉丁美洲孵化計劃的契機組建了工作室。

《BitUp》是工作室的第一款遊戲,我們希望藉助這款遊戲實現創意。從最初設計遊戲概念開始,《BitUp》就像擁有著靈魂的生物般不斷髮生變化。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

我們希望讓這款遊戲致敬不同的遊戲時代,最初的想法是讓遊戲通過影象的變化而進行演變,使遊戲從文字冒險遊戲逐漸轉變為3D遊戲。

隨著我們開發的進展,原來的想法開始發生變化,遊戲的敘事讓遊戲內容和世界逐漸成形。這時候,我們想到了給遊戲提供實際視覺風格的方法,即16位風格。由此我們開始構建藝術風格,並使用了“畫素化3D效果”的開發方向。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

由於嚴重缺少資金,我們在過去五年間斷斷續續開發這個專案,並且同時為其它獨立工作室去完成一些工作。現在積攢了足夠的資金,終於可以專注於自己的專案。

在這段時間期間,我們製作了2個原型。第一個原型使用Unity 4製作,執行在PSVita主機上。我們花了三週時間完成這個演示,並將遊戲在索尼開發峰會活動上向發行商展示。

下圖是PSVita中的原型。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

第二個原型使用UE 4製作,執行在PS4 Dev Kit上。

下圖是PS4中的原型。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

在此期間,遊戲也發生了變化,由原來的聚焦戰鬥的2D平臺遊戲,轉變為注重探索的銀河戰士惡魔城遊戲。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

藝術風格

根據“16位時代的角色在遊戲中觀察周圍世界”的設定,我們開始設想遊戲世界的組成方式,效果和製作方法。

藝術風格的主要目標是創造一個充滿活力的遊戲世界。雖然我們設定是16位遊戲,但我們希望把它做成生動的世界。我們無法直接從螢幕看出這種生動感,但我們可以通過遊戲內角色體會到這種生動感。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

開發工具

為了實現藝術風格,所有遊戲世界都是為UE 4原型而定製。遊戲中的內容都由立方體組成,由於這不是體素化遊戲,所有內容都需要手工製作,從而實現最佳效能。

《BitUp》的第二個原型在PS4 Dev Kit上執行效果不錯,但是要渲染的幾何體數量太多。我們嘗試使用Substance Designer製作靈活的可定製紋理,從而提供類似這些幾何體的相同外觀。

在嘗試過使用UE 4製作原型後,我們最終將《BitUp》的新版本使用Unity 2019開發。

這背後的主要原因有三點:

我們的團隊對Unity擁有更豐富的開發經驗。

Unity最新的版本可以實現非常出色的視覺效果,我們使用了非常強大且優化效果很好的輕量級渲染管線LWRP。

作為嚴重缺少資金的獨立遊戲團隊,使用UE 4的製作成本過於昂貴。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

關卡設計

《BitUp》中的所有關卡都使用Unity的建模工具ProBuilder製作,ProBuilder幫助我們加快了關卡設計和測試過程。

我們進行了大量測試,從而找到組成所有遊戲世界的最佳管線。在一些成員進行關卡設計時,其他成員可以處理相同區域的場景佈置和光照設定,然後把兩個部分組合起來並進行測試。

雖然ProBuilder是一個早期測試的好工具,但隨著我們開始使用更加精簡的管線,很多內容會出現問題和崩潰情況。因此,我們把所有內容都轉變為使用UModeler外掛來處理。

由於遊戲地圖的複雜性,我們開發了一個地圖編輯器,用於控制和組成玩家可以使用和理解的地圖。該編輯器在Unity中開發,因此所有內容都可以結合使用。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

地圖編輯器

在一次關於地圖可用性和設計方面的漫長討論後,我們產生了製作地圖編輯器的想法。

我們主要討論的問題包括:我們應該展示什麼?如何展示?玩家如何與地圖進行互動?在確定好關於地圖問題的答案後,程式的工作便開始了。

為了實現想要的功能,我們必須要取得地圖的所有資訊,這些資訊分為:區域,部分和模組,然後把資訊存在可以持續更新和儲存的資料結構中。

我們使用的資料結構是鄰接表,每項資料都是帶有連線的節點。在專案中,節點是包含陣列中對應模組資料的部分,這裡的模組指地圖上可以劃分出的最小部分。但主要問題在於如何構造這個資料結構。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

遊戲關卡是通過手工進行建模的,唯一的規則是整個關卡大小必須可以被以模組為單位完整劃分。除此之外,關卡可能有各種變化。

首先,我們的想法是設計一個演算法,它可以讀取關卡的網格資料,形成自己的資料結構,邏輯上把關卡劃分為“構想中的”組成模組,但我們很快放棄了這個想法。

我們意識到可以嘗試自己編寫資料結構,於是編寫了一個帶有部分和模組的小型JSON檔案,然後建立一個簡單的指令碼,它可以讀取檔案並反序列化資料結構,這種的方法起到了作用。我們有了製作地圖所需要的資料,即實際關卡的表現形式。

但又遇到另外一個問題是:要寫入的部分不止一個,而是有很多個,每個部分都有自己的模組資料,以及和其它部分的連線。

手動完成所有操作將是一項無休止的任務,每次關卡發生改動時,都要對檔案進行更新。此外,出於安全性考慮,最終檔案可能不是JSON格式或其它可以直接讀取的檔案。

下面將介紹我們開發的地圖編輯器。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

上圖是一個基於節點的編輯器,每個節點表示一個部分和相應的資訊,各部分可以互相連線。通過使用節點的Dimensions欄位,我們可以定義模組的網格,在模組檢視視窗中快速繪製組成各部分的模組。

我們曾使用過Unity中的節點編輯器,而且經常使用舊的IMGUI API。為了進行繪圖,同時也為了擴充套件編輯器,我們的地圖編輯器使用Unity 2019.1中UIElements來開發,它完全改變了在編輯器中繪圖的範例。

IMGUI使用即時繪圖模式,執行繪圖的程式碼位於迴圈中,並且會在每幀執行。UIElements更類似於網頁,我們可以定義物件的層級,然後引擎會繪製物件。

在完成編輯器的開發後,製作地圖檔案的方法非常簡單。我們只要新增節點,給節點加入必要的資訊,然後點選滑鼠匯入檔案,這樣我們便得到了一張遊戲地圖。遊戲的世界非常龐大,大約有超過80個不同的部分。

資源

遊戲的第一批資源使用傳統方法並通過手工製作,但現在我們會使用Houdini程式化來快速實現更有趣的結果。

模組性特點是該遊戲的核心,因此所有資源都會考慮到模組性而設計。這樣我們可以使用相同的部分組成許多變體,使用Unity的GPU例項化功能來結合這些部分,從而提高遊戲的效能。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

VFX

為了讓所有內容有相同的藝術風格,視覺效果保持著相同的“畫素風格”外觀,相應的效果可以在我們的VFX展示圖集看到。

Unity粒子系統對製作視覺效果來說非常靈活,我們可以在較短時間內製作多種效果。

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

《BitUp》:畫素風格遊戲及地圖編輯器的開發歷程

小結

《BitUp》已經確定好敘事、角色、環境和關卡的設計,即將完成遊戲的預製作階段,預計在明年釋出。後續我們將分享《BitUp》更多的開發故事以及遊戲效果展示。

來源:Unity官方平臺
原地址:https://mp.weixin.qq.com/s/1Tg6QFv9ZoWqFNWMcv6c_g


相關文章