.Cocos2D讓遊戲新手在極短時間內也可以開發出吸引人的遊戲
.Cocos2D讓遊戲開發成為真正的樂趣
最全面、深入,有系統講解Cocos2D的使用方法、技術要點、工作原理、開發技巧、最佳實踐和性能優化。
透過精心設計的典型案例完美呈現Cocos2D遊戲設計與開發的完整過程,極具啟發性和可操作性。
大幅降低了遊戲開發的門檻和難度。遊戲開發者可以把關注的焦點放在遊戲機制本身的設計上,而非耗費大量時間學習OpenGLES中晦澀難懂的低階API。
雖然這本書是關於Cocos2D 的,但其中也涉及遊戲設計與策劃、專案的測試、上傳與市場推廣等方面的知識。
適合讀者:熟悉Objective-C 和Xcode,或熟悉其他物件導向的語言,希望透過學習Cocos2D 開發iOS 遊戲的開發人員;負責iOS遊戲專案開發與管理的產品經理;使用Cocos2D 開發iOS 遊戲的公司與成員;相關課程的大專院校師生
作者序
前言
為什麼要寫這本書
2011 年10 月5 日,秋風蕭瑟,陰雨綿綿,在這顆蔚藍色的美麗星球上,一代傳奇偉人賈伯斯在親友的陪伴下安然離去,宛若流星劃過天際,空留那輛銀色的賓士SL55AMG 在落葉紛飛中孤獨守候著曾經的主人。這個世界從此失去了一位領導科技創新的時代領袖。
自2007 年蘋果推出第一代iPhone 以來,整個行動網際網路的生態系統被徹底顛覆。2008 年,蘋果推出了iPhone OS 和App Store,在短短兩年半的時間內,AppStore 中的相關應用程式下載次數就達到了150 億次,而開發者的收入也高達25 億美元。到2012 年6 月,App Store 的應用程式下載量已突破300 億次,再次鑄就了這個時代的神話。2012 年9 月,iPhone 5 在萬眾期待中揭開了神秘的面紗,在短短一周之內就售出500 萬部。當然還有剛剛發佈的iPad Mini,以及傳說中的AppleTV……這些裝置無疑將大幅增加使用iOS 的使用者基數。在App Store 中,最吸引人的軟體類型毫無疑問就是遊戲和娛樂應用程式了。《Angry Birds》、《TalkingTom》、《Tiny Wings》等這些下載次數和吸金數量令人咋舌的遊戲,都是由草根團隊甚至個人開發的。這些遊戲開創了行動網際網路時代的新神話!
《Angry Birds》憤怒鳥作為App Store 一款劃時代的作品,吸引了更多的開發者進入蘋果應用程式商店。要想在App Store 中取得成功,天馬行空般的創意和想像力是致勝的第一法寶,同時對市場需求的了解和把握也變得越來越重要。但由於AppStore 中的應用程式數量已經突破65 萬,所以必須採用快速反覆運算的開發方式,在盡可能短的時間內設計出遊戲的原型並開發出可以上線的版本。使用蘋果的原生開發框架可以迅速開發部署各種行動應用程式,但在開發互動性較強的遊戲上卻稍顯複雜和緩慢。開發者需要熟練Core Foundation、Core Animations、CoreGraphics、OpenGL ES、OpenAL 等一系列框架,這就使得iOS 遊戲開發的學習曲線變得陡峭,也使得開發週期大幅延長。在這種情況下,各種針對iOS 平台的協力廠商遊戲開發框架橫空出世並被廣大開發者所喜歡,Cocos2D 可謂其中最成功的一款。
作為一個開放原始碼的Objective-C 框架,Cocos2D 用於在iOS 和Mac OS X 系統上製作2D 遊戲。使用Cocos2D,開發者可以輕鬆地開發iPhone、iPod Touch、iPad 和Mac 上的遊戲。Cocos2D 曾被人詬病對3D 遊戲引擎的支援不足,但以Cocos2D 架構、同樣開放原始碼為基礎的Cocos3D 將在未來完美地解決這一問題!
在蘋果App Store 中,使用Cocos2D 及其衍生版本開發出的曾登頂榜首的遊戲數不勝數,如《Tiny Wings》、《Feed Me Oil》等。2011 年的蘋果最佳遊戲Tiny Towers也是用Cocos2D 開發的。《Angry Birds》是以Box2D 實體引擎開發出來的, 但Cocos2D 完美支援Box2D 實體引擎!曾長期位居大陸地區收入榜首的《神仙道》、《忘仙》等遊戲也是採用Cocos2D 的衍生版本Cocos2D-x 開發的。開發者應用Cocos2D 開發遊戲,需要的只是充分發揮自己的創意和想像力!
2011 年6 月,在社交遊戲的浪潮中如火箭般崛起的Zynga 收購了ocos2D,但仍然將其作為一個開放原始碼框架,進一步確保了Cocos2D 的長期生命力。更重要的是,由於支援Cocos2D 的開發者眾多,現在已經衍生了多個版本,如Cocos2D-x、Cocos2D-Android、Cocos2D-HTML5 等,但每種版本的核心都幾乎完全相同。在熟練了Cocos2D 之後,只需稍微了解一下對應的平台和語言,就可以將遊戲輕鬆部署到其他多個平台上。
學會Cocos2D,即使是一個遊戲新手,只要你有足夠的創意和想像力,也可以在極短的時間內開發出吸引人的遊戲,這大幅降低了遊戲開發的門檻和難度。遊戲開發者可以把關注的焦點放在遊戲機制本身的設計上,而非耗費大量時間學習OpenGL ES 中晦澀難懂的低階API。
寫這本書的動力來自分享的樂趣,書中用到的很多原始程式素材和使用技巧來自Cocos2D 官方社區、Cocos2D-x 官方社區和Ray Wenderlich、iphonegametutorials等部落格網站。特別要感謝Ray Wenderlich,正是和他在Twitter、部落格及討論區中的學習和交流,讓我決定分享自己學習和使用Cocos2D 開發遊戲的心得。在此也強烈推薦已經學習和熟練了Cocos2D 基礎開發知識的開發者,多去這些社區和部落格討論區中分享和交流,讓更多的開發者可以學習和分享更優秀的教學。
此外,寫這本書除了希望和大家分享這款優秀的遊戲開發框架外,還希望讓更多的人了解並參與到這個偉大的時代浪潮中。因此,雖然這本書是關於Cocos2D 的,但其中也涉及了遊戲設計與策劃、專案的測試、上傳與市場推廣等方面的知識。
適合讀者群
● 熟悉Objective-C 和Xcode、希望透過學習Cocos2D 開發iOS 遊戲的開發人員
● 熟悉其他物件導向的語言、希望透過學習Cocos2D 開發iOS 遊戲的開發人員
● 負責iOS 遊戲專案開發與管理的產品經理
● 使用Cocos2D 開發iOS 遊戲的公司與成員
● 開設相關課程的大專院校的師生
如何閱讀本書
本書分為三大部分。
第一部分為基礎篇(第1~9 章),簡單地介紹了Cocos2D v2.0 的基本使用技巧和相關理論,透過第一款iPhone 遊戲—垂直射擊遊戲幫助讀者了解一些基礎背景知識,並熟練Cocos2D v2.0 的各種特性。其中包含Cocos2D 中的動畫、文字繪製系統、Cocos2D 中的事件處理機制、如何設定遊戲的音效等內容。最後,透過超級瑪麗和實體射擊遊戲的實現,詳細介紹了如何在Cocos2D 中使用瓷磚地圖和實體引擎Box2D 使遊戲更加真實有趣。
第二部分為實戰篇(第10 ~ 12 章),透過對兩款簡單遊戲Angel Panda 和AngryPanda 的說明,讓讀者了解一個完整使用Cocos2D 開發遊戲的流程。
第三部分為進階篇(第13~19 章),注重說明Cocos2D v2.0 的部分進階和實用技巧,包含粒子系統、CocosBuilder 和Shader、在遊戲中增加對Game Genter 和IAP的支援、效能最佳化、如何進行使用者測試與發佈等,最後簡單介紹了Cocos2D 的延伸。
其中第二部分以接近實戰的範例來說明遊戲開發,相比於其他兩部分更獨立。如果你對Cocos2D 開發的基礎知識和使用技巧已經有所了解,可以直接閱讀這部分內容。但如果你是一名初學者,請從第1 章的基礎理論知識開始學習。
由於作者水準有限,書中難免會出現一些錯誤或不準確的地方,懇請讀者批評指正。讀者在學習的過程中如果遇到任何問題或困難,可以造訪我的部落格http://blog.sina.com.cn/eseedo,或透過新浪微博http://weibo.com/eseedo 聯絡我。
前言
為什麼要寫這本書
2011 年10 月5 日,秋風蕭瑟,陰雨綿綿,在這顆蔚藍色的美麗星球上,一代傳奇偉人賈伯斯在親友的陪伴下安然離去,宛若流星劃過天際,空留那輛銀色的賓士SL55AMG 在落葉紛飛中孤獨守候著曾經的主人。這個世界從此失去了一位領導科技創新的時代領袖。
自2007 年蘋果推出第一代iPhone 以來,整個行動網際網路的生態系統被徹底顛覆。2008 年,蘋果推出了iPhone OS 和App Store,在短短兩年半的時間內,AppStore 中的相關應用程式下載次數就達到了150 億次,而開發者的收入也高達25 億美元。到2012 年6 月,App Store 的...
目錄
前言
PART 1 基礎篇
第1 章 開始前的準備工作
1.1 什麼是Cocos2D
1.2 下載與安裝
1.3 HelloCocos2D 實例
1.4 深入學習HelloCocos2D 專案
1.5 在裝置上執行HelloCocos2D專案
1.6 本章小結
第2 章 你的第一款iPhone 遊戲—垂直射擊遊戲
2.1 準備工作
2.2 建構遊戲場景
2.3 玩家互動
2.4 碰撞檢測
2.5 遊戲音效
2.6 最後的點綴
2.7 本章小結
第3 章 Cocos2D 核心類別
3.1 Cocos2D 節點基礎知識
3.2 CCNode 節點類別
3.3 CCScene 場景類別
3.4 CCLayer 層類別
3.5 CCTexture 紋理類別
3.6 CCSprite 精靈類別
3.7 Cocos2D 中的單例
3.8 垂直射擊遊戲—載入遊戲資料
3.9 本章小結
第4 章 Cocos2D 中的動作、特效與動畫
4.1 Cocos2D 中的節點動作
4.2 動作的分類及使用
4.3 垂直射擊遊戲:載入進度指示器與捲動背景
4.4 Cocos2D 中的特效
4.5 Cocos2D 中的動畫
4.6 使用Zwoptex 工具實現動畫效果
4.7 垂直射擊遊戲—增加飛行和爆炸動畫
4.8 本章小結
第5 章 Cocos2D 中的文字繪製系統
5.1 文字繪製系統的組成
5.2 標籤的對齊方式
5.3 使用協力廠商工具建立字型紋理圖集
5.4 垂直射擊遊戲—美化遊戲介面
5.5 本章小結
第6 章 Cocos2D 中的事件處理機制
6.1 iOS 中的互動事件處理
6.2 Cocos2D 中的觸控事件處理
6.3 Cocos2D 中的重力感應事件
6.4 垂直射擊遊戲—暫停遊戲
6.5 本章小結
第7 章 Cocos2D 世界的聲音
7.1 認識CocosDenshion 音效引擎
7.2 SimpleAudioEngine 使用方法
7.3 CDSoundEngine 使用方法
7.4 遊戲選單中的聲音設定選項
7.5 垂直射擊遊戲—GameOver
7.6 本章小結
第8 章 在Cocos2D 中使用圖磚
8.1 認識圖磚
8.2 Tiled 地圖編輯器
8.3 在專案中使用圖磚
8.4 超級瑪利歐—實現簡單的原型
8.5 本章小結.
第9 章 物理引擎—更真實的Cocos2D世界
9.1 遊戲物理引擎概況
9.2 認識Box2D
9.3 範例專案HelloBox2D 詳解
9.4 Box2D 實戰—物理射擊遊戲
9.5 超級瑪利歐—Box2D 與Tiled結合
9.6 本章小結
PART 2 實戰篇
第10 章 Angel Panda 遊戲的設計與實現
10.1 iOS 遊戲完整的製作流程
10.2 Angel Panda 遊戲設計
10.3 開發前的準備工作
10.4 Angel Panda 遊戲的實現
10.5 本章小結
第11 章 AngryPanda 遊戲的設計與框架架設
11.1 AngryPanda 遊戲設計
11.2 開發前的準備工作
11.3 資料儲存和遊戲設定
11.4 遊戲中的音效管理
11.5 遊戲中的輔助介面
11.6 本章小結
第12 章 Angry Panda 遊戲主場景的實現
12.1 Box2D 世界的物體
12.2 實現遊戲的主場景
12.3 遊戲中的碰撞檢測機制
12.4 本章小結
PART 3 高級篇
第13 章 粒子系統
13.1 Cocos2D 中的粒子系統
13.2 手動建立粒子系統範例
13.3 plist 檔案
13.4 粒子工具Particle Designer
13.5 本章小結
第14 章 CocosBuilder 和Shader
14.1 CocosBuilder 初體驗
14.2 第一個CocosBuilder 專案
14.3 HelloWorldCocosBuilder 專案功能增強
14.4 著色器
14.5 本章小結
第15 章 在遊戲中增加對Game Center的支援
15.1 什麼是Game Center
15.2 在專案中增加對Game Center 的支援
15.3 範例專案GKTapper 詳解
15.4 本章小結
第16 章 在遊戲中增加對IAP 的支援
16.1 什麼是IAP
16.2 Store Kit Framework 介紹
16.3 在iTunes Connect 設定IAP
16.4 在專案中增加與IAP 相關的程式
16.5 在裝置中測試並傳送審核
16.6 本章小結
第17 章 遊戲效能分析與最佳化
17.1 如何發現效能瓶頸
17.2 Cocos2D 內建的效能分析工具
17.3 最佳化Cocos2D 遊戲效能
17.4 本章小結
第18 章 產品的測試、發佈與推廣
18.1 使用者體驗測試
18.2 產品的上傳與發佈
18.3 App 產品的宣傳與推廣
18.4 本章小結
第19 章 Cocos2D 的延伸
19.1 Cocos3D 簡介
19.2 Cocos2D-x 簡介
19.3 Cocos2D-HTML5 詳解
19.4 Cocos2D-Python 簡介
19.5 本章小結
前言
PART 1 基礎篇
第1 章 開始前的準備工作
1.1 什麼是Cocos2D
1.2 下載與安裝
1.3 HelloCocos2D 實例
1.4 深入學習HelloCocos2D 專案
1.5 在裝置上執行HelloCocos2D專案
1.6 本章小結
第2 章 你的第一款iPhone 遊戲—垂直射擊遊戲
2.1 準備工作
2.2 建構遊戲場景
2.3 玩家互動
2.4 碰撞檢測
2.5 遊戲音效
2.6 最後的點綴
2.7 本章小結
第3 章 Cocos2D 核心類別
3.1 Cocos2D 節點基礎知識
3.2 CCNode 節點類別
3.3 CCScene 場景類別
3.4 CCLayer 層類別
3.5 CCTexture 紋理類別
3.6 CCSprite 精靈...