天天看點

2D開源遊戲引擎調研報告(四)四.Cocos Creator五.橫向比較

四.Cocos Creator

0.基本介紹

Cocos Creator 是以内容創作為核心,實作了腳本化、元件化和資料驅動的遊戲開發工具。 具備了易于上手的内容生産工作流,以及功能強大的開發者工具套件,可用于實作遊戲邏輯和高性能遊戲效果。

1.使用語言:

使用Java Script語言

注:js采用單線程,不适合進行大量運算

附參考資料:https://blog.csdn.net/w2765006513/article/details/53743051

2.可執行檔案可以運作的平台

可以生成Android、Widows、Mac、ios系統的可執行程式及釋出在小程式平台(如微信小程式、小程式等),後者可以直接釋出,但前者需要對應系統的開發工具生成可執行檔案。

Android→使用Android Studio

Windows→使用Visual Studio(CocosCreator最新版本不能指定VS目錄,可能無法建構項目。我是先建構web檔案再通過第三方軟體轉成exe,非常麻煩)

Mac、ios→使用Xcode

Js環境下載下傳官網:https://nodejs.org/en/

(建議下載下傳低版本7.10.1,最新版本可能安裝失敗)

3.對象的封裝、繼承、執行個體化等功能

用滑鼠将層級管理器的對象拖拽進資料總管,即可生成相應的資源檔案(字尾名為prefab)。Prefab檔案在代碼中可以使用instantiate方法執行個體化新節點,

4.多場景的切換

使用LoadScene方法

5.實體引擎:

碰撞檢測:

①先開啟碰撞監測:

在物體挂載的腳本中添加回調函數,名稱為:

onCollisionEnter

onCollisionStay

onCollisionExit

則物體在發生碰撞後會回調相應函數

實體模型:

實體:

使用rigid body

附:新版本似乎有一個功能,可以根據圖檔形狀自動設定碰撞監測區域(可以不規則),也可以手動描點勾勒區域(目前沒試過)

繩子:

制作多個實體節點(rigid body),用rope joint(關節)連接配接起來

引力效果

無相應元件,需要自己在實體上施加力

6.粒子效果

1.使用第三方工具Particle Designer(https://www.71squared.com/particledesigner,付費)或Particle2dx(http://www.effecthub.com/particle2dx免費線上工具)進行制作

2.制作完成之後,生成粒子plist檔案

3.在CocosCreator中添加一個渲染節點:PracticleSystem(粒子)

4.将制作生成的粒子plist檔案,導入CocosCreator中的資料總管中

5.從資料總管中的粒子plist檔案拖入到粒子的屬性檢查器的File屬性中,即可顯示你制作的粒子動畫

7 .UI元件,包含:

按鈕:有

标簽:有

定時器:使用schedule函數

菜單:無(但是有了圖形化編輯器,用button制作還是很友善的)

複選框:有

進度條:有,progressbar

滑動條:有,slider

文本框:label

Cocos Creator的節點采用元件形式,每個節點都是由node及其它(1個或多個)元件(如button、label等)拼接而成,可以自己拼接,也可以用系統預設有的功能,非常友善

8.利用容器設定對象在螢幕中的位置:

可以利用節點的相對關系在代碼中設定位置,或使用下列方法:

ScollView 滑動視圖

PageView 頁面視圖

九宮格:直接在圖檔資源上操作。填充圖檔時,用Sliced(九宮格)方式填充

9.光影渲染

無,需要自己通過代碼添加亮/暗圖層

10.動畫部分,包含:

10.1對象的位置、朝向、移動

①5用update函數和setposition方法配合

②使用moveto等方法

10.2對象的顔色變化

使用Tween緩動系統或update函數設定

注:Cocos Creator的Tween可以緩動任意對象的任意屬性,而Cocos2dx隻能緩動節點的屬性

10.3數字的變化

同上

11.音頻檔案的加載、播放

使用Audio Source或audioEngine播放音效,一般為mp3

12.視訊檔案的加載、播放

使用VideoPlayer播放,官方建議mp4格式

13.學習資源的豐富性

CocosCreator的API有中英兩個版本,介紹較為詳細,網上也有很多教程

評價:CocosCreator 在功能上是對Cocos2dx的一次更新,最直覺的差別在于有了圖形化編輯器,而不是純代碼的方式,是以在搭建架構、增減節點、設定屬性(尤其設計UI)等方面非常容易操作。代碼的結構也更為簡單,提高了開發效率。

但是,CocosCreator依然有許多功能是依賴外部工具的。編輯器内無法編輯代碼(可以用VS code編輯、調試、設定斷點,配套性較好),程式預覽時一般在浏覽器上運作(也可以在自帶的模拟器運作,但效果不佳)。生成各平台的安裝包也要借助外部工具。此外,引擎的編譯器存在一些bug,時常莫名報錯(退出重進就能消除報錯)。不過,Cocos Creator仍然處于上升階段,每一次新版本的釋出都會有不小的變化,目前的bug在未來應該能得到解決

綜合來看,CocosCreator在開發各類小型程式、簡約風格程式上的優勢較為明顯。

五.橫向比較

1.資源檔案的使用:

1.1導入檔案:将檔案拖入遊戲目錄後,四個引擎都可以通過檔案的相對位置和名稱獲得該檔案(Cocos Creator還支援通過檔案的UUID通路檔案)

1.2 檔案導出:

Godot:可以将任意節點儲存為場景檔案,該檔案可以直接播放運作,

Creator:任意節點可以儲存為prefab檔案(預制資源),同1.1中使用

Panda3d、Cocos2dx:由于是純代碼,無需也無法導出部分檔案

2.實體引擎:

完整性:四者都能實作基本的實體效果(如碰撞、運動等)

Godot:使用内置引擎

Cocos2dx:采用了Box2D實體引擎和Chipmunk實體引擎,也可以禁用這兩個并調用其他實體引擎API

Panda3d:使用ODE實體引擎

CocosCreator:采用Box2D,也可以使用其他實體引擎

3.修改已有的開源部分代碼:

Cocos2dx:每建立一個檔案時,都會自動複制一份它的所有API,放入sln下,是以可以直接修改,且非常友善,但是每次編譯會需要較長的時間

Panda3d:安裝包自帶python,預設情況下,所有程式共用一個API。可以将其複制并修改,但需要手動設定API路徑。

Godot:所有工程檔案共用一份API。

Cocos2dx:所有工程共用一份API。它的底層有cocos2dx和JavaScript兩個引擎,編輯時使用js語言,編譯時會翻譯成c++語言,修改底層代碼起來會比較困難

4.引擎的成熟度及發展情況:

Godot: 2014年釋出,目前仍在更新,成熟度較高

Cocos2dx:成立于2008年,近幾年已不再更新(技術人員已轉向cocos creator的開發),功能基本完善,但存在一些因為需要相容舊版本而存在的曆史遺留問題。

CocosCreator:2016年成立,成熟度較低。目前引擎仍然有不少bug,但也仍在不斷更新修複當中,個人比較看好它的未來。

Panda3d:仍在更新。因為主打3d功能,2d上并無明顯優勢

5.學習資源

1.API

Godot、CocosCreator:有中、英文兩個版本

Cocos2dx、Panda3d:隻有英文

2.中文社群

Godot、Cocos:有(Godot似乎要翻牆通路)

Panda3d:沒找到

3.教程、學習資源

Cocos2dx > Godot > Cocos Creator>Panda3d

附:搜尋範圍:百度+github

如果隻看中文資源的話,兩個cocos引擎資源較多

6.引擎效率:

測試内容:每一幀在螢幕上方繪制一個圖像,該圖像不斷下落,到螢幕底部時消失(約25s)。記錄引擎幀率

Godot:穩定在40幀上下

CocosCreator:使用html5(浏覽器播放)時,15-20幀上下。建構成exe檔案播放時,能達到60幀(60為最高幀率,即沒有測出上限)

結語

通過對這四款引擎各功能的學習、比較,我認為目前最适合的是Godot,它在各功能表現的四平八穩,開發應該會比較順利。Cocos Creator的話,目前容易遇到各種bug,可以期待一下它以後的表現。

以上各個引擎的功能我隻是走馬觀花地了解了一下。如果存在錯誤或有版本更新,希望各位指出。

繼續閱讀