var btn_play= cc.MenuItemSprite.create(
cc.Sprite.create(G.imgs.start_n),
cc.Sprite.create(G.imgs.start_s),
function(){
}, this);
㈡ cocos2d-js 和cocos2d-x的區別
cocos2d-js 用javascript 瀏覽器 webgame
cocos2d-x 用c++主要用於移動應用開發
㈢ 自學cocos2d js游戲開發應該按什麼步驟進行
跟你簡要說一下我的自學路,以免你走彎路
背景:
有工作,而且很忙;在不影響工作基礎上用業余時間鼓搗(經常會因為工作耽擱學習進度);基本沒技術背景(初中qbasic、高中pascal半吊子),大學文科,工作也不是搞代碼。因此我感覺我的自學路跟你還是挺契合的。
1
兩年前的一天,決定要做獨立游戲製作人。選定引擎cocos2d,開始學習objective-c語言;(如果你打算只在iOS平台開發可以學obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;當然unity什麼的也不錯但是我還沒嘗試過,一直很嚮往)
2
我跳過了iOS程序開發(似懂非懂看完了斯坦福那一系列的教學視頻),結合當時情況直接選擇了cocos2d引擎,這時開始接觸 @吳一刀 推薦的博客;我主要看的是子龍山人<子龍山人 - 博客園>、Ray Wenderlich<Ray Wenderlich>、Himi<黑米GameDev街區>這些博客里最基本的例子,知易那個以我當時的水平還看不懂。
3
嘗試開始設計自己的簡單游戲,我做打地鼠!當然比教學例子里的打地鼠復雜多了
4
這個過程中發現自己懂的實在是不夠,所以又開啃這本書:Learn cocos2d 2 by Steffen Itterheim & Andreas Low
5
慢慢的發現需要一些趁手的工具和編輯器,並發展出一套自己構建於cocos2d之上的游戲設計架構。我目前的情況是這樣:
關卡編輯我使用plist文件配合自己寫的類;
sprite sheet使用TexturePacker<TexturePacker>;
動畫/UI編輯最初自己手寫太累,後來選擇了cocosbuilder,請注意現在這個軟體已經停止維護,轉而引導用戶使用SpriteBuilder<SpriteBuilder>(域名都做了自動跳轉;SpriteBuilder我木有研究過,建議你研究一下)。
粒子編輯我自己還沒實際用到,如果真正需要我感覺cocosbuilder的夠我用的。//更新:後來用到了ParticleDesigner和cocosbuilder兩個軟體的粒子編輯混搭
我當時遇到的一個大麻煩是如何讓cocosbuilder、cocos2d版本互相兼容且cocosbuilder無問題。大概情況是這樣:cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不協調怎麼辦?;What version of Cocosbuilder and Cocos2d-iphone should I choose?
目前我使用的cocosbuilder 2.1版本(漸變層有bug、並且很可惜動畫播放完沒有觸發消息的機制,我只好把每個動畫時長都手動記錄一下自己處理)
======3月12日更新======
在 @GarfieldKwong 指點下發現這個版本動畫播放完是可以觸發消息機制的,更高級版本3.x支持的效果應該是在動畫中就加入callback的關鍵幀
新技能get√
具體代碼可見下面學習案例的第一個例子里Explosion部分
=====================
cocosbuider的學習可以看兩個例子Creating a Game with CocosBuilder;Introction to CocosBuilder;然後就是多用多嘗試。
6
整個學習過程要學會查資料、學會尋求幫助,我主要用的stackoverflow(話說剛剛發現stackoverflow的reputation喜過15,終於可以投票了:)
在學習過程中得到了子龍山人(我認為本尊是這位 @屈光輝 )、LearnCocos2d作者Steffen、 @kubisoft 以及眾多網上朋友的幫助,再次表示感謝。
7
硬體及開發者資格:看完c++開始看obj-c,這個過程一直是使用的vmware虛擬機安裝的mac系統寫程序;然後入手一個最便宜的mac pro、以及iPhone,嘗試玩各種游戲;從看c++開始大約過了1年半(已經有非常簡陋的游戲demo)才真正購入iOS開發者資格並開始真機測試。
8
嘗試過的一些其他工具、各種彎路和坑、以及發散內容:
可以拖拽方式寫代碼的stencyl <Stencyl: Make iPhone, iPad, Android & Flash Games without code>;
最初學的不是ojc-c而是譚浩強老師的c++程序設計(雖然有人不喜譚老師,但那書是中文的讓我對面對對象程序設計有一些初步的概念,再看英文的obj-c不至於太摸不著頭腦,反正手頭正好有這么一本買了6年沒看的c++。。。);
嘗試過<Tiled Map Editor>但自己目前的坑沒有用到;
嘗試過一點物理引擎和粒子,但自己目前的坑沒有用到;現在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU佔用優化,內存方面我最低支持4S沒遇到大問題
學習音樂製作,這個我小時候學琴一直也喜歡音樂所以有一點點底子,如果沒有基礎可能上手有門檻;開始用的軟體LMMS,但是音源插件在64位系統的問題我一直沒解決掉時間精力也不多,所以是暫時停滯了;最近發現Garage Band可能也可以寫歌;另外還試過一個很有歷史的微軟的音樂自動編輯器,很好玩,用來做背景音樂也不錯。
入手手繪板學畫畫(這中間糾結了好久才決定用點陣圖不用矢量圖),如果你能找到熱愛游戲的美術同學一起搞那最好不過。但是我一直對畫畫心癢難搔。。。所以入了這個深坑,曬一曬:
轉載
z
㈣ egret 和cocos2d-x-js哪個目前更穩定更好用
如果大型游戲,強烈建議不要使用cocos2d-js
我們目前的幾個項目都是cocos2d-js開發的,我打算把這幾個項目轉egret。有如下幾個理由:
1、cocos ide有BUG:斷點會崩潰、代碼提示很差、內存太高、虛擬機的菜單欄會影響事件(迭代了很多版本,這菜單欄BUG都沒修復)
2、studio的工作流在幾個引擎中是最差的,而且有BUG。經常和實際表現不一致。而且內存佔用大,會崩潰。不能繼承(這個問題最嚴重,不能繼承按鈕,那麼按下縮放等高級功能就很蛋疼)。
3、
架構太差。寫點小功能沒事,如果想寫大型游戲,這套架構會讓你抓狂!比如最簡單的按鈕事件,我必須在事件方法裡面加個觸摸類型判斷。一個很簡單的點擊,就
多出很多這種相似的代碼!4、UI有好幾套,然而每一套都有BUG。CCUI的設計也是很糟糕的!同時也是崩潰的罪魁禍首。
5、引擎BUG問題,
很多BUG會讓你欲哭無淚,比如坐標會出現undefined。再比如熱更新的BUG,XCODE編出的包默認是js而不是jsc,當這個包發布商店就會
出現不能熱更新的問題,同時也進不去游戲,卡在了熱更新界面。(這個問題導致我們流失了3個月的用戶,知道蘋果商店通過審核位置),再比如
java/objectc和js的交互,這個都有問題!再比如:ios第三方輸入法會導致崩潰!
6、工作流問題,IDE的斷點的觀察變數很不友好、studio導出的配置很大、studio擴展性很差。在IDE 1.2版本出來之前,我們團隊甚至無法斷點,只能列印日誌來debug。
7、工作效率問題,代碼提示先不談。我實現一個簡單的列表都能折騰很久,那ccui的list真是太不好用!除此之外,裁剪、遮罩這些只需要一行的代碼,在cocos下面需要無數行!
8、
引擎升級問題:cocos大概一個月1個升級,egret是2周。然而cocos升級會帶來大量的新BUG,而且兼容性很差。導致我們現在還用3.0版
本。最蛋疼的是,官方的3.6版本又不能斷點了!3.0升級到3.6還會導致布局混亂、九宮失效、崩潰閃退(絕對不是代碼問題這個解釋了)!基本上
cocos每加個新功能都會帶來無數新BUG,老BUG修復量也少,我論壇反饋的問題經常需要迭代2到3個版本才修復,下個版本修復兼職是不可能。而
egret不僅迭代快,BUG修復也勤快!也很少有一些導致產品質量的驗證BUG。
9、官方人員態度問題:我在cocos論壇發的BUG反饋,過了7天才有人來回復。地址(從3.0到3.1和3.2的BUG,官方幫忙看下),再看下egret我發的BUG反饋,當時是下班時間,然而第二天一早就回復我了。地址(Egret社區-BUG列表)
10、API問題:cocos經歷了3個大版本,官方API文檔也有的API,實際盡然是沒有的,官方回復是還沒加入js綁定。
11、跨平台問題:cocos2d-js經常是HTML5和JSB表現不一致。導致我們現在只能專注JSB而放棄HTML5版本。egret很少有這個問題。
12、
性能問題:先拋開runtime。如果你用了ccui,那麼我100%保證你的cocos2d-js的性能會被egret秒殺。再來說下native下面
的性能對比,cocos的人說egret是js寫的邏輯,而他們是綁定。那麼問題來了,在現在,js的邏輯產生的性能壓力一點都不是問題(參考
node.js,能用js寫伺服器了都)。主要的性能壓力其實是在渲染上面,而他們2個都是opengl作為渲染的。如果用了ccui,那麼還是被
egret秒殺。那ccui帶來的drawCall真是太!!再來談runtime,egret現在很多瀏覽器都集成了runtime(可以opengl
渲染代替canvas渲染),而cocos-js只是說在合作,已經慢了一步。
13、產品路線圖問題:cocos的幾個產品一心在弄3D,egret都已經自己搞了一個IDE了。開發基本的生活cocos都沒保障好,就去想和u3d打架!
14、內部問題:cocos估計內部很不和諧,ide據說是1個人在開發,studio是30個人(30個人整出這東西),而且studio是用的.NET搞的,跨平台最呵呵的技術!QT、AIR那些那麼多高效率,擴展性強的技術不用,選了個.NET。。。。
---------------------------------------------------------------------------------------------------------------------------------
題
外話:說了那麼多cocos的不是,我也曾試著愛過它,我甚至開發了一個和egret
wing一樣的UI編輯器,寫了個和Flash/Flex一樣的API(egret用的這套,這種架構很好用,簡單明了)。其中UI編輯器還加上了
unity3d那種綁定腳本的功能。然而因為cocos底層的一些令人發狂的BUG,我最終是放棄了。有egret這個車子在,我還造什麼輪子?我打算把
手裡頭的這套cocos的東西開源。然後去整egret去!
---------------------------------------------------------------------------------------------------------------------------------
再來個題外話:
游戲引擎cocos2d-js和egret 對比
這
個是網路搜索第一的對比,裡面說cocos2d的工具比egret多,我不否認,但是能用的基本沒有。而egret的工具很穩定。就拿最簡單的骨骼動
畫,cocos連龍骨都不支持,studio裡面的骨骼設計也是坑的不行,egret的骨骼設計工具從界面和實用性都已經完爆studio了!
再來說上面的地址裡面的成功產品:捕魚達人、DOTA傳奇、我叫MT那都是cocos2dx寫的,和js版本一點關系都沒有!請問你有見過網頁版的刀塔傳奇么?
上面的開發語言對比,大項目來說,ts真的是完爆js!js那不小心就會出錯真心不適合大項目,不然微軟不會造這個輪子。
上面的參考資料對比,cocos2d-js的文檔連參數的注釋都沒,和c++文檔作參考也不行,很多參數是不一致的!而egret在開發工具裡面就繼承了中文的幫助。
從目前狀況看,今年絕對是egret產品井噴的一年,不信走著瞧!cocos真是把我坑慘了!
---------------------------------------------------------------------------------------------------------------------------------
再
次申明,請拿cocos2d-js或者JSB的大作出來,不用拿2dx的東西。說到2dx,你們再去了解下,榜單上,有幾個人是沒改過引擎源碼的,有幾個
游戲能隨著cocos引擎升級而升級。用studio的又有幾個。並不想和王哲斯逼,只是希望你們能正視BUG,提高體驗。如果好,我們團隊會考慮
cocos技術的,否則只能用egret和unity3d了。我說cocos這么多不是,也是希望他成長,能給開發者帶來更多利益,帶來更多方便,而不是
各種無厘頭的問題,各種蹩腳的手段去開發。還有,我說的這幾點,@王哲
你接招,如果我不說出這些BUG,這些問題,那麼估計還不一定改。egret同樣有個人叫王澤,然而他的理念完全當我們開發者是用戶,提高開發體驗,這個
很重要的。