cocos2dx 3D遊戲製作參考

(以下內容依據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能進到瀏覽器裏面,我們遊戲就能跑在裏面。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章