黑科技:用Unity編輯器+Cocos引擎開發3D MMORPG

2021-01-14 COCOS



(以下內容依據Cocos秋季峰會演講速記稿整理)


主持人王哲:


前面幾個演講人展示了不同的技術解決方案。


第一種是《三國之刃》用Flash完成所有動畫、UI製作,然後用JSFL開發一個Flash擴展來做導出,最後到Cocos引擎裡面解析播放。這種搭配方案非常流行,《刀塔傳奇》、《火柴人聯盟》也是使用這種方式。很多CP都有類似的方案,原理大同小異。


第二種是《像三國》,先在Maya裡面烘焙好,然後在Cocos Builder裡面讓美術根據各種透視規律拼出三維的視覺效果來。


下面一個演講環節的是真正的黑科技,我先不劇透,有請南京爐石CEO朱偉給我們分享一下怎麼用Cocos開發一個完整的3D的MMORPG。


演講者朱偉:


我是南京爐石CEO朱偉,下面由我來跟大家一起分享一下勇於Cocos開發一款3D MMORPG整個的過程和經歷。說到3D MMORPG的第一印象可能就是:Cocos能玩這個嗎?下面我用真機給大家演示一下。



(編者註:此人在全場大屏幕上聚精會神、旁若無人地玩這個遊戲至少5分鐘,從主城進推圖,打穿一個副本到boss戰鬥結束。不過大家看得津津有味。小編鄰座的聽眾邊看邊感慨說:「看來我們對Cocos的理解還是太淺了」)


這是我們這段時間裡用Cocos 3.8開發出的3D MMORPG試玩的版本。還在研發中,這個版本中間還有各種各樣的BUG,但是總體上而言,這裡面開發3D MMORPG遊戲所用到的基本要素,在整個遊戲裡應該說都體現出來了。


下面具體跟大家分享一下我們在開發過程中所用到的功能模塊和流程。


這個是Cocos引擎在3D功能開發上的歷程,我們應該說在最早的加入3D功能版本開始就嘗試著用Cocos開發一些3D遊戲;到了3.5之後,Cocos加入了3D粒子功能;後面又陸續加了一些功能,比如3.7的導航位置支持,到了3.8裡的光照這些功能。到了3.8之後我們感覺實際上Cocos的開發一款重度的3D MMORPG的要素都具備了。唯一感覺比較欠缺的是沒有工具。



這個是我們遊戲分解出來的3D的功能模塊清單。第一塊是模型與動作,這裡面涉及到一些主角的模型和一些動作,特別是分解動作的因素。第二塊是整個遊戲的特效。這個特效分成四種,一是粒子特效,還有一種是3D的拖尾效果用來做刀光,第三種是模型的UV動畫,最後是2D的面片動畫。第三塊場景。包括場景組合、地形、光照和天氣效果等。最後是常用到的基本的功能,比如說尋路用的網格導航功能和天空盒的功能等等。

首先跟大家講一下模型動作這一塊的基本的製作過程。模型動作應該是比較簡單的,首先就是說通過3DMax軟體建模,注意手遊上面角色面數。建完了之後就導入出去FBX,動作和模型是分離出來,便於管理。接著輸出C3B文件,放入引擎。我們自己在Ccoos Simulator裡面自己改了一些代碼,加載c3b文件,使其可以做預覽的工具。這裡面有很簡單的功能,就是把模型調進來,播放一下基本的動作。最大的好處是我們的美術做出來之後實際上希望在第一時間在引擎裡看到效果,這個工具完成了美術最基本的要求。


接著是3D的粒子和編輯。現在Cocos用的是第三方的3D粒子編輯器Particle Universe。著名遊戲《火炬之光》裡面所有的3D特效都是用這款軟體製作出來的。同樣我們通過這個軟體製作出來的自己遊戲裡的3D粒子效果,同時自己也基於cocos引擎做了很簡單的粒子的效果預覽工具,實際就是放大、縮小、旋轉這些功能提供給美術。


我們把模型、動作,特效都做出來之後,怎麼把它們拼接起來呢?我們自己做了比較簡單的工具,通過這個工具我們可以把Particle Universe做好的3D粒子放進來,把動作和模型也放進來,可以旋轉它,可以調整三者之間的位置,可以播放和預覽一下。這個功能最後做出來的效果還是比較滿意的。雖然簡單,但是非常的實用。


黑科技來了:場景的製作。這一塊我們花了很多時間在研究Cocos引擎上怎麼做場景。我們最早也寫了一些場景編輯器,感覺效果不是很好。後來我們考慮到一個這種的方案,就是通過3DMAX製作單個場景所要的要素,然後通過Unity為組合場景,然後導出Cocos支持的格式。這個就要美術去學習簡單的Unity基本的操作,這裡面也有一個基本的設計過程,首先是把基本的要素導進來,通過Unity來設計場景。


做完了之後,覺得這個場景OK了,下面一步就是輸出到Cocos引擎上來。第一步首先是要把光照貼圖做出來,Cocos引擎在地形和建築之間放上貼圖的話,需要用兩張,而Unity是合在一起,所以我們要把地形的光照貼圖和模型的光照貼圖分離出來。



右邊最上面是Unity導出來的全景的光照貼圖。下面這一個是地形本身的光照貼圖。第二步就是要把建築的光照貼圖重新烘焙一遍。



在重新烘焙所有建築光照貼圖的時候,務必注意要把原來製作的地形全部刪掉,否則的話Unity默認烘焙是全景的。


同樣我們需要把我們的光照貼圖轉換成Cocos引擎支持的支持。光照貼圖得到了。下一步就是:場景怎麼辦?場景在Unity有自己的格式,但是沒關係,通過寫個插件把它導出成JSON格式,然後再到Cocos引擎裡加載。做完了之後,雖然實現了效果,但是JSON文件不能動它,一動的話,就錯誤了。這種方式還不是很理想,後來想到另外一個方案,因為Unity可以通過 Collada (DAE) Exporter可以導出成DAE格式,再通過Blender導出FBX的格式。


解決了場景之後,我們同樣也做了簡單的預覽工具,可以預覽一下我們導出場景的基本狀態。


接著就是我們要把地形導出來,Unity有一個可以把地形導出Terrain高度圖和地形圖的功能,這個拿過來用就可以了。


最後我們得到了地形圖、高度圖、地形的貼圖加上場景的貼圖等,最後通過代碼就可以組合起來,這個代碼Cocos引擎有案例,可以按照原來的代碼格式拼接起來就可以了。但是拼接的過程中有一個關鍵點,就是大小的問題,因為本身Unity有它的單位,而Cocos引擎有自己的單位,所以我們的做法很簡單,第一就是說在Unity一定要計劃好比例,在Cocos引擎按照同樣的辦法去做就可以了。這方面不用做更多的工具的放大。通過代碼的組合,實際上就組合成了我們剛才看到的通過手機演示遊戲裡龐大的場景。後面還有一些其他的功能,這些功能Cocos官方裡都有,我就不一一細說了。


完成後的在手機裡運行起來主城的效果:


戰鬥技能效果



講到現在,可能大家心裏面有一個疑問,用了這麼多Unity為什麼不直接用它呢?


我們團隊接觸Cocos引擎有兩年多,而且用Cocos開發了很多的產品。一方面跟Cocos的本身有一定的感情。第二,整個團隊的磨合也相當不錯,所以貿然去學習Unity的風險很大。當時我們就想,既然行業裡面很多人用Flash做動畫,然後用Cocos引擎渲染,那麼為什麼我們不用Unity做場景,然後用Cocos引擎渲染呢?Unity只作為編輯器在美術團隊使用,技術人員不需要重新去學習,這樣既有了編輯器的方便,又有享受開源的好處。所以基於這些原因,我們最終還是通過Unity編輯器 + Cocos引擎3D功能這樣組合的方式,得到了一個比較滿意的結果。


當然還有一些其他的因素,如像今天大家在談論的手機頁遊。王哲他們早上已經演示了3D遊戲在騰訊瀏覽器裡面運行。我覺得3D在手機頁遊上最終會有很好的表現。我們這個遊戲是用Lua寫的,什麼時候Cocos的Lua Runtime能進到瀏覽器裡面,我們遊戲就能跑在裡面。


我的分享就到這裡,謝謝大家!

相關焦點

  • Cocos Creator 3D v1.0.1 正式發布
    部分 3D 小遊戲,點擊體驗雖然目前上線的這些遊戲還比較簡單,不過我們相信,更多高質量的作品正在開發中,我們合作的幾個項目也進入了到中後期,一經發布一定會告訴大家。gltf 資源的材質編輯效果[IMPROVE] 優化 fbx/gltf 資源中的貼圖導入流程[IMPROVE] 優化構建面板操作以及支持單獨編譯引擎[IMPROVE] 構建時清空 Loader 緩存[IMPROVE] 調整編輯器 Camera 的近裁剪面為 0.1[IMPROVE] 禁止 SkeletonAnimationComponent
  • 遊戲開發5個階段學習路線給你準備好了!(含引擎/書籍資源)
    如今的90後、00後誰不在閒暇之餘開黑兩把,都覺得自己的休息時間「不完整」。遊戲產業的布局越來越廣闊,不僅局限於娛樂,遊戲孵化、功能遊戲、跨界應用(將電子遊戲的元素、涉及、技術和架構創興應用於醫療、教育、軍事、企業培訓、社會管理等垂直領域)這些將逐一實現。
  • 2021新年匯總:Unity項目原型快速開發資源,看這一篇就夠
    PlayMaker (可視化編程工具)(收費) : https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368 Odin - Inspector and Serializer(編輯器擴展)(收費):https
  • 遊戲開發完整學習路線!就是一門實時渲染的藝術!
    因為不同平臺下的性能不同,支持的程式語言也不盡相同,所以針對不同平臺下的流行的遊戲引擎也是不同的(方括號裡面是特別推薦的,基於開源性、易用性、性能與效果等方面的綜合水平推薦): windows或遊戲主機:【Unreal】、寒霜、CE3 蘋果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow
  • 四元數與3D旋轉實例! Cocos Creator 3D Quternion !
    用幾個實用的例子帶你理解四元數!文末獲取完整項目!前言本文不會講太多四元數公式的推導過程,重點講講幾個接口的使用和個人理解。(矩陣唯一,歐拉角有無數種)實例構造四元數四元數的定義這邊就不詳細說了,大概知道就是用四個數字去表達旋轉。那麼怎麼去構造這個四元數呢?我們從API入手去講解和理解。
  • 【官方說明】Unity 5 引擎專業版和個人版解析
    Unity 的宗旨是希望大家都能開發遊戲和應用,就某些層面來看我們獲得了很大的成果,甚至讓其他引擎工具也一起共襄盛舉來協助開發者,為了扶持廣大獨立開發者或無法獲取營收的小公司,我們隆重推出新的Unity Personal Edition(個人版)。免費, 我們說的免費意思就是真的免費,不收取任何的分成或授權費用。
  • Cocos2d-x v3.3-RC0 發布說明! - OSCHINA - 中文開源技術交流社區
    注意事項lua在新建工程時,引擎自帶的lua文件會被拷貝到src/cocos目錄下。這樣開發者可以更好地管理所有的所有的lua文件。我們同時提供了cocos/init.lua用於加載引擎自帶的這些lua文件,所以如果你是從舊的引擎升級上來的話,需要刪除對這些自帶lua文件的加載操作:require "Cocos2d"require "Cocos2dConstants"require "bitExtend"require "DrawPrimitives"require "extern"require "json"require
  • Unity項目開發過程中常見的問題,你遇到過嗎?
    最近看到有朋友問一個unity遊戲開發團隊,需要掌握哪些知識之類的問題。
  • Unity 在 GitHub 發布 Unity 引擎和編輯器的 C# 原始碼
    3月23日我們在GitHub上發布了Unity引擎和編輯器的C#原始碼,僅供Unity學習參考使用。
  • Unity升級引擎推動開發大眾化,確認參展ChinaJoy
    作為開發出色的遊戲或應用程式的基礎,Unity強大的圖形引擎和全功能編輯器還能將創建的內容輕鬆發布到多個平臺上,如行動裝置、家庭娛樂系統、個人計算機以及嵌入式系統。在VR內容開發方面,69%的Oculus Rift平臺VR內容、74%的HTC Vive平臺VR內容、87%的Gear VR平臺內容和91%的HoloLens平臺內容均使用Unity進行開發。目前,超過25家全球知名平臺與Unity達成合作,Unity開發者可以輕鬆地將遊戲與應用部署到各大平臺。這意味著你至少玩過一款使用Unity引擎製作的遊戲。
  • Unity 實用技巧 - 物理系統初識
    官方文檔:https://docs.unity3d.com/Manual/PhysicsSection.html01  Rigidbody(剛體)/ Rigidbody2D(2D剛體)在使用由於該組件代替了它本身的運動,所以不應該通過Transform來改變位置,旋轉;相反應該使用Forces來推動GO並讓物理引擎計算結果。Rigidbody組件擁有一個Is Kinematic 的屬性,該屬性可以將其從引擎的控制中移除,從而可以用腳本控制GO的運動。注意:儘量不要使用腳本控制該屬性的開關。
  • Unity Technologies C輪融資近兩億美元,我卻想起了另一家公司
    根據Unity Technologies的數據,排行前1000名的移動遊戲中,有31%使用了Unity 3D引擎。不光是移動遊戲領域,在VR和AR上Unity也頗有建樹。Oculus Rift30款首發遊戲中有16款用Unity 3D打造,在Gear VR上這個份額達到了90%。在國外,被用來和Unity比較的通常是Unreal。
  • Unity3D 尋路系統
    { nav = this.GetComponent<NavMeshAgent>(); //SetDestination方法即為尋路方法,參數為目標物體的三維向量 nav.SetDestination(target.position); } }2、代碼測試用以上代碼進行測試結果如下
  • 博主營地 | Unity3D 實用技巧 - 理論知識庫(一)
    發稿入口:unity.cn/articles  更多Unity博主專屬權益見文末  其實學習Unity3D引擎,我們除了懂得實操,同時兼顧理解一些理論知識,也是挺不錯的積累。今天小編會把常用的一些理論問題匯總起來,後面可以做一個快速的記憶和學習。  請簡述值類型與引用類型的區別。
  • 峰瑞資本講述:我們為什麼領投Unity 1.81 億美金C輪融資?
    而在工具/平臺方面,投資了 Insta360(世界領先的 360 度全景相機生產商),以及新瞳科技(VR 視頻技術解決方案,由 Oculus 前員工創立)。在談及對 VR 領域的投資分析時,創始合伙人李豐表示,呈現更精細的 VR 畫面需要更強大的信號處理能力和圖像計算能力。
  • Unity官方示例:在ARCore和ARKit中實現多人遊戲
    在官方正式工具發布前,這個C# API將是一個用於開發ARCore和ARKit跨平臺應用的有用工具。在為ARKit或是ARCore開發AR應用時,通常要用到不同平臺的API和組件。(https://blogs.unity3d.com/2017/08/03/introducing-the-unity-arkit-remote/)這個工具有二個部分:一個是安裝在AR設備上的遠程應用,另一個是放在場景內的組件。後者將從遠程應用收集ARKit數據,然後在編輯器裡生成模擬環境。
  • Unity 3d遊戲開發難嗎?怎麼學好,跟著做就可以!
    Unity 3d遊戲開發難嗎?怎麼學好?入門到精通,跟著siki學院視頻做就可以了!Unity 一個讓玩家輕鬆創建:諸如農藥、吃雞熱門遊戲的綜合型遊戲開發工具。Unity 3d引擎封裝了大部分的功能,讓開發者能用比較直觀的方式開發遊戲,甚至提供了PlayerMaker這種免程序的開發方式,意味著部分開發者可以脫離程序,可視化地編輯自己的遊戲。在編程方面,支持C#和Java兩種語言。而C#開發佔主要地位。推薦學習C#面向對象語言,而且入門簡單。我們通過一個經典小案例坦克大戰2D遊戲讓讀者了解下遊戲開發全過程。
  • Unity引擎5.5版本發布!將帶來微軟Holographic支持_遊俠VR
    在VR技術日益擴張的過程中,遊戲開發引擎,如Epic Games的虛幻引擎和Unity科技的Unity引擎扮演著越來越重要的角色。今天,Unity引擎發布了它最近的更新,版本5.5,帶來了許多全新的特性和改進。