白鷺引擎助力《迷你世界》研發團隊開發3D小遊戲版

遊資網發表於2020-08-18
《迷你世界》作為國內第一的放置類3D沙盒遊戲,依靠三四線城市的遊戲市場及垂直媒體的傳播途徑,研發團隊用了短短3年時間就創造出了8000萬活躍玩家、5000萬玩家原創作品,僅2020年上半年,關於《迷你世界》的短視訊點選量已超600億。在開發團隊和玩家們的共同努力下,現在《迷你世界》已經形成了一個非常完整的遊戲生態。

在小遊戲成為新型流量入口的的今天,《迷你世界》開發團隊也發現了這片“新的生態世界”,他們希望在這個世界中繼續延續創造之旅。

經過多方考察、慎重考慮,開發團隊決定研發一款適合小遊戲平臺的沙盒遊戲,他們希望這款小遊戲不僅可以與《迷你世界》有所區別,同時可以與《迷你世界》實現互補、導流,能夠成為《迷你世界》內容創作生態的一部分,進而打通手遊、小遊戲使用者群的壁壘。

《迷你世界創造板》3D小遊戲因此而誕生,開發團隊從篩選小遊戲引擎,決定使用白鷺引擎,到遊戲開發上線大概用了兩個月。

今天,我們與《迷你世界創造板》研發團隊接洽,一起聊聊這款小遊戲的開發故事。

堅守初衷,精準獲取使用者群

隨著小遊戲引擎能力逐步變強,開始支援了3D能力的研發,而《迷你世界》中“微縮方塊”的功能特別受到玩家的歡迎,研發團隊在創作這個點上做更多方便、快捷、有趣的嘗試。同時多維度的服務《迷你世界》內容生態中的遊戲創作者與開發者,讓他們能夠純粹的體會到遊戲樂趣,而不需要為工具發愁。

因此,在《迷你世界》遊戲基礎上衍生出的官方創造工具——《迷你世界創造板》,這款遊戲研發的初衷主要是給廣大青少年提供一個更健康的畫素場景搭建環境,脫離必須在遊戲場景中進行畫素作品的搭建桎梏,同時基於小遊戲平臺打造更便攜的創作入口,即開即玩,並且更方便的將自己的作品分享給好友,共享創作樂趣。

白鷺引擎助力《迷你世界》研發團隊開發3D小遊戲版

《迷你世界創造板》核心使用者群主要聚焦在:迷你世界的玩家和所有體素愛好者。

而專案團隊成員則匯聚了擁有各種專案經歷的策劃同學,製作多款小遊戲的資深程式設計師,大家基於相同的願望和愛好聚集在一起,希望共同開發一個有趣的創作平臺,讓眾多玩家一起會因為愛好聚集在一起,分享自己的作品。

攜手白鷺引擎提高開發效率、快速上線

由於《迷你世界創造板》研發團隊第一次使用白鷺引擎,對其熟悉度並不高,這次做的又是相容2D/3D創造場景的專案,因此研發團隊在正式開工前已經做出預判:過程不會特別的順利,會遇到一些問題。

研發團隊在確認引擎後的第一時間就與白鷺引擎的技術支援團隊聯絡並達成合作,希望幫助他們解決專案開發中的難題,從而提高開發效率,節約時間進而壓縮成本,實現專案快速上線。

我們通過具體開發問題例項來看下《迷你世界創造板》研發團隊開發過程中遇到的問題及白鷺引擎技術支援團隊給予的解決方案:

第一個是遊戲的DrawCall過高導致遊戲比較卡的問題。

《迷你世界創造板》遊戲中存在著大量的立方體物件,在最初的版本中,研發團隊是將每一個立方體物件作為一個 GameObject 進行維護。由於遊戲中的場景可以達到 100*100*100,這樣的話 GameObject 的理論值就會高達一百萬。研發團隊在測試一個場景採用60*60*60的尺寸時發現:遊戲的DrawCall 已經達到了二十萬,根本無法渲染。

白鷺引擎技術支援根據此需求提供了定製技術Demo,建議研發團隊將立方體修改為使用自定義Mesh頂點繪製的方式來去實現。這樣每個場景中的模型不再是一群立方體模型的集合,而是僅一個通過演算法自定義生成的模型。由於WebGL 1.0 版本一次繪製僅支援 65535 個頂點,所以最終繪製並不是一個模型,而是根據定點數量動態新增。

通過這項優化,在上述60*60*60的遊戲場景中,DrawCall 從20萬降低至60,遊戲幀頻可以60幀流暢執行,順利解決了此問題。

第二個是光影效果問題。

《迷你世界創造板》研發團隊最開始採用的是白鷺引擎官方提供的平行光源進行燈光陰影處理,但是這種方式在遊戲場景中有些不協調。在白鷺引擎技術團隊的幫助及建議下,我們採用了 Ambient Occlusion 的技術,並將其進行進一步的簡化,通過自定義頂點資訊和自定義Shader,實現了完全不依賴於平行光實現了光影效果。具體的技術原理和效果預覽如下所示:

白鷺引擎助力《迷你世界》研發團隊開發3D小遊戲版

白鷺引擎助力《迷你世界》研發團隊開發3D小遊戲版

第三個是 2D/3D渲染結合。

《迷你世界創造板》遊戲中分別為使用者提供了2D和3D的創造場景,因此研發團隊對2D/3D遊戲畫面的相容及互相切換要求比較高。

而在Egret Pro 早期提供的技術方案是在 3D 場景中建立一個Stage2D節點用於顯示2D內容,這個2D節點中可以使用現有的 Egret2D API。但是這種方式結合 2D/3D程式碼書寫相對比較生硬,在一開始還有一些BUG。

為了改善這一開發體驗,白鷺引擎技術支援團隊提供了一種新的方案,將 Egret Pro 打包為一個庫專案,然後在現有 2D 專案中可以直接引用這個庫,這種方式我們認為對開發體驗改善非常大,未來的專案中我們會繼續採用這種新方案。

白鷺引擎助力《迷你世界》研發團隊開發3D小遊戲版

此外,白鷺研發團隊還將 Egret Inspector 適配到了 Egret Pro 中,大大改善了3D遊戲場景中的2D UI的開發效率,帶給我們一個小小的驚喜!讓我們印象深刻!

《迷你世界創造板》是 Egret Pro早期版本使用者,相比於初期版本,現在的Egret Pro在功能及釋出平臺支援方面已經有了很大提升,已經可以同時支援釋出Web 版本與微信小遊戲、EgretNative,OPPO小遊戲,vivo小遊戲等多個平臺,幫助遊戲企業多渠道獲取使用者。我們也相信未來白鷺引擎研發及技術支援團隊會不斷的優化提升開發體驗。

感謝《迷你世界創造版》研發團隊的分享以及對白鷺引擎研發及技術支援團隊的認可,也希望他們可以繼續延續創造體驗,幫助迷你世界的玩家和所有體素愛好者在這裡展示一個又一個創意設計!

《迷你世界創造版》小程式碼

相關文章