-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

精通Cocos2d-x游戲開發(進階卷)

( 簡體 字)
作者:王永寶類別:1. -> 程式設計 -> 手機程式 -> Cocos2d
譯者:
出版社:清華大學出版社精通Cocos2d-x游戲開發(進階卷) 3dWoo書號: 46270
詢問書籍請說出此書號!

缺書
NT售價: 500

出版日:3/1/2017
頁數:541
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302461258
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

筆者第一次接觸Cocos2d-x是在2012年初。當時與一位朋友嘗試著制作了一款小游戲,上了App Store平臺。在開發中,筆者主要負責游戲美術,這其實不是筆者的長項,所以該游戲的美術效果可以用慘不忍睹來形容。雖然那時候的引擎版本只是1.x,并且開發的游戲相當失敗,但通過這個游戲,筆者對Cocos2d-x產生了濃厚的興趣。
其實Cocos2d-x算不上是一款功能超強的游戲引擎,但它很簡潔、小巧,是一款輕量級的游戲引擎。大多數程序員實際上更喜歡簡潔的東西,而不是龐然大物。Cocos2d-x簡潔的設計結合豐富的Demo,讓人可以很快上手,并能使用它開發出一些簡單的游戲。其代碼的開源及跨平臺特性也相當誘人。Cocos2d-x本身的這些特性結合市場的需求,使其很快就成為手游開發的主流引擎之一。
在Cocos2d-x剛開始“火”的那一段時間,市面上關于Cocos2d-x的書籍還十分匱乏。筆者利用業余時間對該引擎進行了深入研究,并使用它開發了幾個小游戲,也總結了一些開發經驗。之后一段時間,筆者萌生了按照自己的想法寫一本Cocos2d-x游戲開發圖書的想法。這個想法很快便進入了實施階段,但進展遠沒有想象的順利。其原因一方面是筆者寫作的速度跟不上Cocos2d-x的更新速度,另一方面是筆者的工作任務也很重,加之寫作期間還開發了四五個游戲作品,這使得本來就不充裕的時間更是捉襟見肘。
的確,Cocos2d-x的更新非常頻繁,并且引擎更新的同時帶來了很多接口的變化,一些代碼甚至需要進行重構。除了原有內容的變化改動之外,日益增加的新功能也加大了寫作的難度。雖然2013年底筆者已經完成了初稿,但是回過頭來閱讀一遍,發現書稿難以達到自己的預期。于是筆者做了一個決定:推翻重寫。在經歷了幾個月的重寫之后,Cocos2d-x版本已經升級到了3.0。筆者發現又有許多新增功能和新特性需要重新了解和學習,于是又經歷了一段時間的學習和使用,不得不決定再次對書稿做較大的改動,幾乎又推翻重寫了一次。從開始寫作直至完成書稿,整個過程一言難盡,飽含艱辛。在寫作的過程中,Cocos2d-x的書籍如雨后春筍相繼面市,加上自己工作繁忙,寫作時間有限,一度產生了放棄的念頭。但寫一本自己滿意的Cocos2d-x圖書的信念支撐筆者走到了最后。當然,這一切對筆者而言很有意義,也很有價值:其一是有機會能和讀者共享自己的心得體會;其二是筆者自己也得到了提升。畢竟寫書相對于寫代碼而言需要考慮的東西更多。代碼寫錯還可以改正,而書寫錯則將誤人子弟。
考慮到讀者群體的不同,筆者將本書分為《基礎卷》和《進階卷》兩個分冊。《基礎卷》主要是為了讓讀者夯實Cocos2d-x游戲開發的基礎知識,適合沒有經驗的零基礎讀者閱讀。《進階卷》內容全面,且實用性很強,可以拿來就用,快速解決問題,適合想要進階學習的讀者閱讀,也可以作為一本解決實際問題的手冊使用。當然,對于想要全面而深入學習Cocos2d-x游戲開發的讀者而言,則需要系統閱讀這兩本書。
本書是《精通Cocos2d-x游戲開發》的《進階卷》,是一種實用的Cocos2d-x進階圖書,是在筆者完成《基礎卷》寫作之后,用了一年多的時間編寫的。這一年多筆者工作繁忙,壓力巨大,幾乎很難在晚上10點之前下班,通常晚上一兩點下班是家常便飯。最長的加班記錄是到了第二天早上9點,也就是正常上班的時間。筆者在這種情況下利用大量業余時間寫作完成書稿,實屬不易。在寫作過程中,筆者不斷地將之前已完成的書稿中的一些過時內容及難以令自己滿意的內容推翻重寫,力求完美。
雖然工作繁忙,但筆者在工作中積累的經驗也成為了《進階卷》的寶貴素材。本書介紹了豐富的實用技巧,針對開發過程中需要用到的各種技術及可能碰到的各種問題,做了全面而深入的介紹。無論是需要解決問題的讀者還是需要增長經驗的讀者,都能通過閱讀本書有所收獲。本書對讀者的要求略高,需要讀者熟悉Cocos2d-x,最好能有一定的開發經驗。雖然在編寫時筆者盡量做到了圖文并茂,讓內容更加通俗易懂,但對于初學者而言還是有一定的難度。所以建議初學Cocos2d-x的讀者先閱讀《基礎卷》,以鞏固好基礎,然后再來閱讀《進階卷》,這樣學習效果會更好。如果是有針對性地解決某一問題,讀者可以閱讀相應章節。歡迎讀者在本書的QQ群中對閱讀中的疑問進行交流和討論。相信本書能夠讓每一個基礎扎實的Cocos2d-x程序員成為一個經驗豐富的Cocos2d-x開發高手。
本書內容特色
1.內容新穎,緊跟趨勢
本書內容新穎,緊跟技術趨勢,以當前主流的Cocos2d-x游戲引擎版本3.x為主進行講解,在一些必要的地方也兼顧了早期的2.x版本的內容,并對新舊版本之間的差異做了必要說明,適合更多的讀者群體閱讀。
2.覆蓋面廣,實用性強
本書專注于解決開發過程中碰到的各種問題,介紹各種常用的開發技術,涵蓋了游戲客戶端開發的大部分問題。
3.追求原創,與時俱進
相較于市場上千篇一律的Cocos2d-x學習教程,本書力求做到與眾不同,與時俱進。書中內容的組織不是堆砌知識點和簡單地翻譯技術文檔,而是從學習和理解的角度出發,并結合了筆者的實際開發經驗,使用絕大多數章節都是“干貨滿滿”。
4.風格活潑,講述準確
刻板的風格不是筆者所鐘愛的行文風格。筆者更喜歡用較為簡單和自由的文字和讀 者交流,所以本書閱讀起來并不會枯燥乏味。另外,講解的準確性是對科技圖書的基本 要求,只有準確的表達才能讓讀者不至于出現太多的理解偏差。所以筆者對書中的表述經過了反復斟酌和提煉,并采用了大量例圖、舉例和類比等手法,以便于讀者更容易理解和掌握。
5.舉一反三,擴展思維
本書并不滿足于按部就班地介紹功能和API,而是從實際應用出發,擴散思維,在解決問題的同時,讓讀者思考問題的本質,以更深入地理解所學知識,從而達到舉一反三、學以致用的效果。雖然本書介紹的是Cocos2d-x,但對技術點的介紹并不局限于Cocos2d-x,對于使用其他引擎的開發者,很多知識都是相通的,即所謂知行合一,方能真正掌握 知識。
本書內容及知識體系
第1篇 實用技術篇(第1∼16章)
本篇深入介紹了Cocos2d-x游戲開發的各種實用技術,涵蓋了熱更新、加密解密、骨骼動畫、調試技巧、Shader特效、物理引擎、分辨率適配等實用的技術點。讀者可以根據自己的需求和興趣挑選本篇的章節進行閱讀。
第2篇 Lua篇(第17∼22章)
本篇介紹了在Cocos2d-x中使用Lua開發的技巧,包含了Lua的基礎知識,以及在Cocos2d-x中如何使用Lua,分析了Quick-Cocos2d-x框架和原生Lua框架的區別。
第3篇 網絡篇(第23∼31章)
本篇介紹了如何使用Cocos2d-x開發網絡游戲,包含了網絡基礎知識的講解,以及弱聯網、強聯網、局域網這3種網絡游戲的前后端開發,并提供了一個簡易橫版實時對戰游戲的Demo,相信讀者可以在Demo中更好地了解網絡游戲的開發知識。
第4篇 跨平臺篇(第32∼36章)
跨平臺開發是Cocos2d-x程序員所必須掌握的知識,初次進行跨平臺移植的讀者難免會遇到不少問題,本篇詳細介紹了iOS和Android平臺下的開發和打包,涵蓋了豐富的知識點,如證書簽名、ABI、JNI等技術。打包也不是簡單地羅列操作步驟,對打包過程中遇到的各種問題都會追本溯源。另外本篇還介紹了如何使用AnySDK在iOS和Android下快速接入第三方SDK。
本書閱讀建議
由于Cocos2d-x游戲引擎是基于C++的,所以一些基礎的C++知識是必須知道的。假如讀者完全沒有任何編程方面的經驗,則不適合閱讀本書。
書中部分章節的內容可能較為深入,如果讀者對這部分內容一時難以理解,可以先跳過而閱讀后續章節,等讀完后續章節再回頭閱讀這部分內容,也許就豁然開朗了。如果是為了解決某個問題或者系統學習某個技術點,這種有針對性的閱讀效率會更高。
本書中的部分例子引用自Cocos2d-x引擎自帶的TestCpp,本書的配套資源中也提供了本書的代碼下載方式,讀者在學習的過程中可以參照TestCpp中的例子。
本書讀者對象
? 有一定Cocos2d-x游戲開發經驗的人員;
? Cocos2d-x開發人員;
? 想系統學習Cocos2d-x的程序員;
? 想豐富Cocos2d-x開發經驗的程序員;
? 想開發跨平臺手機游戲的人員;
? 從其他開發轉向Cocos2d-x的程序員;
? 大中專院校的學生和社會培訓的學員。

編著者
內容簡介:

《精通Cocos2d-x游戲開發》分為《基礎卷》和《進階卷》兩冊。這兩冊都有明確的寫作目的。《基礎卷》專注于Cocos2d-x引擎基礎,致力于讓Cocos2d-x初學者成為一個基礎扎實、靠譜的程序員。《進階卷》專注于各種實用技術,是作者多年開發經驗的結晶,書中的技術點大多是從實際工作中碰到的問題提煉而來的,從問題的本質出發到解決問題的思路,提供了多種解決方案,并對比各方案的優缺點,啟發讀者思考。
本書為《精通Cocos2d-x游戲開發》的《進階卷》,共36章,分為4篇。第1篇為“實用技術篇”,主要內容有加密解密、增量更新、分辨率適配、調試技巧、Shader特效、裁剪遮罩、物理引擎、骨骼動畫、CocoStudio最佳實踐等實用技術。第2篇為“Lua篇”,主要內容有Lua的基礎知識、Lua的table與面向對象、C/C++與Lua的通信、Cocos2d-x原生Lua框架與Quick-Cocos2d-x Lua框架等。第3篇為“網絡篇”,主要內容有網絡基礎、select IO復用、Socket和Libcurl等基礎知識,以及弱聯網、強聯網、局域網等網絡游戲的客戶端和服務端開發。第4篇為“跨平臺篇”,主要內容有Android和iOS平臺的開發和打包知識,以及如何使用AnySDK快速接入第三方SDK。
本書適合使用Cocos2d-x進行游戲開發的中高級讀者閱讀,尤其適合在使用Cocos2d-x開發過程中碰到問題的程序員,以及希望學習一些實用技術,從而豐富自身經驗的程序員。對于大中專院校的學生和社會培訓班的學員,本書也是一本不可多得的學習教程。
目錄:

第1篇實用技術篇

第1章文件讀寫 2

1.1使用UserDefault 2

1.2讀寫XML文件 4

1.2.1XML格式簡介 4

1.2.2使用TinyXML讀取XML 5

1.2.3使用TinyXML寫入XML 6

1.3讀寫Plist文件 7

1.3.1Plist格式簡介 7

1.3.2讀寫Plist文件 8

1.4讀取CSV文件 9

1.4.1解析CSV 10

1.4.2描述復雜結構 11

1.5讀寫二進制文件 11

第2章加密解密 15

2.1加密解密基礎 15

2.1.1公鑰/私鑰與非對稱加密 15

2.1.2信息摘要與數字簽名 16

2.1.3數字證書 17

2.2防止內存修改 17

2.3對資源的加密解密 18

2.3.1使用TexturePacker加密紋理 18

2.3.2對Lua腳本進行加密 19

2.3.3自定義Lua腳本加密解密 22

2.3.4自定義圖片加密解密 24

2.4使用加固工具 27

2.4.1360加固保加固步驟 27

2.4.2Android應用簽名 28

第3章增量更新 32

3.1使用AssetsManagerEx 32

3.2搭建增量更新服務器 35

3.3Manifest文件詳解 36

3.4AssetsManagerEx內部實現流程簡析 38

3.5自動打包工具 40

第4章聲音與音效 51

4.1選擇音頻格式 51

4.2使用SimpleAudioEngine 53

4.3使用AudioEngine 54

4.4聲音音效相關的經驗和技巧 56

第5章分辨率適配 58

5.1Cocos2d-x適配策略 58

5.1.1分辨率適配策略 58

5.1.2坐標編碼 60

5.1.3OpenGL窗口與可視化窗口 61

5.1.4setDesignResolutionSize詳解 62

5.2分辨率適配經驗 63

5.2.1寬度或高度鎖定 63

5.2.2計算設計分辨率 64

5.2.3場景固定內容 66

5.2.4經驗小結 67

5.3CocoStudio分辨率適配 67

第6章CocoStudio最佳實踐 68

6.1高效創建CSB 68

6.1.1簡單方案 68

6.1.2緩存方案 69

6.1.3克隆方案 70

6.2異步加載CSB 74

6.3高效播放CSB動畫 77

第7章調試Cocos2d-x 78

7.1控制臺調試 78

7.2使用KxDebuger調試Cocos2d-x 81

第8章調試技巧總結 84

8.1初級調試技巧 84

8.1.1基礎操作 84

8.1.2啟動調試 86

8.1.3條件斷點 86

8.1.4監視技巧 88

8.2高級調試技巧 90

8.2.1遠程調試 90

8.2.2coredump調試 92

8.2.3使用Bugly捕獲崩潰堆棧 92

8.2.4命中斷點 93

8.2.5數據斷點 96

8.2.6即時窗口 97

8.2.7多線程調試 97

8.2.8性能調試 97

8.3記一次內存泄漏調試 100

8.3.1內存泄漏表象 100

8.3.2初步分析 101

8.3.3排查問題 101

8.3.4修改代碼定位泄漏點 102

8.3.5開始調試 103

第9章物理引擎——Box2d基礎 107

9.1核心概念 107

9.2工作流程 108

9.3物理世界World 110

9.4Body和Shape 111

9.4.1剛體的碰撞 111

9.4.2創建剛體 112

9.5關節Joint 114

9.5.1使用關節 114

9.5.2旋轉關節RevoluteJoint 115

9.5.3平移關節PrismaticJoint 117

9.5.4距離關節DistanceJoint 118

9.5.5滑輪關節PulleyJoint 118

9.5.6鼠標關節MouseJoint 119

9.5.7齒輪關節GearJoint 120

9.5.8滾輪關節WheelJoint 122

9.5.9焊接關節WeldJoint 123

9.5.10摩擦關節FrictionJoint 124

9.5.11繩索關節RopeJoint 125

第10章物理引擎——應用到Cocos2d-x 126

10.1物體的運動 126

10.1.1施加力和沖量 126

10.1.2角力矩和角沖量 127

10.2碰撞檢測 127

10.2.1碰撞監聽 127

10.2.2碰撞過濾 129

10.3Box2d的調試渲染 130

10.4在Cocos2d-x中使用Box2d 130

10.4.1物理世界 131

10.4.2物理Sprite 133

10.4.3碰撞處理 136

10.5Box2d的相關工具 139

10.5.1PhysicsEditor介紹 139

10.5.2BoxCAD介紹 142

10.5.3PhysicsBodyEditor介紹 143

10.5.4VertexHelper介紹 144

第11章圖元渲染 145

11.1使用DrawingPrimitives接口繪制圖元 145

11.1.1如何繪制圖元 145

11.1.2半透明效果 146

11.1.3抗鋸齒 147

11.2使用DrawNode繪制圖元 147

11.3渲染接口詳解 147

11.3.1繪制點 148

11.3.2繪制線段、矩形、多邊形與圓形 148

11.3.3繪制貝塞爾曲線 148

11.3.4繪制CardinalSpline 149

11.3.5繪制凱特摩曲線 149

11.3.6繪制實心圖元 149

11.4小結 150

第12章Spine骨骼動畫 151

12.1Spine功能簡介 151

12.2Spine結構 152

12.3使用Spine 154

12.3.1加載Spine 154

12.3.2播放動畫 155

12.3.3動畫回調 156

12.3.4顯示控制 158

12.4Spine高級技巧 161

12.4.1混合動畫 161

12.4.2緩存Spine骨骼動畫 162

12.4.3異步加載Spine骨骼 163

12.4.4Spine的性能優化 169

第13章2D、3D粒子特效 172

13.12D粒子特效 172

13.1.1粒子系統簡介 172

13.1.2手動創建粒子系統 173

13.1.3使用Cocos2d-x內置的粒子系統 175

13.1.4使用Plist文件加載粒子系統 175

13.1.5操作粒子系統 176

13.22D粒子系統運行流程 179

13.2.1流程簡介 179

13.2.2粒子的更新和渲染 180

13.33D粒子特效 180

13.3.1組件系統 181

13.3.2ParticleUniverse支持的組件 182

13.4使用ParticleUniverse粒子系統 184

13.4.1使用PUParticleSystem3D 184

13.4.2PUParticleSystem3D相關接口 187

13.53D粒子系統源碼簡析 189

13.5.1ParticleSystem3D結構 189

13.5.2初始化流程 190

第14章裁剪與遮罩 194

14.1片段測試 194

14.1.1裁剪測試 195

14.1.2Alpha測試 195

14.1.3模板測試 195

14.1.4深度測試 196

14.2裁剪 197

14.2.1使用ClippingRectangleNode 197

14.2.2ClippingRectangleNode的實現 198

14.3遮罩 199

14.3.1ScrollViewDemo示例 199

14.3.2HoleDemo示例 201

14.3.3詳解HoleDemo示例 203

14.3.4ClippingNode的實現 204

第15章使用Shader——GLSL基礎 212

15.1Shader簡介 212

15.2圖形渲染管線 212

15.2.1頂點處理器 215

15.2.2片段處理器 215

15.2.3插值計算 216

15.3GLSL基礎語法 217

15.3.1數據類型和變量 217

15.3.2操作符 218

15.3.3變量修飾符、統一變量和屬性變量 219

15.3.4易變變量 219

15.3.5語句與函數 220

15.3.6Shader簡單示例 220

15.4在OpenGL中使用Shader 221

15.4.1在OpenGL中創建Shader 221

15.4.2屬性變量 224

15.4.3統一變量 226

15.4.4錯誤處理 227

15.4.5清理工作 228

15.5在Cocos2d-x中使用Shader 228

15.5.1Cocos2d-x的Shader架構 228

15.5.2Cocos2d-x內置Shader規則 229

15.5.3編寫Shader 232

15.5.4使用Shader的步驟 234

第16章使用Shader——常用特效 236

16.1Blur模糊效果 236

16.2OutLine描邊效果 238

16.3RGB、HSV與HSL效果 240

16.4調整色相 241

16.5流光效果 243

第2篇Lua篇

第17章Lua基礎概述 248

17.1類型與值 248

17.2操作符 249

17.2.1算術操作符 249

17.2.2關系操作符 249

17.2.3邏輯操作符 250

17.2.4其他操作符 250

17.3語句 250

17.3.1賦值語句 250

17.3.2語句塊 251

17.3.3條件語句 251

17.3.4循環語句 251

17.4函數 252

17.4.1定義函數 252

17.4.2調用函數 252

17.4.3函數參數 253

17.4.4尾調用 253

17.5閉包與泛型for 254

17.5.1閉包 254

17.5.2泛型for 255

第18章Lua——table 257

18.1使用table 257

18.1.1創建table 257

18.1.2訪問table 258

18.1.3修改table 258

18.1.4刪除table 258

18.1.5遍歷table 259

18.2元表metatable 259

18.2.1元方法 260

18.2.2算術、關系與連接元方法 260

18.2.3特殊的元方法 261

18.2.4__index元方法 262

18.2.5__newindex元方法 262

18.2.6__mode元方法 263

18.3packages介紹 264

18.3.1require()方法 264

18.3.2編寫模塊 265

18.4面向對象 266

18.4.1定義類 266

18.4.2實例化 267

18.4.3繼承 268

18.5table庫 269

18.5.1插入 269

18.5.2排序 269

18.5.3pack()和unpack()方法 270

18.5.4table長度 270

第19章Lua與C的通信 271

19.1準備工作 271

19.1.1頭文件與鏈接庫 272

19.1.2lua_State指針 272

19.1.3堆棧 273

19.1.4壓入堆棧 273

19.1.5訪問堆棧 274

19.1.6堆棧的其他操作 275

19.2操作table 275

19.2.1如何將table傳入Lua 275

19.2.2如何獲取Lua返回的table 276

19.3C/C++中調用Lua 277

19.3.1執行Lua片段 277

19.3.2執行Lua腳本文件 278

19.3.3調用Lua函數 279

19.4注冊C/C++函數給Lua調用 279

19.5將C++的類傳給Lua 281

第20章Cocos2d-x原生Lua框架詳解 284

20.1Cocos2d-x原生Lua框架結構 284

20.1.1Lua核心層 284

20.1.2Lua腳本引擎 285

20.1.3Cocos2d-x到Lua的轉換層 285

20.1.4Lua輔助層 285

20.2使用Cocos2d-x原生Lua框架 285

20.2.1在Cocos2d-x中調用Lua 285

20.2.2在Lua中操作Cocos2d-x 286

20.3Cocos2d-x原生Lua框架運行流程 289

20.3.1LuaEngine初始化流程 289

20.3.2加載Lua腳本 291

20.3.3Cocos2d-x到Lua的事件分發 293

20.3.4Lua輔助層初始化流程 297

20.3.5Lua輔助層的實用工具 298

20.4使用genbindings.py導出自定義類 302

20.4.1各個平臺的環境搭建 303

20.4.2編寫要導出的C++的類 304

20.4.3編寫ini配置文件 304

20.4.4修改并執行genbindings.py 305

20.4.5注冊并在Lua中使用 306

20.5擴展Cocos2d-xLua 307

20.5.1編寫擴展方法 307

20.5.2注冊到類中 309

20.6lua-tests導讀 309

第21章Cocos2d-xQuick框架詳解 310

21.1Quick簡介 310

21.2Quick框架結構 310

21.3使用Quick 312

21.3.1創建Quick項目 312

21.3.2第一個Quick程序 314

21.3.3開發工具 316

21.4Quick運行流程分析 319

21.4.1初始化流程 319

21.4.2MVC框架運行流程 320

21.5Quick腳本框架詳解 321

21.5.1Quick腳本框架整體結構 321

21.5.2Quick框架基礎模塊 322

21.5.3Quick腳本框架初始化流程 323

第22章Quick框架實踐——MVC框架 325

22.1組件系統詳解 325

22.1.1EventProtocol事件組件 326

22.1.2StateMachine狀態機組件 327

22.2ModelBase詳解 329

22.3MVC示例詳解 330

22.3.1代碼結構簡介 331

22.3.2啟動流程詳解 331

22.3.3發射子彈 337

22.3.4命中目標 338

22.4小結 340

第3篇網絡篇

第23章網絡游戲——網游開發概述 344

23.1弱聯網游戲 344

23.2強聯網游戲 345

23.3局域網游戲 346

第24章弱聯網游戲——Cocos2d-x客戶端實現 347

24.1客戶端請求流程 347

24.2Libcurleasy接口詳解 348

24.2.1關于請求鏈接 348

24.2.2關于Post提交表單 349

24.2.3關于讀寫 350

24.3使用多線程執行請求 351

24.4使用LibcurlMulti接口進行非阻塞請求 352

24.4.1Multi接口 352

24.4.2Multi工作流程 353

24.5使用非阻塞的Libcurl實現簽到功能 357

24.5.1初始化界面 358

24.5.2發起請求 358

24.5.3處理結果 359

24.5.4解析結果 360

第25章弱聯網游戲——PHP服務器實現 362

25.1環境搭建 362

25.1.1安裝PHP 362

25.1.2安裝Nginx 363

25.1.3安裝MySQL 363

25.1.4啟動服務 364

25.2編寫PHP 365

25.2.1基本語法 365

25.2.2表單處理 366

25.2.3操作MySQL 366

25.3實現簽到服務 366

第26章強聯網游戲——TCP和Socket 369

26.1Socket接口與TCP 369

26.1.1TCP服務器與客戶端交互流程 370

26.1.2SocketAPI詳解 372

26.1.3WindowsSocketAPI詳解 376

26.2簡單的TCP服務器端與客戶端 376

26.2.1TCP服務器實現 377

26.2.2TCP客戶端實現 379

26.3非阻塞Socket與select()函數 380

26.3.1非阻塞Socket 380

26.3.2select()函數的使用 380

26.3.3調整TCP服務器為Select模型 382

26.4半包粘包 384

26.4.1什么是半包粘包 384

26.4.2處理半包粘包 385

26.5心跳與超時 387

26.5.1TCP的死連接 388

26.5.2檢測死連接 389

第27章強聯網游戲——單機版動作游戲 390

27.1需求分析與類設計 390

27.2創建工程和場景 393

27.3添加實體 396

27.4實體顯示組件 399

27.5消息定義 400

27.6添加SingleProxy 401

27.7游戲的主邏輯 402

第28章強聯網游戲——C++服務器實現 404

28.1服務端需求分析 404

28.2kxServer的使用 404

28.3NetDemoServer服務器 405

28.4接收客戶端請求 409

28.5移植前端代碼 412

28.6梳理流程和總結 412

第29章網絡游戲——前后端網絡同步 414

29.1整理入口場景 414

29.2連接服務器 416

29.3添加OnlineProxy 416

29.4打包與恢復場景 418

29.5實時同步 419

第30章局域網游戲——使用UDP 423

30.1使用UDP 423

30.2UDP通信流程 424

30.2.1sendto()函數 424

30.2.2recvfrom()函數 425

30.3UDP廣播 425

30.3.1什么是網絡號和主機號 426

30.3.2A類、B類、C類地址與廣播地址 426

30.3.3什么是子網和子網掩碼 426

30.3.4本地網絡的定義是什么 427

30.3.5發送廣播 427

30.4簡單的UDP服務器 428

30.5簡單的UDP客戶端 429

第31章局域網游戲——建立、搜索、加入房間 430

31.1建立房間 430

31.2移植后端代碼 432

31.3搜索房間 434

第4篇跨平臺篇

第32章Android環境搭建 440

32.1Android環境搭建基礎 440

32.1.1JDK和JRE 440

32.1.2關于ADK 442

32.1.3關于NDK 443

32.2使用Eclipse打包 443

32.2.1打開Android項目 443

32.2.2解決Java報錯 444

32.2.3設置NDK 448

32.2.4解決打包報錯 450

32.2.5解決運行報錯 451

32.3使用AndroidStudio打包 453

32.3.1cocoscompile命令 453

32.3.2編譯打包AndroidStudio 454

32.3.3打包遇到的問題 455

32.4新建Android項目 456

32.5實用技巧 458

32.5.1關于版本問題 458

32.5.2關于減少包體積 459

第33章使用JNI實現C++與Java互調 461

33.1Android基本概念 461

33.1.1Activity簡介 461

33.1.2Intent簡介 463

33.1.3資源與R.java 463

33.1.4AndroidManifest.xml簡介 463

33.2HelloJNI項目 463

33.2.1使用Eclipse創建項目 463

33.2.2使用AndroidStudio創建項目 465

33.3編寫JNI的C++代碼 467

33.3.1為Eclipse添加Android.mk和hello.c 467

33.3.2在AndroidStudio下編寫JNI 468

33.3.3C++的函數原型 471

33.3.4C++調用Java 472

33.4Java調用C++ 473

33.5在C++程序中使用Java 474

33.6在Cocos2d-x中實現Java和C++的互調 479

33.6.1Cocos2d-x的JNI初始化 480

33.6.2在Cocos2d-x中調用Java 480

33.6.3在Java中調用Cocos2d-x 481

33.7Android.mk和Application.mk詳解 481

33.7.1認識Android.mk 481

33.7.2用Android.mk添加源文件以及指定頭文件目錄 482

33.7.3在Android.mk中引用其他模塊(第三方庫) 482

33.7.4Android.mk的一些變量和函數 484

33.7.5關于Application.mk 484

33.8ABI詳解 485

33.8.1常見的ABI 485

33.8.2如何選擇ABI 485

33.8.3如何生成對應ABI的so 486

33.9調試JNI代碼 486

33.9.1AndroidStudioJNI調試環境搭建 487

33.9.2AndroidStudio的斷點調試 490

第34章iOS環境搭建與真機調試 492

34.1iOS環境搭建 492

34.1.1環境搭建 492

34.1.2Windows移植iOS 493

34.2iOS證書 494

34.2.1Mac的證書 495

34.2.2注冊開發者 495

34.2.3如何獲得證書 495

34.2.4創建證書 496

34.2.5關于證書密鑰 498

34.3iOS真機調試 500

34.3.1無證書調試 500

34.3.2使用證書調試 502

34.4打包IPA 505

34.4.1正確設置簽名證書與授權文件 505

34.4.2使用Xcode打包 506

34.4.3其他打包方式 509

第35章Objective-C與C++互調 511

35.1Objective-C基礎語法 511

35.1.1Objective-C的一些特性 511

35.1.2Objective-C的類 512

35.2Objective-C與C++混編 514

第36章接入AnySDK 515

36.1AnySDK概述 515

36.1.1為什么要接入AnySDK 515

36.1.2AnySDK架構簡介 516

36.1.3AnySDK快速接入指引 517

36.2接入AnySDKAndroid框架 520

36.2.1導入AndroidAnySDKFramework 521

36.2.2初始化AnySDKFramework 522

36.3接入AnySDKiOS框架 526

36.3.1導入AnySDKFramework 527

36.3.2初始化AnySDKFramework 530

36.4登錄流程 531

36.4.1登錄流程簡介 531

36.4.2客戶端接入登錄 532

36.4.3服務端接入登錄 534

36.5支付流程 536

36.5.1支付流程 536

36.5.2客戶端接入支付 537

36.5.3服務端接入支付 539

36.6母包聯調 540

36.6.1調試登錄 540

36.6.2調試支付 541

36.7打包工具 542

36.8小結 543

序: