cocos2d-x-3.6 引擎概述

cocos2d-x是一個遊戲開發引擎,從發佈到現在也有五六年了,一路看它慢慢壯大。它是現在應用最多的開源2d引擎,沒有之一,據說已經佔領90%的市場,所以,對於想從事遊戲開發的童鞋來說還是有必要學習一下的。

那麼問題來了,什麼是遊戲引擎?

一個寫安卓和ios應用的程序員,如果想通過自學來轉向遊戲開發,這個問題肯定要先弄清楚,否者堵在心裏會不踏實,也不利於後面的學習。學習一個事物,首先要了解它的本質,而不是上來就去用它。

汽車引擎,飛機引擎,生活中很好理解,你看得見,摸得着,好像不需要解釋。汽車引擎,可以理解爲就是發動機,汽車最核心的部分,整部汽車的動力系統,是汽車的心臟。

那麼遊戲引擎呢,怎麼理解。

汽車沒有發動機,從外觀上或許還是一部汽車,但是它也就長了一個汽車的樣子,跟一堆廢鐵沒什麼兩樣。

而一個遊戲引擎卻並不是這樣。開發一款遊戲,你可以使用引擎,也可以不使用引擎,開發完成之後它都是一個遊戲。你可以在安卓上用安卓的應用接口來開發一個java遊戲,塔防,連連看,橫版rpg,這都是沒有問題的。因爲遊戲,本質上就是一個無限循環(遊戲循環),你所有的邏輯都在這個遊戲循環裏面,所以你完全可以自己實現,不借助任何引擎。

所以,有人喜歡把遊戲引擎比如成汽車引擎,我認爲這是不正確的。你告訴新手,遊戲引擎就像汽車的發動機,是動力源泉。那麼問題來了,我自己寫的遊戲沒有引擎,這個怎麼理解成汽車發動機,汽車沒有發動機就是堆廢鐵了。

遊戲引擎,更應該理解爲一組工具,一個框架。像cocos2d-x這類引擎,屬於代碼引擎,就是說它提供大量封裝好的代碼,你需要學習各個代碼模塊的使用方法才能熟練運用。這類引擎學習成本較高,因爲要熟悉引擎源碼。還有一類引擎像Unity3D,屬於高度封裝的工具性引擎。學習成本要低一些,因爲他更直觀,更上層。但是想要精通引擎,都需要有紮實的編程功底。我這裏只講講cocos2d-x,有機會以後講Unity3D。

cocos2d-x說白了其實就是一個開發框架。你用不用它,遊戲沒有本質的區別,區別在於開發的過程。比如安卓上,同樣是寫一個連連看場景,如果不使用引擎,你可能需要自己寫個view,計算可視區域,根據可視區域計算每一個方格的大小,每個格放一個圖片,調用onDraw方法來重複繪製,這樣開發出來一個連連看,是跟安卓平臺相關的,因爲你使用了安卓應用框架的上層API,這個遊戲不可能直接移植到ios平臺上去。同理,你在ios平臺用oc開發一個這樣的遊戲,那麼它跟ios平臺相關,你也不可能移植到安卓平臺上去。然而,如果使用cocos2d-x引擎,那麼就需要熟悉引擎裏面一個場景的概念,精靈的概念,節點的概念,然後使用引擎的方法把這些小元素組織起來,就是一個遊戲場景。這個時候開發出來的遊戲,就可以移植到多個平臺。

爲什麼會這樣?

這就是cocos2d-x引擎的威力了。前面說了,引擎只是一個框架,使用與否似乎沒有多大區別。然而並不是。大家知道,遊戲無非就是將一些圖像,聲音按照一定的邏輯組織在一起的一個應用。而各個平臺有他們自己的組織方式,對於各平臺的上層開發者來說,你已經遵循了這個平臺的組織方式,那麼開發出來的遊戲當然不能拿到另一個平臺去運行,因爲它不遵循另一個平臺的組織方式。如果有個組織方式,在各個平臺上都通用,那麼不就可以按照這個方式開發出來誇平臺的遊戲了麼。是的,cocos2d-x就是這樣的一個組織方式。引擎會做很多基礎工作,比如怎麼把一張圖片顯示在屏幕上,怎麼播放聲音,怎麼過渡畫面,怎麼製作特效。所有遊戲裏面有的元素,都會被封裝成一個個完整的實現,你只需要拿來用,不需要關心怎麼實現的。而cocos2d-x引擎做了更多,它實現了整個遊戲的主循環,同時提供很多小顆粒的代碼封裝,比如例子特效,聲音播放,動畫特效,這些只需要調幾個函數就可以實現。我們只要在主循環裏面組織遊戲邏輯就可以實現整個遊戲了。這個過程就像做一個仿真人,給了你一個人體骨架,製造肌肉,製造毛髮,製造血的設備,你只需要按照骨架,製造相應的血肉填充到骨架裏面,最後一個仿真人就出來了。再說它爲何可以跨這麼多平臺,其實並不是它天生就這樣。只是因爲,它跨的平臺都支持標準的openGL ES接口,引擎針對不同的平臺,做了一些適配工作,讓各平臺都使用openGL ES來繪製圖像,然後使用C++來實現底層邏輯,這樣就可以跨平臺了。說的比較簡單,大家可以看我之前的博客,有比較詳細的講解cocos2d-x如何跨安卓,win和ios三個平臺的原理。

最後總結一下,遊戲引擎其實就是一個框架和相應的一組代碼模塊。在這個框架上,使用這些代碼模塊來實現遊戲邏輯,會事半功倍,最後開發出一款遊戲。

發佈了134 篇原創文章 · 獲贊 179 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章