內容簡介
《Cocos2d-x實戰 Lua卷》是介紹Cocos2d-x Lua遊戲編程和開發技術的書籍,介紹了使用Cocos2dx Lua中核心類、瓦片地圖、物理引擎、音樂音效、數據持久化、網路通信、性能最佳化、多平台移植、程式代碼管理、兩大套用商店發布產品。全書分為六篇: 基礎篇、進階篇、數據與網路篇、最佳化篇、跨平台移植篇和實戰篇,共23章。基礎篇包括第1~8章,分別是Cocos2d-x Lua介紹、環境搭建、標籤、選單、精靈、場景、層、動作、特效、動畫和用戶事件。進階篇包括第9~12章,分別是遊戲音樂與音效、粒子系統、瓦片地圖和物理引擎。數據與網路篇包括第13~15章,分別是數據持久化、基於HTTP的網路通信、Node.js與WebSocket網路通信。最佳化篇為第16章,主要介紹性能最佳化。跨平台移植篇包括第17章和第18章,分別是移植到Android平台和移植到iOS平台。實戰篇包括第19~23章,分別是使用Git管理程式代碼、項目實戰——迷失航線手機遊戲、為迷失航線遊戲添加廣告、發布放到Google play套用商店和發布放到蘋果App Store。
目錄
第一篇基礎篇
第1章準備開始
1.1本書學習路線圖
1.2使用實例代碼
第2章Lua語言基礎
2.1環境搭建
2.1.1Lua編輯工具
2.1.2HelloLua實例測試
2.2標識符和保留字
2.2.1標識符
2.2.2保留字
2.3常量和變數
2.3.1常量
2.3.2變數
2.3.3命名規範
2.4注釋
2.5Lua數據類型
2.5.1數據類型
2.5.2type函式
2.5.3數據類型轉換
2.6運算符
2.6.1算術運算符
2.6.2關係運算符
2.6.3邏輯運算符
2.6.4運算優先權
2.7控制語句
2.7.1分支語句
2.7.2循環語句
2.7.3跳轉語句
2.8表類型
2.8.1字典
2.8.2數組
2.9字元串類型
2.9.1字元串截取
2.9.2字元串轉換
2.9.3字元串查詢
2.9.4字元串格式化
2.10函式
2.10.1使用函式
2.10.2變數作用域
2.10.3多重返回值
2.11閉包函式
2.11.1嵌套函式
2.11.2返回函式
2.11.3使用閉包表達式
2.12Lua中的面向對象
2.12.1Lua中的對象
2.12.2類的實現
本章小結
第3章Hello Cocos2dx Lua
3.1移動平台遊戲引擎介紹
3.2Cocos2d遊戲引擎
3.2.1Cocos2d遊戲引擎家譜
3.2.2Cocos2dx引擎
3.2.3JavaScript和Lua綁定
3.3搭建Cocos2dx Lua開發環境
3.3.1搭建Cocos Code IDE開發環境
3.3.2下載和使用Cocos2dx Lua官方案例
3.4第一個Cocos2dx Lua遊戲
3.4.1創建工程
3.4.2Cocos Code IDE中運行
3.4.3工程檔案結構
3.4.4代碼解釋
3.5重構HelloLua
3.6Cocos2dx Lua核心概念
3.6.1導演
3.6.2場景
3.6.3層
3.6.4精靈
3.6.5選單
3.7Node與Node層級架構
3.7.1Node中重要的操作
3.7.2Node中重要的屬性
3.7.3遊戲循環與調度
3.8Cocos2dx Lua坐標系
3.8.1UI坐標
3.8.2OpenGL坐標
3.8.3世界坐標和模型坐標
本章小結
第4章標籤和選單
4.1使用標籤
4.1.1LabelTTF
4.1.2LabelAtlas
4.1.3LabelBMFont
4.1.4Cocos2dx 3.x標籤類Label
4.2使用選單
4.2.1文本選單
4.2.2精靈選單和圖片選單
4.2.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章用戶事件
8.1事件處理機制
8.1.1事件分發器
8.1.2觸摸事件
8.1.3實例: 單點觸摸事件
8.1.4實例: 多點觸摸事件
8.1.5鍵盤事件
8.2加速度計與加速度事件
8.2.1加速度計
8.2.2加速計事件
8.2.3實例: 運動的小球
本章小結
第二篇進階篇
第9章遊戲背景音樂與音效
9.1Cocos2dx Lua中音頻檔案
9.1.1音頻檔案介紹
9.1.2Cocos2dx Lua跨平台音頻支持
9.2使用Audio Engine引擎
9.2.1音頻檔案的預處理
9.2.2播放背景音樂
9.2.3停止播放背景音樂
9.3實例: 設定背景音樂與音效
9.3.1GameScene場景實現
9.3.2SettingScene場景實現
本章小結
第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 Lua中瓦片地圖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 Lua中物理引擎
12.2.1Cocos2dx Lua物理引擎API
12.2.2實例: HelloPhysicsWorld
12.2.3實例: 碰撞檢測
12.2.4實例: 使用關節
本章小結
第三篇數據與網路篇
第13章數據持久化
13.1使用FileUtils訪問檔案
13.1.1Cocos2dx Lua中的目錄
13.1.2實例: 讀取檔案
13.1.3實例: 路徑搜尋
13.2持久化概述
13.3UserDefault數據持久化
13.3.1UserDefaultAPI
13.3.2實例: 保存背景音樂和音效設定
13.4屬性列表數據持久化
13.4.1屬性列表概述
13.4.2實例: 訪問根為字典列表結構的屬性列表檔案
13.4.3實例: 訪問根為列表結構的屬性列表檔案
本章小結
第14章基於HTTP的網路通信
14.1網路結構
14.1.1客戶端伺服器結構網路
14.1.2點對點結構網路
14.2HTTP與HTTPS協定
14.3使用XMLHttpRequest對象開發客戶端
14.3.1使用XMLHttpRequest對象
14.3.2實例: MyNotes
14.4數據交換格式
14.5JSON數據交換格式
14.5.1文檔結構
14.5.2JSON解碼與編碼
14.5.3實例: 完善MyNotes
本章小結
第15章Node.js與WebSocket網路通信
15.1Node.js
15.1.1Node.js安裝
15.1.2Node.js測試
15.2使用WebSocket
15.2.1使用Node.js開發WebSocket伺服器端程式
15.2.2Cocos2dx Lua客戶端
15.3實例: WebSocket重構MyNotes
15.3.1WebSocket伺服器端開發
15.3.2伺服器端Node.js訪問SQLite資料庫
15.3.3Cocos2dx Lua客戶端開發
本章小結
第四篇最佳化篇
第16章性能最佳化
16.1合理使用快取
16.1.1場景與資源
16.1.2快取創建和清除的時機
16.2圖片與紋理最佳化
16.2.1選擇圖片格式
16.2.2拼圖
16.2.3紋理像素格式
16.2.4紋理快取異步載入
16.2.5背景圖片最佳化
16.3聲音最佳化
16.3.1聲音格式最佳化
16.3.2聲音預處理與清除
本章小結
第五篇跨平台移植篇
第17章移植到Android平台
17.1搭建交叉編譯和打包環境
17.1.1Android SDK安裝
17.1.2管理Android SDK
17.1.3管理Android開發模擬器
17.1.4Android NDK安裝
17.2創建Cocos2dx Lua工程
17.3交叉編譯
17.4打包運行
17.5移植問題匯總
17.5.1Lua檔案編譯問題
17.5.2橫屏與豎屏設定問題
本章小結
第18章移植到iOS平台
18.1iOS開發環境搭建
18.1.1Xcode安裝和卸載
18.1.2Xcode操作界面
18.2創建Cocos2dx Lua工程
18.3編譯與發布
18.4移植問題匯總
18.4.1iOS平台聲音移植問題
18.4.2使用PVR紋理格式
18.4.3橫屏與豎屏設定問題
18.5多解析度螢幕適配
18.5.1問題的提出
18.5.2Cocos2dx Lua螢幕適配
18.5.3解析度策略
18.5.4紋理圖集資源適配
18.5.5瓦片地圖資源適配
本章小結
第六篇實戰篇
第19章使用Git管理程式代碼版本
19.1代碼版本管理工具——Git
19.1.1版本控制歷史
19.1.2術語和基本概念
19.1.3Git環境配置
19.1.4Git常用命令
19.2代碼託管服務——GitHub
19.2.1創建和配置GitHub賬號
19.2.2創建代碼庫
19.2.3刪除代碼庫
19.2.4派生代碼庫
19.2.5GitHub協同開發
19.3實例: Cocos2dx Lua遊戲項目協同開發
19.3.1提交到GitHub代碼庫
19.3.2克隆GitHub代碼庫
19.3.3重新獲得GitHub代碼庫
本章小結
第20章Cocos2dx Lua敏捷開發項目實戰——迷失航線手機遊戲
20.1迷失航線遊戲分析與設計
20.1.1迷失航線故事背景
20.1.2需求分析
20.1.3原型設計
20.1.4遊戲腳本
20.2任務1: 遊戲工程的創建與初始化
20.2.1疊代1.1: 創建工程
20.2.2疊代1.2: 添加資源檔案
20.2.3疊代1.3: 添加常量檔案SystemConst.lua
20.2.4疊代1.4: 多解析度支持
20.2.5疊代1.5: 發布到GitHub
20.3任務2: 創建Loading場景
20.3.1疊代2.1: 添加場景和層
20.3.2疊代2.2: Loading動畫
20.3.3疊代2.3: 異步載入紋理快取
20.4任務3: 創建Home場景
20.4.1疊代3.1: 添加場景和層
20.4.2疊代3.2: 添加選單
20.5任務4: 創建設定場景
20.6任務5: 創建幫助場景
20.7任務6: 遊戲場景實現
20.7.1疊代6.1: 創建敵人精靈
20.7.2疊代6.2: 創建玩家飛機精靈
20.7.3疊代6.3: 創建炮彈精靈
20.7.4疊代6.4: 初始化遊戲場景
20.7.5疊代6.5: 遊戲場景選單實現
20.7.6疊代6.6: 玩家飛機發射炮彈
20.7.7疊代6.7: 炮彈與敵人的碰撞檢測
20.7.8疊代6.8: 玩家飛機與敵人的碰撞檢測
20.7.9疊代6.9: 玩家飛機生命值顯示
20.7.10疊代6.10: 顯示玩家得分情況
20.8任務7: 遊戲結束場景
本章小結
第21章為迷失航線遊戲添加廣告
21.1使用谷歌AdMob廣告
21.1.1註冊AdMob帳號
21.1.2管理AdMob廣告
21.1.3AdMob廣告類型
21.1.4下載谷歌AdMob Ads SDK
21.2為迷失航線遊戲Android平台添加AdMob廣告
21.2.1Google Play服務下載與配置
21.2.2導入libcocos2dx類庫工程到Eclipse
21.2.3導入LostRoutes工程到Eclipse
21.2.4編寫AdMob相關代碼
21.2.5交叉編譯、打包和運行
21.3為迷失航線遊戲iOS平台添加AdMob廣告
21.3.1Cocos2dx引擎iOS平台下AdMob開發環境搭建
21.3.2編寫AdMob相關代碼
本章小結
第22章把迷失航線遊戲發布放到Google play套用商店
22.1谷歌Android套用商店Google play
22.2還有“最後一公里”
22.2.1Lua檔案編譯
22.2.2添加圖示
22.2.3應用程式打包
22.3發布產品
22.3.1上傳APK
22.3.2填寫商品詳細信息
22.3.3定價和發布範圍
本章小結
第23章把迷失航線遊戲發布放到蘋果的App Store
23.1蘋果的App Store
23.2iOS設備測試
23.2.1創建開發者證書
23.2.2設備註冊
23.2.3創建App ID
23.2.4創建配置概要檔案
23.2.5設備上運行
23.3還有“最後一公里”
23.3.1添加圖示
23.3.2添加啟動界面
23.3.3修改發布產品屬性
23.3.4為發布進行編譯
23.3.5套用打包
23.4發布產品
23.4.1創建套用及基本信息
23.4.2套用定價信息
23.4.3基本信息輸入
23.4.4上傳套用前的準備
23.4.5上傳套用
23.5常見審核不通過的原因
23.5.1功能問題
23.5.2用戶界面問題
23.5.3商業問題
23.5.4不當內容
23.5.5其他問題
本章小結
作者簡介
關東升,國內知名iOS技術作家,iOS技術顧問,高級培訓講師,移動開發專家。擔任51CTO社區iOS技術顧問,精通iOS、Android和Windows Phone及HTML5等移動開發技術。曾先後主持開發大型網路遊戲《神農訣》的iOS和Android客戶端開發,國家農產品追溯系統的iPad客戶端開發,酒店預訂系統的iOS客戶端開發,金融系統的iOS、Windows Phone 及Android客戶端開發。在App Store上發布數款遊戲和套用軟體,擅長移動平台的套用和遊戲類項目開發。長期為中國移動研究院、雲南移動、東軟、方正科技、大唐電信、中石油、深圳康拓普、上海財富168、天津港務局等企事業單位授課。著有《iOS網路編程與雲端套用最佳實踐》、《iOS感測器套用開發最佳實踐》、《iOS圖形圖像、動畫和多媒體編程技術最佳實踐》、《iOS開發指南——從零基礎到App Store上架》、《互動設計的藝術——iOS 7擬物化到扁平化革命》等iOS專業圖書。