如何學(xué)習(xí)一種開發(fā)框架(如:手機開發(fā)cocos2dx方向)?
時間:2023-11-28 05:18:02 | 來源:網(wǎng)站運營
時間:2023-11-28 05:18:02 來源:網(wǎng)站運營
如何學(xué)習(xí)一種開發(fā)框架(如:手機開發(fā)cocos2dx方向)?:謝邀。
如果按照
優(yōu)秀的程序員和一般的程序員差別在哪? 的定義來看,你已經(jīng)是個程序員了。
我接觸的許多程序員中,絕大多數(shù)都是知其然不知其所以然,做了AS好幾年的,甚至連AVM是什么都不知道的太多了。許多程序員把快速開發(fā)出成品作為是工作的唯一目標,認為研究底層知識和周邊技術(shù)是浪費時間。很多東西他們不是不能知道,而是不想知道。
更有甚者,學(xué)會了 gotoAndPlay 就敢說熟悉 Flash,會敲 ls 就敢說精通Linux。前幾天有朋友發(fā)給我他膜拜了一日的逆天簡歷,上面洋洋灑灑寫著
匯編、C/C++、Linux網(wǎng)絡(luò)編程、JAVA EE、Perl、Bash、Python、Windows驅(qū)動開發(fā)、單片機開發(fā)、HTML、CSS3、JavaScript、PHP、cocos2d-x、iOS開發(fā)、安卓開發(fā)……而且所有的項目的級別都是
精通!
我看完簡歷和朋友說:這位前后端桌面嵌入式系統(tǒng)驅(qū)動網(wǎng)頁手機開發(fā)通吃的全棧神人10年里跳槽8次,從沒在一個公司干滿過2年,你敢用么?
======上面廢話,不看也罷。
剛巧我也是從AS3轉(zhuǎn)到了cocos2d-x,說說我的經(jīng)驗吧。
一、cocos2d-x 部分1.1 技術(shù)選型
從第三個手游開始,我實在被Adobe的ANE和國內(nèi)的小平臺折騰得沒了脾氣,決定轉(zhuǎn)到cocos2d-x。在選擇哪種語言綁定的時候糾結(jié)了很久,最后力排眾議選了 lua:
Cocos2dx+lua合適還是Cocos2dx+js合適? cocos2d-x 2.x 的lua綁定做得并不好,于是我選擇了
quick-cocos2d-x (后來,quick被觸控收購)。
1.2 學(xué)習(xí) C++
C++ Primer 中文版(第 5 版) (豆瓣) 是不錯的入門書籍,建議看第五版,我寫過一篇
C++Primer 第4版和第5版比較 。學(xué)習(xí)期間建議畫一些思維導(dǎo)圖幫助理解和整理思路。例如這個(不完整):
1.3 學(xué)習(xí)DEMO和熟悉開發(fā)平臺
編譯 cocos2d-x 自帶的 TestCPP 項目,全部跑一遍。熟悉 cocos2d-x API 的用法。記得用
doxygen 生成文檔,建議每個API的功能都瀏覽一遍。
有的同學(xué)可能更喜歡直接看源碼,那當然更好。不過文檔有一個好處就是能更直觀地顯示繼承關(guān)系。
在學(xué)習(xí)DEMO的過程中,你必須熟悉自己開發(fā)平臺的IDE,例如Windows上必須熟悉 Visual Studio,而OS X上必須熟悉xcode,Linux平臺上就熟悉Eclipse+CDT吧。
注意,quick-cocos2d-x 是不支持Linux開發(fā)平臺的。2014-05-17更新:quick已經(jīng)使用QT重寫了player部分,但依然不支持Liunx平臺。
1.4 了解引擎的文件夾結(jié)構(gòu)
基于 cocos2d-x 源碼生成的文檔并不怎么詳細,許多功能必須看源碼。但這個階段,我不建議糾結(jié)源碼太深,倒是可以糾結(jié)一下 cocos2d-x 的文件夾結(jié)構(gòu),看看各個類放在什么地方,找一找常見的哪些宏和常量以及枚舉定義在什么地方,這花不了多少時間,但能讓你對cocos2d-x有更深刻的了解,同時給你很強的成就感。這種成就感沖淡了你面對大量源碼時候的無力感,讓你能夠繼續(xù)前行。
下面是我的分析:
1.5 重復(fù)上面的第3步:再次學(xué)習(xí)DEMO
這時候看DEMO可能會輕松不少,但是你會有更多的問題去糾結(jié)。例如多分辨率支持?例如坐標系統(tǒng)?例如繪圖功能?例如層級管理系統(tǒng)?例如事件傳遞系統(tǒng)?等等等等……這時候可以去Google(注意不要用百毒和其他搜索引擎)找文檔看了。我推薦一些我看過的不錯的文檔和博客:
- http://www.ityran.com/archives/4809
- Cocos2d-x官方中文文檔 v2.x
- Cocos2D | iOS Development Tips & Tricks by BiOM
- 子龍山人 - 博客園
- 紅孩兒的游戲編程之路
- Ray Wenderlich
- Cocos2d-x | Cross Platform Open Source 2D Game Engine
許多博客都是極好的。紅孩兒(后來加入了觸控)寫了許多源碼分析,每一句源碼都加了注釋。雖然我不太認同他這種吃力不討好的方法,但對于新手來說確實是有很大的幫助。
另外在 Stack Overflow 你能找到絕大部分問題的答案。當然,許多問題是針對 cocos2d 而非 cocos2d-x 的,不過用法相同,照看不誤。許多優(yōu)秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天時間熟悉 OC 的語法,能看懂即可。
暫時不要買中文書。我曾經(jīng)花3天時間看完了
《Cocos2D-X游戲開發(fā)技術(shù)精解》 和
《cocos2d-x手機游戲開發(fā)–跨iOS、Android和沃Phone平臺》 ,發(fā)現(xiàn)作者其實就是來賺稿費的。
忘了廣告了,我的博客(cocos2d-x | zrong's Blog)也有一些cocos2d-x內(nèi)容,歡迎來噴。
1.6. 熟悉工具集現(xiàn)在你應(yīng)該對周邊工具感興趣了。例如幀動畫使用什么制作?BMFont使用什么制作?骨骼動畫呢?plist文件怎么編輯?碎圖用什么工具拼合?有些項目上,你有許多選擇,也可能沒得選。去Google吧,如果遇到選擇上的問題,歡迎找我討論。
二、 quick-cocos2d-x 部分2.1 現(xiàn)在就到lua時間了請認真讀完
《Lua程序設(shè)計(第2版) 》 第一、二、三部分。第四部分可暫時不讀。
1.2 熟悉 quick-cocos2d-x 的文件夾結(jié)構(gòu)相信有了上面 cocos2d-x 的基礎(chǔ),這個應(yīng)該不難理解。
1.3 跑完 quick-cocos2d-x 自帶的所有sample在這期間,熟悉 framework 中的所有封裝??梢詤⒖?
quick網(wǎng)站 和
quick wiki 。
1.4 學(xué)習(xí)導(dǎo)出API給Lua使用導(dǎo)出 C/C++ API 給 Lua 使用
三、學(xué)習(xí) OpenGL ES熟悉Lua部分之后,作為一個有志于成為程序員的碼農(nóng),依然要回到C/C++來,這里才是 cocos2d-x 的本質(zhì)。
cocos2d-x 使用 OpenGL ES 進行渲染的,如果要對 cocos2d-x 的渲染層進行任何形式的擴展,你完全避不開 OpenGL ES。
既然逃不開,那就對TA說,請張開雙腿,我要上。
3.1 閱讀 OpenGL ES 2.0 Programming Guide下面是這本書的官網(wǎng),目前已經(jīng)出了 OpenGL ES 3.0 版本,cocos2d-x 使用的是2.0。
http://www.opengles-book.com/es2/index.html這本書寫得淺顯易懂,非常適合新手。有位網(wǎng)友花3個月時間翻譯了中文版,但還是建議你不要看了。
這里是 OpenGL ES 的 官方文檔 和 API中文翻譯 。
當然,你也可以買那本著名的 OpenGL 紅寶書 《OpenGL編程指南(原書第7版)》 來看,不過 OpenGL ES 相對與 OpenGL 來說還是有一些不同的,你要知道如何區(qū)分這些不同。
3.2 嘗試理解 cocos2d-x 的渲染部分架構(gòu)相關(guān)的類我就不列出了,我正在醞釀一個這方面的系列文章準備發(fā)到博客上。如果寫完了,我會在這里更新。
3.3 自己寫一些濾鏡、繪圖功能的擴展例如這個:
cocos2d-x-filters
四、回歸項目到了這里,你可以開始你的項目了。雖然源碼還沒有讀完,但相信整個架構(gòu)都能理解了。在做項目的過程中,再去一點點讀源碼是比較快捷和我能夠接受的方法,否則就太枯燥了。
你可以還需要選擇一下cocos2d-x相關(guān)的工具。你可能聽說過 CCB(cocosBuilder)和CCS(cocoStudio),嘗試了解她們,再決定是否使用她們。
你已經(jīng)有了AS3的基礎(chǔ),這樣許多前端的概念和經(jīng)驗已經(jīng)很豐富了。這些經(jīng)驗在cocos2d-x中同樣適用。但是要注意的是,cocos2d-x不是AS3,不要試圖用AS3的方法去使用cocos2d-x。
- 有位碼農(nóng)在從C#轉(zhuǎn)到AS3的時候向我抱怨:為什么Flash Builder沒有Visual Studio的這個功能那個功能?
- 然后這位碼農(nóng)在從AS3轉(zhuǎn)到Sublime Text(用于Lua編輯)的時候向我抱怨,為什么Sublime Text沒有Flash Builder的這個功能那個功能?
上面是個笑話。
同時,為了解決一些cocos2d-x沒有提供的功能,你必須去學(xué)習(xí)相關(guān)的知識。例如這個:
在 cocos2d-x 中使用 libcurl 實現(xiàn)上傳文件功能(附quick-cocos2d-x封裝)。不過你現(xiàn)在已經(jīng)有了基礎(chǔ),學(xué)習(xí)這些不是難事。
在有時間的時候,可認真讀一下上面提到的《Lua程序設(shè)計(第2版) 》第四部分,了解Lua和C語言通信的方式,順便看看cocos2d-x里面是怎么實現(xiàn)的。
另外,一些你需要的引擎中沒有的功能,也可以順手實現(xiàn)了開源出來(例如這個:
一個LuaSocket封裝),說不定你需要的東西正好是別人也需要的。
五、熟悉發(fā)布平臺既然是做手游,Android和iOS平臺是逃不掉了。
你要熟悉Android和iOS平臺的特點,熟悉JAVA在Android上的應(yīng)用,熟悉Objective-C在iOS上的應(yīng)用,熟悉Eclipse ADT和XCode(上面應(yīng)該已經(jīng)熟悉過了)。
你還要熟悉Google Play和AppStore的發(fā)布流程以及方針、政策,內(nèi)購的接入、SDK的嵌入。
你要學(xué)習(xí)和各個接入平臺的程序員、商務(wù)、前臺小妹打交道(因為經(jīng)常會找不到你要找的真正的負責該SDK的技術(shù)人員),你要能忍受國內(nèi)小平臺糟糕的文檔、代碼規(guī)范和逆天的編程方法。
終、沒有終點上面說的并不完整,應(yīng)該遺漏了不少東西,但我只能說這么多了。因為我的經(jīng)驗也止于此。
祝你成功!======下面廢話,不看也罷。
感覺你的導(dǎo)師對你還是很負責的,話說我多么希望我有一個這樣的導(dǎo)師在剛剛?cè)胄械臅r候隨口點撥我?guī)拙浒。。。?br>
現(xiàn)在我有時也會給同事一些建議,但愿他們真的聽懂了。