如何才能系統(tǒng)有效的學(xué)習(xí)cocos2d
想要更好的學(xué)習(xí)cocos2d,必須要了解Cocos2d-x的優(yōu)勢,從而更好的發(fā)揮其優(yōu)勢。以下是學(xué)習(xí)啦小編分享給大家的有效的學(xué)習(xí)cocos2d的方法,希望可以幫到你!
有效的學(xué)習(xí)cocos2d的方法
一、平臺與編程語言選擇
首先,游戲開發(fā)的平臺就有很多類型:
個(gè)人主機(jī)平臺:Windows、Linux、Mac OC;
移動平臺:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
專業(yè)主機(jī)平臺:Xbox、PlayStation、Will等。
如果你想從事移動平臺的游戲開發(fā),Android主流JAVA語言,iOS主流Object-C語言,那么你就要去學(xué)習(xí)這個(gè)平臺主流的語言,而在個(gè)人主機(jī)上主流的游戲開發(fā)語言現(xiàn)在包括以后很長時(shí)間也還是C++。
但是并不是所不同平臺的游戲開發(fā),就毫無共通之處,學(xué)了這個(gè)到了另一個(gè)平臺就無用了。不是這樣的,編程的世界里你走得越遠(yuǎn)你會發(fā)現(xiàn)很多東西的本質(zhì)都是相似的,例如你如果扎實(shí)地理解了C++的基本語法(而不是死記硬背),日后再轉(zhuǎn)Java語言也不是很難的事情,因?yàn)樗鼈儽举|(zhì)的面向?qū)ο筇匦赃€有各種編程語言特性都是相通的。
所以,如果你想走得遠(yuǎn),在學(xué)習(xí)的時(shí)候不能簡單流于表面,對于一樣知識越深入到底層,你就越能看到其它知識與其的異曲同工之處,因此你將比別人更輕松。但是,當(dāng)然一開始最好盡可能是貼合自己的專屬領(lǐng)域和編程語言,這樣能盡快地在這個(gè)領(lǐng)域持有一席之地。
無論你選擇哪個(gè)平臺,游戲開發(fā)這個(gè)浩大的工程都離不開游戲引擎,所以這里都有二條路線讓你選擇:
只使用游戲引擎;
使用游戲引擎并深入學(xué)習(xí)游戲引擎原理。
線路一:只使用游戲引擎
對于第一條路線,游戲引擎的使用并不困難,因此適合想快速上手游戲開發(fā)工作的人。我們工作大多數(shù)時(shí)候也不會自己開發(fā)游戲引擎,所以這樣對于一般的日常工作也沒什么大礙。對于只使用游戲引擎的人來說,入門階段要做的就是看該引擎的教程(書籍、視頻、網(wǎng)上博客、網(wǎng)上教程、官方幫助文檔等),并且熟練該教程所使用的編程語言。
所以你要做的第一件事,就是去了解現(xiàn)在流行的游戲引擎。因?yàn)椴煌脚_下的性能不同,支持的編程語言也不盡相同,所以針對不同平臺下的流行的游戲引擎也是不同的(方括號里面是特別推薦的,基于開源性、易用性、性能與效果等方面的綜合水平推薦):
windows或游戲主機(jī):【Unreal】、寒霜、CE3
蘋果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
安卓:【unity3d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
網(wǎng)頁:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。
在選擇游戲引擎的時(shí)候,盡可能選用流行的游戲引擎,因?yàn)檫@個(gè)游戲引擎流行意味著官方的功能比較完善和易用,問答社區(qū)也比較多人解疑。各個(gè)游戲引擎也各有千秋,Unity3d勝在簡單易用,對性能要求不高,但是效果不夠華麗,因而一般用在移動平臺而不會用在電腦或游戲主機(jī)。Unreal勝在開源免費(fèi),而且效果也很出色,但是對設(shè)備要求比較高,因而常常用來開發(fā)效果絢麗的大型游戲。cocos2d-x也是開源免費(fèi)的,在2D領(lǐng)域深有造詣,但是缺點(diǎn)是不可視化開發(fā)。另外,如果你想了解游戲引擎原理,那么首要考慮的就是開源的游戲引擎。
不同游戲引擎使用的編程語言或者腳本語言可能是不一樣的,所以當(dāng)你想要學(xué)習(xí)某個(gè)游戲引擎的時(shí)候,也應(yīng)該留意該游戲引擎所使用的語言。大部分情況是,Windows用的的是C++,同時(shí)結(jié)合lua或python腳本語言。而ios平臺下使用Objective-C或swift,安卓平臺下使用Java。但這不是必然的,例如Unity在各個(gè)平臺下都可以用C#或者javascript腳本語言。
下面是商業(yè)上流行的游戲引擎詳細(xì)比較:
1) Unreal4(虛幻4)
適用平臺:Microsoft Windows、Mac OS X、iOS、Android、虛擬現(xiàn)實(shí)設(shè)備(包括但不限于SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平臺。
編程語言:C++或無需編寫代碼。
優(yōu)點(diǎn):開源免費(fèi),畫面效果出色,已有多款商業(yè)大作經(jīng)驗(yàn)。同時(shí),它還能跨平臺,商店資源豐富,提供了無需編寫代碼即可制作游戲的強(qiáng)大功能(可視化開發(fā))
缺點(diǎn):開發(fā)機(jī)器配置要求較高。
2) Unity3D
適用平臺:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store應(yīng)用程序、Mac、Linux/Steam OS、網(wǎng)絡(luò)播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
編程語言:C#、javascript、Boo。
優(yōu)點(diǎn):方便易用,中文資料豐富,跨平臺,商店資源豐富,可視化開發(fā)。
缺點(diǎn):畫面效果一般,不是免費(fèi)開源,引擎效率比較低。
3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)
適用平臺:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5瀏覽器、Windows Phone 7 & 8、Xbox 360。
編程語言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
優(yōu)點(diǎn):開源免費(fèi),跨平臺,中文資料豐富,2D技術(shù)豐富且成熟。
缺點(diǎn):不可視化開發(fā),3D方面技術(shù)不成熟。
4) CryEngine3
適用平臺:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
編程語言:C++、Lua。
優(yōu)點(diǎn):畫面效果世界一流,可視化開發(fā),跨平臺。
缺點(diǎn):開發(fā)機(jī)器配置要求較高,不是免費(fèi)開源。
5) Frostbite3(寒霜3)
適用平臺:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
編程語言:C++。
優(yōu)點(diǎn):畫面效果出色,可視化開發(fā),跨平臺。
缺點(diǎn):開發(fā)機(jī)器配置要求較高,不是免費(fèi)開源。
6) Egret(白鷺)
適用平臺:HTML5、iOS、Android、Windows Phone。
編程語言:TypeScript、JavaScript。
優(yōu)點(diǎn):免費(fèi)開源,配套工具多,全中文文檔,可視化開發(fā),跨平臺。
缺點(diǎn):支持平臺較少,大多數(shù)時(shí)候用于開發(fā)對性能和效率要求不高的小游戲。
但是使用游戲引擎畢竟是停留在表面看不到本質(zhì),當(dāng)游戲開發(fā)的時(shí)候出現(xiàn)了某些問題或者特殊需求,你往往很難處理。而且游戲引擎技術(shù)日新月異,你所學(xué)的幾乎都是別人留下來的方法,而不是其本質(zhì)思想。如果將來別的游戲引擎興起,你又要重新學(xué)習(xí)另外的游戲引擎怎么使用。在很多大公司里面,甚至都有自己公司內(nèi)部專用的引擎(如網(wǎng)易公司的風(fēng)魂引擎、金山公司的劍網(wǎng)3引擎、蝸牛公司的Flexi引擎等等)。所以單純地走這條路線,可能不會讓你走得很遠(yuǎn)并且可能會日漸乏味。
線路二:使用游戲引擎并深入了解游戲引擎原理
對于第二條路線,深入學(xué)習(xí)游戲引擎原理短時(shí)間不會讓你的工作有什么卓越的成效,但是可以彌補(bǔ)只使用游戲引擎導(dǎo)致的問題,而且學(xué)習(xí)游戲引擎原理,更多時(shí)候不是一定就為了自己日后要造個(gè)游戲引擎,而是更深入理解自己的游戲引擎,更好地使用它。當(dāng)然,千里之行始于足下,經(jīng)常學(xué)習(xí)游戲引擎底層原理的人到了一定的積累的時(shí)候,自己造個(gè)游戲引擎也是可以的。
對于像學(xué)習(xí)游戲引擎原理的人來說,需要制定自己明確的長期目標(biāo):
1) 首先,一開始可能對游戲引擎沒什么概念,建議先使用一兩個(gè)游戲引擎(我推薦C++程序員學(xué)習(xí)虛幻4游戲引擎,現(xiàn)在是免費(fèi)開源的,非常值得學(xué)習(xí)。那些不開源的游戲引擎盡量不要去學(xué)習(xí),因?yàn)槠鋵τ趯W(xué)習(xí)原理來說沒有多大貢獻(xiàn))。
2) 因?yàn)橛螒蜷_發(fā)就是一門實(shí)時(shí)渲染的藝術(shù),所以離不開圖形庫的學(xué)習(xí)?,F(xiàn)在主流的圖形庫是Windows平臺專用的DirectX 11和通用平臺的Opengl。這兩個(gè)圖形庫,至少需要入門其中一個(gè)。
3) 然后,你就可以開始看計(jì)算機(jī)圖形學(xué)的書籍了。如果你發(fā)現(xiàn)你的理論底子不足,這個(gè)時(shí)候就需要補(bǔ)一下線性代數(shù)、基本的微積分、還有3D數(shù)學(xué)的知識。
4) 游戲引擎中包含了各個(gè)部分,上面的渲染只是游戲引擎的一部分。還有其它諸如著色器編寫、地形編寫、物理引擎編寫、模型和動畫、人工智能體設(shè)計(jì)、網(wǎng)絡(luò)編程等等,完成渲染部分的基本學(xué)習(xí)后,你可以選擇自己感興趣的部分進(jìn)行專攻,畢竟我們實(shí)際工作大多數(shù)時(shí)候是團(tuán)隊(duì)開發(fā),而不是單打獨(dú)斗,每個(gè)人都應(yīng)該精通自己所擅長的那部分。
學(xué)習(xí)cocos2d的前景
1適用范圍
這個(gè)很多之前的回答都已經(jīng)說了,主要區(qū)別是unity是一個(gè)完全的的解決方案,cocos2d是一個(gè)類庫。適用領(lǐng)域unity要廣很多。cocos2d就是為手機(jī)游戲而生的。而unity除了開發(fā)2D,3D游戲,能發(fā)布到WP,Mac, Console等cocos2d不涉及的平臺,unity還被廣泛才用于虛擬現(xiàn)實(shí)項(xiàng)目。
在我最開始接觸unity還是1.x版本的時(shí)候,QQ群里面幾乎全是討論虛擬現(xiàn)實(shí)項(xiàng)目的。甚至即便到現(xiàn)在我感覺身邊(重慶)用unity做教育軟件和3D漫游的都遠(yuǎn)多于做游戲的。也就是說如果你將來不開發(fā)手游,cocos2d就用不上了,unity還能搞點(diǎn)其他的。
2學(xué)習(xí)難度
上手當(dāng)然unity更簡單。如果更極端一點(diǎn),不會編程,借助一些可視化編程中間件,設(shè)計(jì)師都可以完成unity游戲開發(fā)。前陣子網(wǎng)上有cocos2d一天復(fù)制flappy bird的教材,如果換unity+playmaker來做估計(jì)花不了我一個(gè)小時(shí)。當(dāng)然如果面向本來就會c++的開發(fā)人員,cocos2d入門可能更加直觀,不會要接觸新的開發(fā)工具。不過對于普通人來說還是unity的方式更加容易入門,連代碼都不用寫。
3技術(shù)支持和社區(qū)
這方面cocos2d勝出,國內(nèi)社區(qū)的情況unity方面掌握都還比較初級,有深度的技術(shù)問題基本上都要去官方論壇交流。當(dāng)然如果你英文讀寫無障礙,這個(gè)情況就倒過來了。
4發(fā)展態(tài)勢
cocos2d目前在“開源的2D手游開發(fā)框架”領(lǐng)域基本上是沒有什么競爭,這也注定了開源社區(qū)也不會有什么動力擴(kuò)展到新的領(lǐng)域。
而unity則是一直開擴(kuò)展其開發(fā)覆蓋面,unity就是“一統(tǒng)漿糊”的意思嘛。最開始是作為一個(gè)“讓人人都能開發(fā)游戲”進(jìn)入人們視野的引擎,而最近的新版本一直在強(qiáng)調(diào)AAA游戲開發(fā),將出的5.0版本基本上都是面向畫質(zhì)上面的提升。
實(shí)際上也對UE,CE等造成了一定壓力,現(xiàn)在UE對個(gè)人的授權(quán)費(fèi)比unity還便宜了。但是unity對于一些普遍認(rèn)為爛得不行的功能卻一直沒有什么動力修改,比如GUI系統(tǒng)和內(nèi)置網(wǎng)絡(luò)部分,一般也是要借助第三方完成開發(fā),這點(diǎn)初學(xué)者需謹(jǐn)慎,不要學(xué)習(xí)這些沒用的東西。
5擴(kuò)展性方面的問題
這點(diǎn)cocos2d勝出。由于unity采用了易于新手和無編程人員的組件模式,在開發(fā)大型項(xiàng)目時(shí)候非常容易進(jìn)入架構(gòu)上的陷阱。開發(fā)太容易了,犯錯(cuò)也容易。
而cocos2d不是說就不會犯這些架構(gòu)問題了,而是本身基于cocoa框架,能夠開發(fā)的人本身已經(jīng)具有了一定的編程規(guī)范,開發(fā)app所用到的軟件架構(gòu)仍然適用。
而且unity就是另外一套體系了,初學(xué)者開發(fā)了一些簡單項(xiàng)目以后一定要有有經(jīng)驗(yàn)的人帶,了解一套MVC這樣的架構(gòu)體系以后再開發(fā)商業(yè)項(xiàng)目,否則只會在組件化模式的歧途上越走越遠(yuǎn)。
在擴(kuò)展性方面,unity的其他問題也還有很多:假設(shè)蘋果出了一個(gè)新的設(shè)備iTV, 用cocos2D的話你可以在beta版本放出的時(shí)候就開始根據(jù)官方的文檔開發(fā)集成,在正式設(shè)備發(fā)布的時(shí)候就第一時(shí)間支持,使用unity的話恐怕必須等unity發(fā)補(bǔ)丁更新;需要兩次編譯,令人頭大的JIT錯(cuò)誤;很多國內(nèi)廣告和支付平臺都不支持unity,SDK集成需要自己做插件等等。
有效的學(xué)習(xí)cocos2d的書籍推薦
1) 數(shù)學(xué)基礎(chǔ)
下面這些數(shù)學(xué)基礎(chǔ)書籍是為游戲開發(fā)量身定制的,比專門看某一數(shù)學(xué)方向更有效率:
《3D Math Primer for Graphics and Game Development》,有中文版
《Mathematics for 3D Game Programming and Computer Graphics》
《Essential Mathematics Guide》
《Geometric Tools for Computer Graphics》
2) 圖形庫
針對 DirectX 的書籍:
《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龍書,入門必看的
《Practical Rendering and Computation with Direct3D 11》,進(jìn)階
《Real-Time 3D Rendering with DirectX and HLSL》
針對 OpengGL 的書籍:
《OpenGL SuperBible》,著名的藍(lán)寶書,以例子為主,有中文版。但不建議看中文版,翻譯得不好。
《OpenGL Programming Guide》,著名的紅寶書,有中文版。紅寶書更像是手冊,API大全,例子較少,適合熟練者查詢使用。
《OpenGL 4.0 Shading Language Cookbook》,進(jìn)階,基本上就是API手冊,有中文版。但不建議看中文版,翻譯得不好。
3) 計(jì)算機(jī)圖形學(xué)
《The Nature of Code》,有中文版,比較簡單
《Fundamentals of Computer Graphics》,被國外多所大學(xué)采用的入門教材,介紹范圍比較廣,從基本的相關(guān)數(shù)學(xué)到建模、渲染、動畫、應(yīng)用方面都有提及
《Physically Based Rendering》,主要是離線渲染
《Real-Time-Rendering》,必讀經(jīng)典!必讀!
《計(jì)算機(jī)圖形學(xué)》,作者舍利
《Computer Graphics》,要看最新的第三版
《計(jì)算機(jī)圖形學(xué)原理及實(shí)踐:C語言描述》
4) Shader著色器
《Cg_tutorial》,入門
《The Complete Effect and HLSL Guide》,入門
《Shaders for Game Programmers and Artists》,含有大量入門例子
《Advanced Lighting And Materials With Shaders》,介紹光照模型和技術(shù)
《GPU Gems》進(jìn)階必讀。
《Shader X》系列,每年出版一本,包含最新的實(shí)時(shí)渲染技術(shù)。論文性的比較多,偏難。
《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10為主,很詳細(xì)。
5) 地形
《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的討論了關(guān)于地形渲染的各種技術(shù)。
6) 模型導(dǎo)入和動畫
《Character Animation With Direct3D》包含了最新的游戲動畫技術(shù)
《Computer Animation》
《Real-Time Cameras》
《Computer Facial Animation》
《Realtime 3D Character Animation with Visual C++》
《Advanced Animation and Rendering Techniques》
《Cloth Modeling and Animation》
7) 網(wǎng)絡(luò)
《TCP/IP 詳解 卷2》
《Network Programming for Microsoft Windows》
《Advanced Programming in the UNIX Environment》
《Windows核心編程》
《Multithreading applications in Win32》
《網(wǎng)絡(luò)游戲核心技術(shù)與實(shí)戰(zhàn)》
8) 物理
《Game Physics》
《Game Physics Engine Development》
《Real-time Collision Detection》,碰撞檢測方面最好的書
《3D Game Engine Design, 2nd》第8、9章值得一看
9) 細(xì)節(jié)層次
《Level of Detail for 3D Graphics》
10) 光線跟蹤
《Physical-Based Rendering - From Theory to Implementation》
《Another Introduction to Ray Tracing》
猜你喜歡:
1.如何才能系統(tǒng)有效的學(xué)習(xí)asp