网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 精通Cocos2d-x游戏开发(进阶卷) |
分类 | 科学技术-工业科技-电子通讯 |
作者 | 王永宝编 |
出版社 | 清华大学出版社 |
下载 | ![]() |
简介 | 作者简介 王永宝,自高一起就自学编程,至今10年有余。酷爱游戏开发,熟练掌握C/C++、Lua和C#等编程语言,擅长网络编程、高并发服务端架构设计、客户端框架设计和OpenGL等技术。2010年参加广东省“专业杯”软件设计大赛,在31所院校的86支队伍的激烈竞争中,凭借一个月内使用三门语言开发的塔防游戏而获得了一等奖。同年进入深圳市饭后科技有限公司,担任过C++服务端主程、Unity3D主程和Cocos2d-x主程,并作为技术负责人负责了多款游戏的开发。业余时间潜心研究游戏开发,也开发了多款游戏。 目录 篇 实用技术篇 章 文件读写 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 0章 物理引擎——应用到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 1章 图元渲染 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 2章 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 3章 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 4章 裁剪与遮罩 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 5章 使用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 6章 使用Shader——常用特效 236 16.1 Blur模糊效果 236 16.2 OutLine描边效果 238 16.3 RGB、HSV与HSL效果 240 16.4 调整色相 241 16.5 流光效果 243 第2篇 Lua篇 7章 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 8章 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 9章 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篇 网络篇 第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篇 跨平台篇 第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 内容推荐 本书为《精通Cocos2d-x游戏开发》的《进阶卷》,共36章,分为4篇。第1篇为“实用技术篇”,主要内容有加密解密、增量更新、分辨率适配等实用技术。第2篇为“Lua篇”,主要内容有Lua的基础知识、Lua的table与面向对象等。第3篇为“网络篇”。主要内容有网络基础、select IO复 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。