《精通COCOS2D-X游戏开发 进阶卷》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:王永宝编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302461258
  • 页数:543 页
图书介绍:本卷介绍了在Cocos2d-x实际开发中的各种实用技术及可能碰到的各种问题,并提出解决方案。分三篇,实用技术篇介绍了Cocos2d-x开发过程中会碰到的各种技术,如配置文件、加密解密、热更新、物理引擎等。网络篇介绍如何使用Cocos2d-x开发网络游戏,并介绍了弱联网、强联网以及局域网游戏的前后端开发。跨平台篇介绍了Android和iOS下的跨平台开发和调试,并列举了常用SDK的接入方法。

第1篇 实用技术篇 2

第1章 文件读写 2

1.1 使用UserDefault 2

1.2 读写XML文件 4

1.2.1 XML格式简介 4

1.2.2 使用TinyXML读取XML 5

1.2.3 使用TinyXML写入XML 6

1.3 读写Plist文件 7

1.3.1 Plist格式简介 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.1 360加固保加固步骤 27

2.4.2 Android应用签名 28

第3章 增量更新 32

3.1 使用AssetsManagerEx 32

3.2 搭建增量更新服务器 35

3.3 Manifest文件详解 36

3.4 AssetsManagerEx内部实现流程简析 38

3.5 自动打包工具 40

第4章 声音与音效 51

4.1 选择音频格式 51

4.2 使用SimpleAudioEngine 53

4.3 使用AudioEngine 54

4.4 声音音效相关的经验和技巧 56

第5章 分辨率适配 58

5.1 Cocos2d-x适配策略 58

5.1.1 分辨率适配策略 58

5.1.2 坐标编码 60

5.1.3 OpenGL窗口与可视化窗口 61

5.1.4 setDesignResolutionSize详解 62

5.2 分辨率适配经验 63

5.2.1 宽度或高度锁定 63

5.2.2 计算设计分辨率 64

5.2.3 场景固定内容 66

5.2.4 经验小结 67

5.3 CocoStudio分辨率适配 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.2 coredump调试 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.4 Body和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.3 Box2d的调试渲染 130

10.4 在Cocos2d-x中使用Box2d 130

10.4.1 物理世界 131

10.4.2 物理Sprite 133

10.4.3 碰撞处理 136

10.5 Box2d的相关工具 139

10.5.1 PhysicsEditor介绍 139

10.5.2 BoxCAD介绍 142

10.5.3 Physics Body Editor介绍 143

10.5.4 Vertex Helper介绍 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.1 Spine功能简介 151

12.2 Spine结构 152

12.3 使用Spine 154

12.3.1 加载Spine 154

12.3.2 播放动画 155

12.3.3 动画回调 156

12.3.4 显示控制 158

12.4 Spine高级技巧 161

12.4.1 混合动画 161

12.4.2 缓存Spine骨骼动画 162

12.4.3 异步加载Spine骨骼 163

12.4.4 Spine的性能优化 169

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

13.1 2D粒子特效 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.2 2D粒子系统运行流程 179

13.2.1 流程简介 179

13.2.2 粒子的更新和渲染 180

13.3 3D粒子特效 180

13.3.1 组件系统 181

13.3.2 Particle Universe支持的组件 182

13.4 使用Particle Universe粒子系统 184

13.4.1 使用PUParticleSystem3D 184

13.4.2 PUParticleSystem3D相关接口 187

13.5 3D粒子系统源码简析 189

13.5.1 ParticleSystem3D结构 189

13.5.2 初始化流程 190

第14章 裁剪与遮罩 194

14.1 片段测试 194

14.1.1 裁剪测试 195

14.1.2 Alpha测试 195

14.1.3 模板测试 195

14.1.4 深度测试 196

14.2 裁剪 197

14.2.1 使用ClippingRectangleNode 197

14.2.2 ClippingRectangleNode的实现 198

14.3 遮罩 199

14.3.1 ScrollViewDemo示例 199

14.3.2 HoleDemo示例 201

14.3.3 详解HoleDemo示例 203

14.3.4 ClippingNode的实现 204

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

15.1 Shader简介 212

15.2 图形渲染管线 212

15.2.1 顶点处理器 215

15.2.2 片段处理器 215

15.2.3 插值计算 216

15.3 GLSL基础语法 217

15.3.1 数据类型和变量 217

15.3.2 操作符 218

15.3.3 变量修饰符、统一变量和属性变量 219

15.3.4 易变变量 219

15.3.5 语句与函数 220

15.3.6 Shader简单示例 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.1 Cocos2d-x的Shader架构 228

15.5.2 Cocos2d-x内置Shader规则 229

15.5.3 编写Shader 232

15.5.4 使用Shader的步骤 234

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

16.1 Blur模糊效果 236

16.2 OutLine描边效果 238

16.3 RGB、HSV与HSL效果 240

16.4 调整色相 241

16.5 流光效果 243

第2篇 Lua篇 248

第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.3 packages介绍 264

18.3.1 require()方法 264

18.3.2 编写模块 265

18.4 面向对象 266

18.4.1 定义类 266

18.4.2 实例化 267

18.4.3 继承 268

18.5 table库 269

18.5.1 插入 269

18.5.2 排序 269

18.5.3 pack()和unpack()方法 270

18.5.4 table长度 270

第19章 Lua与C的通信 271

19.1 准备工作 271

19.1.1 头文件与链接库 272

19.1.2 lua_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.3 C/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.1 Cocos2d-x原生Lua框架结构 284

20.1.1 Lua核心层 284

20.1.2 Lua脚本引擎 285

20.1.3 Cocos2d-x到Lua的转换层 285

20.1.4 Lua辅助层 285

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

20.2.1 在Cocos2d-x中调用Lua 285

20.2.2 在Lua中操作Cocos2d-x 286

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

20.3.1 LuaEngine初始化流程 289

20.3.2 加载Lua脚本 291

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

20.3.4 Lua辅助层初始化流程 297

20.3.5 Lua辅助层的实用工具 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-x Lua 307

20.5.1 编写扩展方法 307

20.5.2 注册到类中 309

20.6 lua-tests导读 309

第21章 Cocos2d-x Quick框架详解 310

21.1 Quick简介 310

21.2 Quick框架结构 310

21.3 使用Quick 312

21.3.1 创建Quick项目 312

21.3.2 第一个Quick程序 314

21.3.3 开发工具 316

21.4 Quick运行流程分析 319

21.4.1 初始化流程 319

21.4.2 MVC框架运行流程 320

21.5 Quick脚本框架详解 321

21.5.1 Quick脚本框架整体结构 321

21.5.2 Quick框架基础模块 322

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

第22章 Quick框架实践——MVC框架 325

22.1 组件系统详解 325

22.1.1 EventProtocol事件组件 326

22.1.2 StateMachine状态机组件 327

22.2 ModelBase详解 329

22.3 MVC示例详解 330

22.3.1 代码结构简介 331

22.3.2 启动流程详解 331

22.3.3 发射子弹 337

22.3.4 命中目标 338

22.4 小结 340

第3篇 网络篇 344

第23章 网络游戏——网游开发概述 344

23.1 弱联网游戏 344

23.2 强联网游戏 345

23.3 局域网游戏 346

第24章 弱联网游戏——Cocos2d-x客户端实现 347

24.1 客户端请求流程 347

24.2 Libcurl easy接口详解 348

24.2.1 关于请求链接 348

24.2.2 关于Post提交表单 349

24.2.3 关于读写 350

24.3 使用多线程执行请求 351

24.4 使用Libcurl Multi接口进行非阻塞请求 352

24.4.1 Multi接口 352

24.4.2 Multi工作流程 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.1 Socket接口与TCP 369

26.1.1 TCP服务器与客户端交互流程 370

26.1.2 Socket API详解 372

26.1.3 Windows Socket API详解 376

26.2 简单的TCP服务器端与客户端 376

26.2.1 TCP服务器实现 377

26.2.2 TCP客户端实现 379

26.3 非阻塞Socket与select()函数 380

26.3.1 非阻塞Socket 380

26.3.2 select()函数的使用 380

26.3.3 调整TCP服务器为Select模型 382

26.4 半包粘包 384

26.4.1 什么是半包粘包 384

26.4.2 处理半包粘包 385

26.5 心跳与超时 387

26.5.1 TCP的死连接 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.2 kxServer的使用 404

28.3 NetDemoServer服务器 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.2 UDP通信流程 424

30.2.1 sendto()函数 424

30.2.2 recvfrom()函数 425

30.3 UDP广播 425

30.3.1 什么是网络号和主机号 426

30.3.2 A类、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篇 跨平台篇 440

第32章 Android环境搭建 440

32.1 Android环境搭建基础 440

32.1.1 JDK和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 使用Android Studio打包 453

32.3.1 cocos compile命令 453

32.3.2 编译打包Android Studio 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.1 Android基本概念 461

33.1.1 Activity简介 461

33.1.2 Intent简介 463

33.1.3 资源与R.java 463

33.1.4 AndroidManifest.xml简介 463

33.2 Hello JNI项目 463

33.2.1 使用Eclipse创建项目 463

33.2.2 使用Android Studio创建项目 465

33.3 编写JNI的C++代码 467

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

33.3.2 在Android Studio下编写JNI 468

33.3.3 C++的函数原型 471

33.3.4 C++调用Java 472

33.4 Java调用C++ 473

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

33.6 在Cocos2d-x中实现Java和C++的互调 479

33.6.1 Cocos2d-x的JNI初始化 480

33.6.2 在Cocos2d-x中调用Java 480

33.6.3 在Java中调用Cocos2d-x 481

33.7 Android.mk和Application.mk详解 481

33.7.1 认识Android.mk 481

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

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

33.7.4 Android.mk的一些变量和函数 484

33.7.5 关于Application.mk 484

33.8 ABI详解 485

33.8.1 常见的ABI 485

33.8.2 如何选择ABI 485

33.8.3 如何生成对应ABI的so 486

33.9 调试JNI代码 486

33.9.1 Android Studio JNI调试环境搭建 487

33.9.2 Android Studio的断点调试 490

第34章 iOS环境搭建与真机调试 492

34.1 iOS环境搭建 492

34.1.1 环境搭建 492

34.1.2 Windows移植iOS 493

34.2 iOS证书 494

34.2.1 Mac的证书 495

34.2.2 注册开发者 495

34.2.3 如何获得证书 495

34.2.4 创建证书 496

34.2.5 关于证书密钥 498

34.3 iOS真机调试 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.1 Objective-C基础语法 511

35.1.1 Objective-C的一些特性 511

35.1.2 Objective-C的类 512

35.2 Objective-C与C++混编 514

第36章 接入AnySDK 515

36.1 AnySDK概述 515

36.1.1 为什么要接入AnySDK 515

36.1.2 AnySDK架构简介 516

36.1.3 AnySDK快速接入指引 517

36.2 接入AnySDK Android框架 520

36.2.1 导入Android AnySDK Framework 521

36.2.2 初始化AnySDK Framework 522

36.3 接入AnySDK iOS框架 526

36.3.1 导入AnySDK Framework 527

36.3.2 初始化AnySDK Framework 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