內容介紹
Cocos2d-x是移動跨平台開發最流行的遊戲引擎,而本書是一本很全面的、比較‘接地氣’的遊戲開發教程。書中匯聚了熱門手機遊戲《捕魚達人》開發的實戰經驗,作者從最基礎的內容開始,逐步深入地介紹了Cocos2d-x的相關知識點。此外,書中的教學資源獲得《捕魚達人》手機遊戲的授權,讀者可以從一流遊戲開發中高起點地開始一段學習,掌握寶貴的開發經驗。作品目錄
第一部分 引擎基礎第1章 Hello Cocos2d-x2
1.1 引擎簡介2
1.2 搭建開發環境3
1.3 Hello World5
1.4 Hello World分析6
1.5 測試樣例簡介10
1.6 小結11
第2章 在遊戲開始之前12
2.1 基本概念12
2.1.1 場景與流程控制12
2.1.2 層13
2.1.3 精靈14
2.1.4 節點與渲染樹14
2.1.5 動作與動畫16
2.2 Cocos2d-x代碼風格16
2.2.1 命名空間與類名稱16
2.2.2 構造函式與初始化17
2.2.3 選擇器18
2.2.4 屬性19
2.2.5 單例20
2.3 C++中的Cocos2d-x記憶體管理21
2.3.1 複雜的記憶體管理21
2.3.2 現有的智慧型記憶體管理技術21
2.3.3 Cocos2d-x的記憶體管理機制22
2.3.4 工廠方法25
2.3.5 關於對象傳值26
2.3.6 釋放:release()還是autorelease()?26
2.3.7 容器27
2.3.8 相關輔助宏28
2.3.9 Cocos2d-x記憶體管理原則28
2.4 生命周期分析29
2.5 小結31
第3章 遊戲的基本元素32
3.1 CCDirector:大總管32
3.2 CCScene:場景33
3.3 CCLayer:層34
3.4 CCSprite:精靈35
3.4.1 紋理35
3.4.2 創建精靈35
3.4.3 設定精靈的屬性36
3.4.4 向層中添加精靈36
3.4.5 常用成員38
3.5 CCNode與坐標系39
3.5.1 坐標系與繪圖屬性40
3.5.2 節點的組織43
3.5.3 定時器事件44
3.5.4 其他事件46
3.6 Cocos2d-x內置的常用層46
3.7 Cocos2d-x調度原理49
3.7.1 遊戲主循環50
3.7.2 定時調度器53
3.8 小結58
第4章 動作60
4.1 基本概念60
4.2 瞬時動作61
4.3 持續性動作62
4.3.1 位置變化動作63
4.3.2 屬性變化動作64
4.3.3 視覺特效動作65
4.3.4 控制動作65
4.4 複合動作66
4.5 變速動作68
4.6 使魚動起來70
4.7 創建自定義動作74
4.7.1 一點簡單的物理知識74
4.7.2 創建自定義動作75
4.8 讓動作更平滑流暢77
4.9 Cocos2d-x動作原理79
4.9.1 動作類的結構79
4.9.2 動作的更新80
4.9.3 CCActionManager的工作原理81
4.10 小結83
第5章 動畫與場景特效84
5.1 動畫84
5.1.1 概述84
5.1.2 使用動畫85
5.2 場景特效86
5.3 小結87
第6章 音樂與音效88
6.1 使用音效引擎88
6.2 支持格式89
6.3 播放音樂與音效89
6.3.1 預載入89
6.3.2 播放與停止90
6.3.3 暫停與恢復播放90
6.3.4 其他成員91
6.4 小結92
第7章 用戶輸入93
7.1 觸摸輸入93
7.1.1 使用CCLayer回響觸摸事件93
7.1.2 兩種Cocos2d-x觸摸事件94
7.2 觸摸分發器原理97
7.3 觸摸中的陷阱100
7.4 使用觸摸事件100
7.4.1 使炮台動起來100
7.4.2 識別簡單的手勢103
7.5 加速度計105
7.6 文字輸入107
7.7 小結110
第二部分 引擎進階
第8章 粒子效果114
8.1 Cocos2d-x中的粒子系統114
8.2 粒子效果編輯器117
8.2.1 界面介紹117
8.2.2 製作火焰特效121
8.3 小結124
第9章 大型地圖125
9.1 瓦片地圖125
9.2 編輯器126
9.2.1 Tiled Map Editor簡介126
9.2.2 創建水底世界127
9.3 導入遊戲131
9.4 實現層次感132
9.5 預定義屬性135
9.6 小結135
第10章 Cocos2d-x繪圖原理及最佳化136
10.1 OpenGL基礎136
10.1.1 OpenGL簡介136
10.1.2 繪圖140
10.1.3 矩陣與變換143
10.2 Cocos2d-x繪圖原理145
10.2.1 精靈的繪製145
10.2.2 渲染樹的繪製147
10.2.3 坐標變換150
10.3 TexturePacker與最佳化152
10.3.1 繪圖瓶頸152
10.3.2 碎圖壓縮與精靈框幀153
10.3.3 批量渲染154
10.3.4 色彩深度最佳化156
10.4 小結157
第11章 OpenGL繪圖技巧159
11.1 自定義繪圖159
11.2 遮罩層161
11.3 數據交流164
11.4 可程式管線168
11.4.1 可程式著色器168
11.4.2 CCGLProgram168
11.4.3 變數傳遞169
11.5 水紋效果170
11.5.1 著色器程式171
11.5.2 ShaderNode類172
11.5.3 uniform變數準備174
11.5.4 繪製175
11.5.5 添加到場景176
11.6 CCGrid3D177
11.7 再議效率178
11.8 小結179
第12章 物理引擎180
12.1 新的超級武器180
12.2 Box2D引擎簡介181
12.3 接入Box2D181
12.4 更新狀態184
12.5 調試繪圖186
12.6 碰撞檢測187
12.7 彈射189
12.8 精確碰撞190
12.9 小結191
第三部分 遊戲開發進階
第13章 數據持久化194
13.1 CCUserDefault194
13.2 格式化存儲194
13.3 本地檔案存儲196
13.4 XML與JSON196
13.5 加密與解密200
13.6 SQLite201
13.7 小結205
第14章 網路206
14.1 網路傳輸架構206
14.2 CURL206
14.3 簡單傳輸207
14.4 非阻塞傳輸209
14.5 用戶記錄211
14.6 多人對戰與同步問題211
14.6.1 時間同步212
14.6.2 魚群同步212
14.7 校驗213
14.8 小結213
第15章 快取與池215
15.1 移動設備昂貴的CPU與記憶體215
15.2 快取機制:預載入與重複使用216
15.3 Cocos2d-x中的快取216
15.3.1 CCTextureCache216
15.3.2 CCSpriteFrameCache217
15.3.3 CCAnimationCache217
15.4 對象池機制:可回收與重複使用218
15.5 對象池實現218
15.6 落實到工廠方法221
15.7 一個簡單的性能測試222
15.8 使用時機223
15.9 小結224
第16章 並發編程225
16.1 單執行緒的尷尬225
16.2 pthread225
16.3 執行緒安全226
16.4 執行緒間任務安排227
16.5 並發編程輔助228
16.6 小結233
第四部分 多平台
第17章 多平台下的Cocos2d236
17.1 Windows 8236
17.2 Windows Phone平台237
17.3 Cocos2d-HTML5237
17.4 移植238
17.5 小結238
第18章 可視化開發239
18.1 CocosBuilder可視化開發239
18.2 使用CocosBuilder創建場景239
18.3 在Cocos2d-x項目中使用場景241
18.4 小結242
第19章 Cocos2d-HTML5 243
19.1 概述243
19.2 開發流程244
19.2.1 開發環境介紹245
19.2.2 搭建開發環境245
19.2.3 開始開發249
19.3 代碼安全255
19.4 小結257
第20章 移植258
20.1 命名原則258
20.1.1 類名稱258
20.1.2 類函式259
20.1.3 屬性259
20.1.4 選擇器260
20.1.5 全局變數、函式與宏260
20.2 跨語言移植262
20.2.1 第一階段:代碼移植262
20.2.2 第二階段:消除平台差異265
20.2.3 第三階段:最佳化268
20.3 小結269
第五部分 實戰篇
第21章 實戰演練——開發自己的《捕魚達人》272
21.1 開發前的準備273
21.1.1 視圖273
21.1.2 模型274
21.1.3 控制器275
21.2 開始開發275
21.2.1 第一輪疊代275
21.2.2 第二輪疊代289
21.2.3 第三輪疊代293
附錄A 把遊戲部署到Android平台299