編輯推薦
本書是著名移動開發專家 關東升傾力創作的“Cocos2d-x實戰”典藏大系之一!本書基於Cocos2d-x最新版本,系統論述Cocos2d-x之C++開發的理論與實戰。全書不僅系統梳理了Cocos2d-x開發的基本方法,並給出了100多個小的示例及大型綜合實例,並附贈了關老師錄製的教學視頻及51CTO課程卡。此外,全書配套提供了400課時的線上課程供讀者互動學習,是一本極佳的Cocos2d-x開發入門實踐指導百科全書。
媒體評論
時至今日,移動網際網路改變了人們的生活方式,同時也改變了IT產業格局,目前遊戲開發無疑是移動開發最火熱的技術。《Cocos2d-x實戰:C++卷》系統詳細的論述了Cocos2d-x遊戲開發理論與實踐。無論您是就業者還是創業者,相信您都會在這本書中有所受益。
——51CTO總裁 熊平
Cocos2d-x是當今最受歡迎的移動遊戲開發引擎之一,根據CSDN的最新統計,多達35%左右的移動遊戲開發者選擇Cocos2d-x作為首選引擎。本書作者關東升老師,具有多年的Cocos2d-x教學經驗,其教學視頻、技術書籍、技術部落格都深受歡迎。關老師通過多年教學實踐與套用開發工作,發現、總結出許多貼合開發者實際工作需求的技術要點,並結合進階式講解,為開發者奉獻了一本可讀、可用的技術經典。如果您是一位渴望通過學習Cocos2d,成功進入遊戲開發領域的C++程式設計師,本書應當成為您必讀的領航之作。
——CSDN社區
國內70%的移動遊戲都是基於Cocos引擎開發的,越來越多的移動開發者將Cocos作為首選引擎。著名移動開發專家關東升老師傾心創作的這本《Cocos2d-x實戰:C++卷》全面系統地論述了Cocos2d-x之C++開發的理論與實戰。書中提供了最全面的Cocos2d-x學習體系,從基礎知識到引擎核心技術再到實戰特訓,對引擎初學者給予了很大的幫助!堪稱Cocos2d-x開發入門實踐指導百科全書!
——Cocos引擎中文官網,CocosChina社區
這是一本用創業心態寫成的技術書,同時也超越了同類的技術書籍。創作團隊推掉幾乎所有的社交活動,在10個月的時間裡,歷經Cocos2d-x-3.X 12個版本的變化,不斷修改案例、內容,終於使本書付梓。實踐部分以深受好評的『迷失航線』為例,深入淺出,開發者可以快速進行項目實戰,輕鬆完成『做中學』的體驗。
——暢遊2035·9ria社區
本書作者
關東升,智捷課堂創始人,國內知名iOS技術作家,iOS技術顧問,高級培訓講師,移動開發專家。擔任51CTO社區iOS技術顧問,精通iOS、Android和WindowsPhone及HTML5等移動開發技術。曾先後主持開發大型網路遊戲《神農訣》的iOS和Android客戶端開發,國家農產品追溯系統的iPad客戶端開發,酒店預訂系統的iOS客戶端開發,金融系統的iOS、WindowsPhone及Android客戶端開發。在AppStore上發布數款遊戲和套用軟體,擅長移動平台的套用和遊戲類項目開發。長期為中國移動研究院、雲南移動、東軟、方正科技、大唐電信、中石油、深圳康拓普、上海財富168、天津港務局等企事業單位授課。著有《iOS網路編程與雲端套用最佳實踐》、《iOS感測器套用開發最佳實踐》、《iOS圖形圖像、動畫和多媒體編程技術最佳實踐》、《iOS開發指南——從零基礎到AppStore上架》、《互動設計的藝術——iOS7擬物化到扁平化革命》、《品位移動設計》等iOS專業圖書。
隨書贈送
★價值600元課程免費觀看使用方法:
1.登入51CTO學院
2.搜尋《Part2:Cocos2d-x入門與提高視頻教程》
3.點擊“立即購買本課程”
4.點擊“使用學習碼觀看”
5.輸入學習碼即可觀看本課程
註:本學習碼自激活後5天內免費觀看本課程;本卡僅限一個51CTO賬號,一次使用。
★智捷課堂50元代金卡使用說明:
1.註冊並登入智捷課堂線上平台;
2.點擊“Cocos2d-x”頻道;
3.購買任意Cocos課程,付款時輸入代金卡卡號即可抵50元現金。
系列叢書
•《Cocos2d-x實戰:C++卷》
•《Cocos2d-x實戰:JS卷——Cocos2d-JS開發》
•《Cocos2d-x實戰:Lua卷》
•《Cocos2d-x實戰:工具卷》
•《Cocos2d-x實戰:CocoStudio卷》
圖書目錄
第一篇 開發基礎
第1章準備開始
1.1本書學習路線圖
1.2使用實例代碼
第2章Cocos2d-x簡介與環境搭建
2.1移動平台遊戲引擎簡介
2.2Cocos2d家譜
2.3Cocos2d-x設計目標
2.4在Windows平台下開始開發Cocos2d-x遊戲
2.4.1使用Visual Studio開發工具
2.4.2下載和使用Cocos2d-x案例
2.4.3生成API文檔
本章小結
第3章Hello Cocos2d-x
3.1第一個Cocos2d-x遊戲
3.1.1創建工程
3.1.2工程檔案結構
3.1.3代碼解釋
3.2Cocos2d-x核心概念
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.4Cocos2d-x坐標系
3.4.1UI坐標
3.4.2OpenGL坐標
3.4.3世界坐標和模型坐標
3.5Win32平台下設定螢幕
本章小結
第4章字元串、標籤和選單
4.1Cocos2d-x中的字元串
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.4Cocos2d-x 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章Cocos2d-x用戶事件
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.1Cocos2d-x中的音頻檔案
9.1.1音頻檔案簡介
9.1.2Cocos2d-x跨平台音頻支持
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.3Cocos2d-x內置粒子系統
10.3.1內置粒子系統
10.3.2實例: 內置粒子系統
10.4自定義粒子系統
10.4.1代碼創建
10.4.2plist檔案創建
本章小結
第11章瓦片地圖
11.1地圖性能問題
11.2Cocos2d-x中瓦片地圖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.2Cocos2d-x 3.x中物理引擎封裝
12.2.1Cocos2d-x 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章Cocos2d-x中使用的數據容器類
13.1Cocos2d-x中兩大類——Ref和Value
13.1.1Cocos2d-x根類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.1Cocos2d-x中的目錄
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.2Cocos2d-x的Socket.IO客戶端
17.3實例: Socket.IO重構MyNotes
17.3.1Socket.IO伺服器端開發
17.3.2Node.js訪問SQLite資料庫
17.3.3Cocos2d-x的Socket.IO客戶端開發
本章小結
第四篇設計與最佳化
第18章Cocos2d-x中常用的設計模式
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章Cocos2d-x中的記憶體管理
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.2Cocos2d-x 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.2Cocos2d-x螢幕適配
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實例: Cocos2d-x遊戲項目協同開發
24.3.1提交到GitHub代碼庫
24.3.2克隆GitHub代碼庫
24.3.3重新獲得GitHub代碼庫
本章小結
第25章Cocos2d-x敏捷開發項目實戰——迷失航線手機遊戲
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.1Cocos2d-x引擎Android平台下AdMob開發環境搭建
26.2.2編寫AdMob相關代碼
26.2.3交叉編譯與打包運行
26.3為迷失航線遊戲Windows Phone 8平台添加AdMob廣告
26.3.1Cocos2d-x引擎Windows Phone 8平台下AdMob開發
環境搭建
26.3.2編寫AdMob相關代碼
26.4為迷失航線遊戲iOS平台添加AdMob廣告
26.4.1Cocos2d-x引擎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其他問題
本章小結