《Cocos2d-x實戰:C++卷》系統論述了Cocos2dx游戲開發理論與實踐。全書內容涵蓋了Cocos2dx的核心類、瓦片地圖、物理引擎、音樂音效、數據持久化、網絡通信、數據交換格式、內存管理、性能優化、平臺移植、程序代碼管理、三大應用商店發布產品等。本書共29章,按內容結構可分為六篇:
第一篇開發基礎,即第2章~第8章,內容包括Cocos2dx簡介、環境搭建、字符串、標簽、菜單、精靈、場景、層、動作、特效、動畫和Cocos2dx用戶事件。
第二篇開發進階,即第9章~第12章,內容包括游戲音樂與音效、粒子系統、瓦片地圖和物理引擎。
第三篇數據與網絡,即第13章~第17章,內容包括Cocos2dx中使用的數據容器類、數據持久化、數據交換格式、基于HTTP網絡通信和基于Node.js的Socket.IO網絡通信。
第四篇設計與優化,即第18章~第20章,內容包括Cocos2dx中的常用設計模式、Cocos2dx中的內存管理和性能優化。
第五篇平臺移植,即第21章~第23章,內容包括從Win32到Android平臺的移植、從Win32到WindowsPhone8平臺的移植和從Win32到iOS平臺的移植。
第六篇開發實戰,即第24章~第29章,內容包括使用Git管理程序代碼和多個項目實戰——迷失航線手機游戲項目開發、為迷失航線游戲添加廣告、發布放到Googleplay應用商店、發布放到WindowsPhone應用商店和發布放到蘋果AppStore。
《Cocos2d-x實戰:C++卷》是著名移動開發專家關東升傾力創作的“Cocos2d-x實戰”典藏大系之一!本書基于Cocos2d-x最新版本,系統論述Cocos2d-x之C++開發的理論與實戰。全書不僅系統梳理了Cocos2d-x開發的基本方法,并給出了100多個小的示例及大型綜合實例,并附贈了關老師錄制的教學視頻及51CTO課程卡。此外,全書配套提供了400課時的在線課程供讀者互動學習,是一本極佳的Cocos2d-x開發入門實踐指導百科全書。
★價值600元課程免費觀看使用方法:
1.登陸51CTO學院
2.搜索《Part2:Cocos2d-x入門與提高視頻教程》
3.點擊“立即購買本課程”
4.點擊“使用學習碼觀看”
5.輸入學習碼即可觀看本課程
注:本學習碼自激活后5天內免費觀看本課程;本卡僅限一個51CTO賬號,一次使用。
★智捷課堂50元代金卡使用說明:
1.注冊并登陸智捷課堂在線平臺;
2.點擊“Cocos2d-x”頻道;
3.購買任意Cocos課程,付款時輸入代金卡卡號即可抵50元現金。
關東升,國內知名iOS技術作家,iOS技術顧問,高級培訓講師,移動開發專家。擔任51CTO社區iOS技術顧問,精通iOS、Android和WindowsPhone及HTML5等移動開發技術。曾先后主持開發大型網絡游戲《神農訣》的iOS和Android客戶端開發,國家農產品追溯系統的iPad客戶端開發,酒店預訂系統的iOS客戶端開發,金融系統的iOS、WindowsPhone及Android客戶端開發。在AppStore上發布數款游戲和應用軟件,擅長移動平臺的應用和游戲類項目開發。長期為中國移動研究院、云南移動、東軟、方正科技、大唐電信、中石油、深圳康拓普、上海財富168、天津港務局等企事業單位授課。著有《iOS網絡編程與云端應用最佳實踐》、《iOS傳感器應用開發最佳實踐》、《iOS圖形圖像、動畫和多媒體編程技術最佳實踐》、《iOS開發指南——從零基礎到AppStore上架》、《交互設計的藝術——iOS7擬物化到扁平化革命》等iOS專業圖書。
第一篇 開發基礎
第1章準備開始
1.1本書學習路線圖
1.2使用實例代碼
第2章Cocos2dx簡介與環境搭建
2.1移動平臺游戲引擎簡介
2.2Cocos2d家譜
2.3Cocos2dx設計目標
2.4在Windows平臺下開始開發Cocos2dx游戲
2.4.1使用Visual Studio開發工具
2.4.2下載和使用Cocos2dx案例
2.4.3生成API文檔
本章小結
第3章Hello Cocos2dx
3.1第一個Cocos2dx游戲
3.1.1創建工程
3.1.2工程文件結構
3.1.3代碼解釋
3.2Cocos2dx核心概念
3.2.1導演
3.2.2場景
3.2.3層
3.2.4精靈
3.2.5菜單
3.3Node與Node層級架構
3.3.1Node中重要的操作
3.3.2Node中重要的屬性
3.3.3游戲循環與調度
3.4Cocos2dx坐標系
3.4.1UI坐標
3.4.2OpenGL坐標
3.4.3世界坐標和模型坐標
3.5Win32平臺下設置屏幕
本章小結
第4章字符串、標簽和菜單
4.1Cocos2dx中的字符串
4.1.1使用const char*和std∷string
4.1.2使用cocos2d∷__String
4.1.3Win32平臺下中文亂碼問題
4.2使用標簽
4.2.1LabelTTF
4.2.2LabelAtlas
4.2.3LabelBMFont
4.2.4Cocos2dx 3.x標簽類Label
4.2.5標簽中文亂碼問題
4.3使用菜單
4.3.1文本菜單
4.3.2精靈菜單和圖片菜單
4.3.3開關菜單
本章小結
第5章精靈
5.1Sprite精靈類
5.1.1創建Sprite精靈對象
5.1.2實例: 使用紋理對象創建Sprite對象
5.2精靈的性能優化
5.2.1使用紋理圖集
5.2.2使用精靈幀緩存
本章小結
第6章場景與層
6.1場景與層的關系
6.2場景切換
6.2.1場景切換相關函數
6.2.2場景過渡動畫
6.3場景的生命周期
6.3.1生命周期函數
6.3.2多場景切換生命周期
本章小結
第7章動作、特效和動畫
7.1動作
7.1.1瞬時動作
7.1.2間隔動作
7.1.3組合動作
7.1.4動作速度控制
7.1.5函數調用
7.2特效
7.2.1網格動作
7.2.2實例: 特效演示
7.3動畫
7.3.1幀動畫
7.3.2實例: 幀動畫使用
本章小結
第8章Cocos2dx用戶事件
8.1事件處理機制
8.1.1事件分發器
8.1.2觸摸事件
8.1.3實例: 單點觸摸事件
8.1.4實例: 使用Lambda表達式
8.1.5鍵盤事件
8.1.6鼠標事件
8.2在層中進行事件處理
8.2.1觸摸事件
8.2.2實例: 單點觸摸事件
8.3加速度計與加速度事件
8.3.1加速度計
8.3.2使用事件分發器
8.3.3使用層加速度計事件
8.3.4實例: 運動的小球
本章小結
第二篇開 發 進 階
第9章游戲背景音樂與音效
9.1Cocos2dx中的音頻文件
9.1.1音頻文件簡介
9.1.2Cocos2dx跨平臺音頻支持
9.2使用CocosDenshion引擎
9.2.1音頻文件的預處理
9.2.2播放背景音樂
9.2.3停止播放背景音樂
9.2.4背景音樂播放暫停與繼續
9.3實例: 設置背景音樂與音效
9.3.1AppDelegate實現
9.3.2HelloWorld場景實現
9.3.3設置場景實現
本章小結
第10章粒子系統
10.1問題的提出
10.2粒子系統基本概念
10.2.1實例: 打火機
10.2.2粒子發射模式
10.2.3粒子系統屬性
10.3Cocos2dx內置粒子系統
10.3.1內置粒子系統
10.3.2實例: 內置粒子系統
10.4自定義粒子系統
10.4.1代碼創建
10.4.2plist文件創建
本章小結
第11章瓦片地圖
11.1地圖性能問題
11.2Cocos2dx中瓦片地圖API
11.3實例: 忍者無敵
11.3.1設計地圖
11.3.2程序中加載地圖
11.3.3移動精靈
11.3.4檢測碰撞
11.3.5滾動地圖
本章小結
第12章物理引擎
12.1使用物理引擎
12.1.1物理引擎核心概念
12.1.2物理引擎與精靈關系
12.2Cocos2dx 3.x中物理引擎封裝
12.2.1Cocos2dx 3.x物理引擎API
12.2.2實例: HelloPhysicsWorld
12.2.3實例: 碰撞檢測
12.2.4實例: 使用關節
12.3Box2D引擎
12.3.1Box2D核心概念
12.3.2使用Box2D物理引擎的一般步驟
12.3.3Visual Studio 2012下Box2D開發環境設置
12.3.4實例: HelloBox2D
12.3.5實例: 碰撞檢測
12.3.6實例: 使用關節
本章小結
第三篇數據與網絡
第13章Cocos2dx中使用的數據容器類
13.1Cocos2dx中兩大類——Ref和Value
13.1.1Cocos2dx根類Ref
13.1.2包裝類Value
13.2Ref列表容器
13.2.1Array容器
13.2.2實例: Array容器
13.2.3Vector容器
13.2.4實例: Vector容器
13.3Ref字典容器
13.3.1Dictionary容器
13.3.2實例: Dictionary容器
13.3.3Map容器
13.3.4實例: Map容器
13.4Value列表容器——ValueVector
13.4.1ValueVector常用API
13.4.2實例: 使用ValueVector容器
13.5Value字典容器——ValueMap和ValueMapIntKey
13.5.1ValueMap和ValueMapIntKey常用API
13.5.2實例: 使用ValueMap容器
本章小結
第14章數據持久化
14.1使用FileUtils訪問文件
14.1.1Cocos2dx中的目錄
14.1.2實例: 文件讀寫
14.1.3實例: 路徑搜索
14.2持久化簡介
14.3UserDefault數據持久化
14.3.1UserDefaultAPI
14.3.2實例: 保存背景音樂和音效設置
14.4屬性列表數據持久化
14.4.1屬性列表簡介
14.4.2實例: MyNotes
14.4.3使用Dictionary讀寫屬性列表文件
14.4.4使用ValueMap讀寫屬性列表文件
14.4.5使用ValueVector讀取屬性列表文件
14.5SQLite數據庫數據持久化
14.5.1SQLite數據庫簡介
14.5.2Visual Studio下SQLite數據庫開發環境設置
14.5.3實例: 重構MyNotes
14.5.4創建數據庫
14.5.5SQLite數據庫管理工具
14.5.6查詢數據
14.5.7修改數據
本章小結
第15章數據交換格式
15.1CSV數據交換格式
15.1.1文檔結構
15.1.2CSV格式解碼
15.2XML數據交換格式
15.2.1文檔結構
15.2.2SAX解析
15.2.3DOM解析
15.3JSON數據交換格式
15.3.1文檔結構
15.3.2JSON框架jsoncpp和rapidjson比較
15.3.3實例: rapidjson解碼
15.3.4實例: rapidjson編碼
本章小結
第16章基于HTTP的網絡通信
16.1網絡結構
16.1.1客戶端服務器結構網絡
16.1.2對等結構網絡
16.2HTTP與HTTPS
16.3使用cURL開發客戶端
16.3.1cURL與libcurl庫
16.3.2Visual Studio下libcurl庫開發環境設置
16.3.3實例: 重構MyNotes
16.4使用HttpClient開發客戶端
16.4.1HttpClient API
16.4.2Visual Studio下HttpClient開發環境設置
16.4.3實例: 重構MyNotes
本章小結
第17章基于Node.js的Socket.IO網絡通信
17.1Node.js簡介
17.1.1Node.js安裝
17.1.2Node.js測試
17.2使用Socket.IO
17.2.1Socket.IO服務器端開發
17.2.2Cocos2dx的Socket.IO客戶端
17.3實例: Socket.IO重構MyNotes
17.3.1Socket.IO服務器端開發
17.3.2Node.js訪問SQLite數據庫
17.3.3Cocos2dx的Socket.IO客戶端開發
本章小結
第四篇設計與優化
第18章Cocos2dx中常用的設計模式
18.1單例設計模式
18.1.1問題提出
18.1.2實現原理
18.1.3應用案例
18.2委托設計模式
18.2.1問題提出
18.2.2實現原理
18.2.3應用案例
18.3觀察者設計模式與通知機制
18.3.1問題提出
18.3.2實現原理
18.3.3通知機制
本章小結
第19章Cocos2dx中的內存管理
19.1C++內存管理
19.1.1內存分配區域
19.1.2動態內存分配
19.2Ref內存管理
19.2.1內存引用計數
19.2.2自動釋放池
19.2.3Ref內存管理規則
19.3Ref內存管理設計模式
19.3.1使用靜態構造函數
19.3.2使用訪問器
19.4其他類型內存管理
19.4.1Value內存管理
19.4.2Vector和Map內存管理
本章小結
第20章性能優化
20.1工具
20.1.1使用Xcode中Instruments工具
20.1.2使用Windows任務管理器
20.1.3使Visual Studio內存泄漏檢測工具Visual Leak Detector
20.1.4左下角的文字是什么
20.2使用SpriteBatchNode批次渲染
20.3合理使用緩存
20.3.1場景與資源
20.3.2緩存創建和清除時機
20.4圖片與紋理優化
20.4.1選擇圖片格式
20.4.2拼圖
20.4.3紋理像素格式
20.4.4紋理緩存異步加載
20.4.5背景圖片優化
20.5聲音優化
20.5.1聲音格式優化
20.5.2聲音預處理與清除
20.6多線程并發訪問
20.6.1std∷thread多線程技術
20.6.2異步預處理聲音
20.7SQLite數據庫優化
20.7.1表結構優化
20.7.2查詢優化
20.7.3插入(或刪除)優化
20.8數據交換格式優化
本章小結
第五篇平 臺 移 植
第21章從Win32到Android平臺的移植
21.1搭建交叉編譯和打包環境
21.1.1安裝Android SDK
21.1.2管理Android SDK
21.1.3管理Android開發模擬器
21.1.4安裝Android NDK
21.1.5設置環境變量
21.2交叉編譯、打包和運行
21.2.1使用cocos命令行工具
21.2.2Android.mk編譯文件
21.2.3使用Eclipse工具
21.3移植問題匯總
21.3.1中文亂碼問題
21.3.2SQLite3數據庫移植問題
21.3.3JSON框架rapidjson移植問題
21.3.4libcurl庫移植問題
21.3.5libNetwork庫移植問題
21.3.6橫屏與豎屏設置問題
本章小結
第22章從Win32到Windows Phone 8平臺的移植
22.1Windows Phone 8開發環境搭建
22.1.1安裝Windows Phone SDK 8.0
22.1.2安裝Visual Studio Express 2012 for Windows Phone 8
22.2Cocos2dx 3.x的Windows Phone 8工程
22.2.1生成工程
22.2.2運行工程
22.2.3調試工程
22.3移植問題匯總
22.3.1中文亂碼問題
22.3.2SQLite3數據庫移植問題
22.3.3JSON框架rapidjson移植問題
22.3.4libcurl庫移植問題
22.3.5libNetwork庫移植問題
22.3.6橫屏與豎屏設置問題
本章小結
第23章從Win32到iOS平臺的移植
23.1iOS開發環境搭建
23.1.1Xcode安裝和卸載
23.1.2Xcode操作界面
23.2從Visual Studio工程到Xcode工程
23.2.1添加源文件
23.2.2添加資源文件
23.2.3Xcode中編譯并運行
23.3移植問題匯總
23.3.1中文亂碼問題
23.3.2SQLite3數據庫移植問題
23.3.3JSON框架rapidjson移植問題
23.3.4libcurl庫移植問題
23.3.5聲音移植問題
23.3.6使用PVR紋理格式
23.3.7橫屏與豎屏設置問題
23.4多分辨率屏幕適配
23.4.1問題的提出
23.4.2Cocos2dx屏幕適配
23.4.3分辨率策略
23.4.4紋理圖集資源適配
23.4.5瓦片地圖資源適配
本章小結
第六篇開 發 實 踐
第24章使用Git管理程序代碼版本
24.1代碼版本管理工具——Git
24.1.1版本控制歷史
24.1.2術語和基本概念
24.1.3Git環境配置
24.1.4Git常用命令
24.2代碼托管服務——GitHub
24.2.1創建和配置GitHub賬號
24.2.2創建代碼庫
24.2.3刪除代碼庫
24.2.4派生代碼庫
24.2.5GitHub協同開發
24.3實例: Cocos2dx游戲項目協同開發
24.3.1提交到GitHub代碼庫
24.3.2克隆GitHub代碼庫
24.3.3重新獲得GitHub代碼庫
本章小結
第25章Cocos2dx敏捷開發項目實戰——迷失航線手機游戲
25.1迷失航線游戲分析與設計
25.1.1迷失航線故事背景
25.1.2需求分析
25.1.3原型設計
25.1.4游戲腳本
25.2任務1: 游戲工程的創建與初始化
25.2.1迭代1.1: 創建工程
25.2.2迭代1.2: 多分辨率支持
25.2.3迭代1.3: 通用類與基類維護
25.2.4迭代1.4: 發布到GitHub
25.3任務2: 創建Loading場景
25.3.1迭代2.1: 添加場景和層
25.3.2迭代2.2: Loading動畫
25.3.3迭代2.3: 異步加載紋理緩存
25.3.4迭代2.4: 異步預處理聲音
25.4任務3: 創建Home場景
25.4.1迭代3.1: 添加場景和層
25.4.2迭代3.2: 添加菜單
25.5任務4: 創建設置場景
25.6任務5: 創建幫助場景
25.7任務6: 游戲場景實現
25.7.1迭代6.1: 創建敵人精靈
25.7.2迭代6.2: 創建玩家飛機精靈
25.7.3迭代6.3: 創建炮彈精靈
25.7.4迭代6.4: 初始化游戲場景
25.7.5迭代6.5: 游戲場景菜單實現
25.7.6迭代6.6: 玩家飛機發射炮彈
25.7.7迭代6.7: 炮彈與敵人的碰撞檢測
25.7.8迭代6.8: 玩家飛機與敵人的碰撞檢測
25.7.9迭代6.9: 玩家飛機生命值顯示
25.7.10迭代6.10: 顯示玩家得分情況
25.8任務7: 游戲結束場景
本章小結
第26章為迷失航線游戲添加廣告
26.1使用谷歌AdMob廣告
26.1.1注冊AdMob賬號
26.1.2管理AdMob廣告
26.1.3AdMob廣告類型
26.1.4下載谷歌AdMob Ads SDK
26.2為迷失航線游戲Android平臺添加AdMob廣告
26.2.1Cocos2dx引擎Android平臺下AdMob開發環境搭建
26.2.2編寫AdMob相關代碼
26.2.3交叉編譯與打包運行
26.3為迷失航線游戲Windows Phone 8平臺添加AdMob廣告
26.3.1Cocos2dx引擎Windows Phone 8平臺下AdMob開發
環境搭建
26.3.2編寫AdMob相關代碼
26.4為迷失航線游戲iOS平臺添加AdMob廣告
26.4.1Cocos2dx引擎iOS平臺下AdMob開發環境搭建
26.4.2編寫AdMob相關代碼
本章小結
第27章把迷失航線游戲發布到Google Play應用商店
27.1谷歌Android應用商店Google Play
27.2Android設備測試
27.3還有“最后一公里”
27.3.1添加圖標
27.3.2應用程序打包
27.4發布產品
27.4.1上傳APK
27.4.2填寫商品詳細信息
27.4.3添加定價和發布范圍
本章小結
第28章把迷失航線游戲發布到Windows Phone應用商店
28.1微軟Windows Phone應用商店
28.2Windows Phone 8設備測試
28.2.1播放音頻時程序崩潰問題
28.2.2屏幕分辨率寬度和高度相反問題
28.3還有“最后一公里”
28.3.1使用應用商店測試套件完成“最后一公里”
28.3.2測試應用程序包XAP
28.3.3修改應用程序的基本屬性
28.3.4配置圖標
28.3.5應用商店磁貼和屏幕快照
28.3.6修改UI相關描述信息
28.3.7修改打包信息
28.4發布產品
28.4.1填寫應用信息
28.4.2上傳并描述您的程序包
本章小結
第29章把迷失航線游戲發布到蘋果App Store應用商店
29.1蘋果的App Store
29.2iOS設備測試
29.2.1創建開發者證書
29.2.2設備注冊
29.2.3創建App ID
29.2.4創建配置概要文件
29.2.5設備上運行
29.3還有“最后一公里”
29.3.1添加圖標
29.3.2添加啟動界面
29.3.3修改發布產品屬性
29.3.4為發布進行編譯
29.3.5應用打包
29.4發布產品
29.4.1創建應用及基本信息
29.4.2應用定價信息
29.4.3基本信息輸入
29.4.4上傳應用前準備
29.4.5上傳應用
29.5常見審核不通過的原因
29.5.1功能問題
29.5.2用戶界面問題
29.5.3商業問題
29.5.4不當內容
29.5.5其他問題
本章小結
歡迎來到Cocos的開發世界。
Cocos2dx自發布第一個版本以來,歷經4年的成長,到如今使用者已遍布全球,數不清的采用Cocos引擎開發的游戲橫掃各個暢銷榜單,我自己也成了其中很多游戲的忠實玩家。Cocos引擎能一步一步走到今天,我很欣慰。感謝許多業界朋友的幫助,也感謝廣大開發者的鼎力支持。
近兩年,手機游戲行業在移動互聯網世界的崛起是有目共睹的。行業格局在變化,Cocos2dx不改初衷,開源免費始終如一,便捷高效步步提升,跨平臺特性也日益完善。我們的引擎團隊不斷地努力改進,盡可能降低游戲開發的門檻,讓更多有想法、有創意的朋友,不管是專業還是非專業出身的開發者,都能著手去實現。
關東升老師是國內著名的移動開發專家,精通多種開發技術,也有多年的開發經驗,是一位不可多得的良師益友。這次關老師攜手趙大羽先生傾力創作這套“Cocos2dx實戰”,共包括5冊,分別是C++卷、JS卷、Lua卷、工具卷和Cocos Studio卷,其中Lua卷與Cocos2dJS卷更是填補了國內市場的空白。
這套圖書系統地論述了Cocos2dx游戲開發理論與實踐,涵蓋Cocos2dx開發的幾乎所有方面的知識領域。全部內容深入淺出,全面系統,對入門和進階都大有裨益,非常值得閱讀,我在這里鄭重推薦給大家。
除了撰寫圖書,關老師還開設了超過400課時的Cocos引擎在線課程,我很敬佩他的專業精神,也非常感謝他一直以來對Cocos2dx的支持。關老師的書籍和在線課程在業內有相當高的人氣,相信能為許多想要進入Cocos開發世界的朋友提供極大的幫助。
希望大家能從關老師的書籍和在線課程中學到更多,我也期待能有更多的開發者加入Cocos2dx大家庭。最后祝愿各位都能馬到成功!