成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

個人關(guān)于Cocos2d-x的一些看法及其發(fā)展展望

移動開發(fā) iOS Android 游戲開發(fā)
這是一篇開發(fā)者對Cocos2d-x的一些看法及對其發(fā)展展望,期待各位的參與討論。Cocos2d-x沒有很復雜的一個架構(gòu),基本上是一些以單件形式提供的管理器和是一些圍繞SceneGraph(CCNode及其派生類)展開的類。這個設計使得cocos2d在結(jié)構(gòu)上很簡潔,使用者很容易上手。

 總體來說,cocos2d-x是一個優(yōu)秀的庫。

Cocos2d-x沒有很復雜的一個架構(gòu),基本上是一些以單件形式提供的管理器和是一些圍繞SceneGraph(CCNode及其派生類)展開的類。這個設計使得cocos2d在結(jié)構(gòu)上很簡潔,使用者很容易上手。

同時cocos2d的設計者充分利用了現(xiàn)成的一些游戲開發(fā)中的工具,將這些工具整合到引擎中來,例如BMFont、TexturePacker等工具,使得制作素材很方便。

作為一個跨平臺的游戲庫,cocos2d-x已經(jīng)做的非常好。 但如果將cocos2d-x定位為一款跨平臺的游戲引擎,我覺得Cocos2d-想可以朝以下幾個地方發(fā)展:

1、cocos2d-x可以提供一個好的游戲框架

cocos2d-x提供的一些Demo,以及教人寫程序的方法基本是讓開發(fā)人員編寫一個CCScene的子類,通過子類化的方式來實現(xiàn)具體的邏輯,作為教學這樣非常好。

作為正式開發(fā),個人建議cocos2d-x可以提供一個具體的游戲框架,這個框架在總體上提供了一個移動平臺的游戲的通用功能(例如:LoadingScene, TitleScene, HighscoreScene等等),游戲開發(fā)人員要做的只是根據(jù)自己游戲的情況來選擇定制自己的游戲。

2、cocos2d-x對游戲邏輯的支持可以增強

對開發(fā)這來說,怎么編寫游戲邏輯是一個麻煩的問題,Cocos2d-x用SceneGraph的方式來管理場景,很自然地,游戲開發(fā)人員肯定希望使用cocos2d-x提供的方式來管理對象,這樣就要從CCNode等對象派生,甚至有的開發(fā)人員還建議直接從CCSprite等萬能類派生類編寫功能代碼。這樣做的方式并非不可以,但作為一個好的開發(fā)人員,你以后會發(fā)現(xiàn)這樣帶來的問題非常多,例如:游戲復雜了之后,你會發(fā)現(xiàn)繼承關(guān)系層次很多,導致代碼需要不停重構(gòu)來適合新的需求,最后你設計的基類越來越復雜等等。

現(xiàn)在比較主流的方式是使用Entity-Component系統(tǒng)來組合出我們的邏輯。關(guān)于Entity-Component系統(tǒng)這里就不再細說。僅僅簡單說明一下:游戲中的對象為一個Entity,每個Entity使用由一個或多個Component構(gòu)成。

例如游戲中的雷電游戲中的一架飛機可以由:Flyable(可飛行Component,提供飛行功能)、Shotable(可發(fā)射Component,提供發(fā)射子彈的功能)、Sprite(Sprite Component,提供顯示功能)、Colliable(碰撞Component,提供碰撞檢測的功能)構(gòu)成。

當然僅僅有Entity-Component系統(tǒng),對于游戲框架來說還是不夠的。例如:當子彈擊中飛機的時候,是直接調(diào)用函數(shù)嗎?直接調(diào)用當然不好。首先子彈和飛機都是Entity,在外部來看,你不知道他們由什么Component組成,直接查詢Component并調(diào)用Component的函數(shù),這明顯就違背了封裝的原則。如果提供了消息系統(tǒng)Event System,通過給Entity發(fā)送消息,Entity中的組件收到消息后,由組建去處理自己關(guān)心的消息,這樣不僅實現(xiàn)功能,而且結(jié)構(gòu)有漂亮。

3、cocos2d-x對游戲開發(fā)工具的支持

對于游戲開發(fā)引擎來說,優(yōu)秀的工具永遠是第一位的。有了工具,游戲開發(fā)者就可以很快的時間做出原型,然后在這個基礎上,通過快速迭代優(yōu)化數(shù)值和表現(xiàn)來快速開發(fā)游戲。

以Cocosbuilder這樣一款工具來說吧,目前階段cocos2d-x要做一款這樣的功能的工具,還需要改善一下代碼。最基本的就是提供持久化(Persistence)的支持。可以任何時刻將游戲的內(nèi)容或者編輯器中制作的內(nèi)容保存到磁盤文件。以后需要的時候可以打開保存的文件。 

要實現(xiàn)這些,我覺得有幾點基礎需要增加:

1、提供RTTI的支持;

  • 可以讓一個對象在運行是判斷是否是某類對象(PS:別告訴我用dynamic_cast來實現(xiàn)。),具體實現(xiàn)可以參考很多現(xiàn)成的方案;

2、提供類工廠的支持;

  • 可以根據(jù)文件中的保存的類名等來構(gòu)造出相應的類,例如:讀到"CCNode"的時候,可以根據(jù)"CCNode"來創(chuàng)建出CCNode對象;

3、提供對象屬性的設置;

  • 當讀取到一個屬性名稱和數(shù)值的時候,提供一個方式來設置對象的屬性。例如讀取到osition的時候,提供一個方式來設置node->setPosition(xxx)。

以上這些是個人的一點設想,希望大家也提出自己的意見。

責任編輯:佚名 來源: Cocos2d-x中文論壇
相關(guān)推薦

2012-04-17 13:12:00

2012-04-17 12:52:01

cocos2d-x

2011-12-12 10:40:08

Cocos2d-X游戲開發(fā)開發(fā)環(huán)境

2013-05-22 15:49:46

2012-04-17 12:44:38

cocos2d-x

2012-04-17 12:38:46

cocos2d-x

2012-04-16 15:20:41

cocos2d-x

2013-12-03 10:58:50

Cocos2D-X磚塊地圖

2013-04-16 10:02:47

cocos2d-x懶人Android開發(fā)

2012-04-17 10:06:08

cocos2d-x

2012-04-17 10:59:31

cocos2d-x

2014-07-31 16:57:30

2013-06-03 17:04:20

CocoStudioCocos2D-X添加CocoStudi

2013-05-22 14:38:44

iOS開發(fā)Cocos2d-x坐標系統(tǒng)

2012-04-17 12:58:44

Cocos2D-X

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho

2012-12-07 11:32:33

Exchange 20

2012-04-17 12:47:27

cocos2d-x

2014-01-03 13:50:06

2013-04-24 16:18:10

觸控科技Cocos2d-x 2
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一区二区三区四区国产精品 | 国内自拍视频在线观看 | 亚洲91精品 | 亚洲日本视频 | 青青久视频 | 亚洲一区二区三区四区在线观看 | 高清国产一区二区 | 日韩久久久久久 | 二区在线视频 | 久久精品网 | 国产精品视频网站 | 亚洲免费人成在线视频观看 | 在线视频a | 成人av高清在线观看 | 夜夜草| 一区二区三区免费 | 五月婷婷视频 | 我想看一级黄色毛片 | 欧美日韩精品影院 | 国产精品v | 插插宗合网 | 久久综合一区二区 | 欧美寡妇偷汉性猛交 | 依人成人| www.887色视频免费 | 91精品国产91久久久久久不卞 | 玩丰满女领导对白露脸hd | 午夜激情视频 | 亚洲视频在线观看 | 中文字幕在线电影观看 | 久久午夜国产精品www忘忧草 | 亚洲国产情侣自拍 | 亚洲综合三区 | 欧美日本韩国一区二区 | 日韩免费视频一区二区 | 狠狠操电影 | 欧美激情精品久久久久久免费 | 国产精品国产精品国产专区不片 | 天堂久久久久久久 | 久久久亚洲一区 | 亚洲第一色av |