本书使用Cocos2d-x引擎(3.9版本)技术,带领读者从零开始逐步进行“拇指接龙”手游(手机游戏)的开发。此游戏基于Windows平台知名扑克牌游戏“空当接龙”开发而成,其中融入了世界闻名童话故事《拇指姑娘》一书的主要情节。读者可以通过学习这个游戏的开发过程,全面掌握Cocos2d-x C++游戏跨平台实战开发的主要方法和技巧。本书遵循理论和实践相结合的编写原则,并尽量按照软件工程指导思想,循序渐进地介绍“拇指接龙”游戏项目的开发过程。通过一款完整的跨平台(Android & iOS)实战型手游的开发学习,读者能够从中领悟Cocos2d-x引擎的神奇魅力,从而更加深入地理解和掌握该引擎。本书共分为3篇,17章。在第1篇中,我们简要介绍进行Cocos2d-x编程所必需的基础知识。在第2篇中,我们正式转入“拇指接龙”游戏的实战开发,在这一部分知识的编写中,我们尽量遵循软件工程开发思路展开介绍,适当穿插Cocos2d-x实战技巧的讲解。在第3篇中,我们转而关注基于Cocos2d-x实战手游跨平台开发、移植和第三方市场SDK嵌入乃至弱联网相关技术的探讨。通过这3篇内容的渐进性学习,力图使读者以*快的速度掌握基于Cocos2d-x引擎进行跨平台手游开发的关键技术。本书适合具有一定C/C++开发经验的着眼于Cocos2d-x引擎的游戏开发初学者、游戏设计人员阅读,也适合作为高等院校和培训学校相关专业师生的教学参考用书。
基础篇
第章Cocos2d-x开发环境搭建
1.1选择Cocos2d-x 3.x的理由
1.2C++ 11主要新特性
1.2.1nullptr
1.2.2auto
1.2.3lambda函数
1.2.4std::function类型
1.2.5C++11多线程std::thread
1.3Windows 7平台开发环境搭建
1.3.1Win32版本开发环境搭建
1.3.2安装Cocos Studio 2.3.3
1.3.3Android版本开发环境搭建
1.4Mac平台开发环境搭建
1.4.1安装Cocos2d-x 3.9开发环境与创建示例工程
1.4.2运行官方示例工程cpp-tests
1.4.3安装Mac版本的Cocos Studio
1.4.4Android开发环境搭建
1.5小结
第章Photoshop与Flash――独立手游开发者的必修课
2.1Photoshop CS 6鼠绘技巧与示例
2.2与手游UI制作密切相关的Photoshop技术
2.2.1GIF帧动画制作
2.2.2由GIF动画文件导出一组PNG图像文件
2.2.3GIF时间轴动画
2.3Flash CS 6鼠绘技巧与示例
2.4与手游UI制作密切相关的Flash技术
2.4.1生成Sprite表单
2.4.2尽量不把舞台元件实例集合导出到精灵表单
2.4.3导出库元件集到精灵表单时的注意事项
2.4.4Flash动画简介
2.4.5Flash+DragonBone联合制作heart_ani动画
2.5小结
第章手游辅助开发利器――TexturePacker和ParticleEditor
3.1图片切片工具TexturePacker
3.1.1为什么要用TexturePacker
3.1.2TexturePacker的基本用法
3.1.3Retina支持――AutoSD
3.1.4TextureSettings面板其他参数说明
3.1.5空当接龙游戏使用的碎图打包技术
3.1.6TexturePacker与XCode集成简介
3.2Windows平台免费开源的粒子编辑器ParticleEditor
3.2.1粒子系统属性讲解
3.2.2官方示例工程cpp-tests中粒子系统使用小结
3.2.3让粒子系统沿着指定轨迹运动
3.2.4SplashScreen场景粒子系统应用回顾
3.3小结
实践篇
第章拇指接龙手游整体策划与设计
4.1拇指接龙游戏创意构思及快照欣赏
4.1.1游戏构思
4.1.2传统拇指接龙游戏算法(玩法)回顾
4.1.3传统空当接龙游戏特点分析
4.1.4目前市场同类游戏简单分析
4.1.5旧瓶装新酿的可能性
4.1.6快照预览
4.2拇指接龙游戏整体数据策划与存储方案
4.2.1数据策划与总体算法分析
4.2.2数据存储方案分析
4.3模块及功能图设计
4.3.1系统总体模块及关系图
4.3.2游戏主场景MainScene流程图
4.4小结
第章Splash场景设计与多分辨率屏幕适配方案
5.1Splash UI设计
5.1.1设计场景图层文件
5.1.2设计场景中的动画文件
5.2后台代码分析
5.2.1SplashScene头文件定义
5.2.2SplashScene实现文件分析
5.3多分辨率适配方案
5.3.1单例类SmartRes头文件定义
5.3.2单例类SmartRes实现代码
5.4小结
第章拇指接龙游戏导航场景设计
6.1使用场景编辑器构建场景FirstScene
6.1.1用Cocos Studio 2.3.3创建帧动画
6.1.2用Cocos Studio 2.3.3创建骨骼动画
6.1.3Cocos Studio 2.3.3导出资源应用于编程
6.2游戏导航场景编码设计
6.2.1游戏导航场景功能分析
6.2.2游戏导航场景编码设计
6.3全局变量及SQLite开发技术分析
6.3.1系统中的全局变量
6.3.2两种本地文件存储方案――UserDefault和SQLite数据库
6.4小结
第章游戏帮助系统设计
7.1FaqScene场景设计
7.1.1FaqScene场景UI设计
7.1.2FaqScene场景编码分析
7.1.3多语言内容显示方案
7.2TutorialScene场景设计
7.2.1概述
7.2.2TutorialScene场景UI设计
7.2.3TutorialScene场景头文件设计
7.2.4TutorialScene场景动画设计
7.2.5TutorialScene场景的双击式移动扑克牌编程
7.2.6TutorialScene场景中拖放式移动扑克牌
7.2.7扑克牌自动飞动的硬编码方式
7.2.8无须扑克牌匹配判定与恢复栈创建
7.3小结
第章拇指接龙游戏关卡及回合设计
8.1大关卡设计的模拟愤怒的小鸟界面
8.1.1大关卡选择场景UI设计
8.1.2图层内置动画与ImageView_Title控件
8.1.3关于艺术数字控件TextAtlas
8.1.4大关卡选择编码的头文件设计
8.1.5大关卡选择编码的实现文件编程
8.2小关卡设计的模拟“RuneMasterPuzzle”界面
8.2.1小关卡选择场景UI设计
8.2.2小关卡选择设计的编码实现
8.3游戏回合选择设计
8.3.1UI设计
8.3.2后台编码
8.4小结
第章创建通用场景切换类
9.1LoadingScene.h定义
9.2LoadingScene成员函数分析
9.3小结
第章拇指接龙游戏道具商店设计
10.1了解游戏道具
10.1.1道具定义
10.1.2游戏道具获取方式
10.1.3游戏道具数据库设计
10.2拇指接龙游戏道具数据策划
10.2.1操作撤销道具――undo
10.2.2列重洗牌道具――fan
10.2.3列移动道具――worm
10.2.4wildcard道具――wand
10.2.5Joker道具――net
10.2.6道具――owl
10.3模拟“进击的小怪物”设计道具商店
10.3.1道具商店主界面设计
10.3.2道具购买场景设计
10.3.3诱导玩家安装应用赚积分场景设计
10.4游戏道具商店编码实现
10.4.1由游戏导航场景切换到道具商店系统
10.4.2道具商店系统StoreScene.h分析
10.4.3道具数值定义
10.4.4加载场景资源文件
10.4.5触发道具购买行为编程
10.4.6进行购买道具活动相关编程
10.4.7积分墙相关编程
10.5小结
第章拇指接龙游戏主场景开发
11.1游戏主场景开发的功能设计
11.1.1道具子系统
11.1.2发牌子系统
11.1.3玩牌子系统
11.1.4奖励子系统
11.2游戏主场景开发的界面设计
11.2.1游戏主场景界面设计
11.2.2主场景工具栏(即游戏场景HUD)设计
11.2.3奖励信息提示图层设计
11.2.4道具使用说明图层设计
11.2.5游戏暂停图层设计
11.2.6游戏继续操作图层设计
11.2.7游戏回合结束小结图层设计
11.3游戏主场景开发的数据结构设计
11.3.1创建扑克牌类――Card
11.3.2定义双击或拖放扑克牌的有关变量
11.3.3定义用于存储扑克牌的数据结构
11.4游戏主场景开发的总体流程设计
11.5Undo道具开发与STL函数
11.5.1Undo道具功能回顾
11.5.2Undo道具有关数据结构与操作
11.5.3使用与定义stackTidying函数
11.5.4使用Undo道具编程
11.6Fan和Worm道具编程
11.6.1Fan道具
11.6.2Worm道具
11.7Wand、Net和Owl道具编程
11.7.1Wand道具
11.7.2Net道具
11.7.3Owl道具
11.8奖励机制编程
11.8.1拇指接龙游戏奖励子系统功能模块
11.8.2奖励定义
11.8.3奖励相关编程分析
11.8.4奖励系统监控与执行
11.9扑克牌拖放与单击事件编程
11.9.1onTouchBegan函数总体执行流程示意图
11.9.2屏幕单击事件编程
11.9.3onTouchMoved函数总体执行流程示意图
11.9.4onTouchEnded函数总体执行流程示意图
11.10游戏进程监控编程
11.10.1游戏系统时间监控
11.10.2奖品监控
11.10.3游戏全程监控机制
11.10.4缺憾
11.11游戏暂停编程
11.11.1功能模块图
11.11.2暂停模块编程
11.12双击式移动扑克牌编程
11.13拖放单张扑克牌编程
11.14拖放多张扑克牌编程
11.14.1onTouchBegan()函数主要功能总结
11.14.2onTouchMoved()函数主要功能总结
11.14.3onTouchEnded函数内系列扑克牌执行流程示意图
11.15小结
高级扩展篇
第章iOS移植的Objective-C编程知识必备
12.1必须了解的Objective-C 2.0编程知识
12.1.1Objective-C语言特性的Block
12.1.2委托和协议
12.1.3Objective-C=编译器+运行时
12.2iOS应用程序文件夹架构
12.2.1文件main.m的作用
12.2.2UIApplicationMain函数
12.2.3应用程序委托
12.2.4视图控制器
12.2.5Info.plist文件
12.2.6图标和默认图像
12.2.7沙盒机制
12.2.8MVC编程规范
12.3iOS应用程序生命周期分析
12.3.1应用程序的状态
12.3.2各个程序运行状态时代理的回调
12.3.3加载应用程序进入前台
12.3.4加载应用程序进入后台
12.3.5基于警告式响应中断
12.3.6进入后台运行
12.3.7返回前台运行
12.3.8程序终止
12.3.9The Main Run Loop主运行循环
12.4iOS应用程序MVC架构
12.4.1MVC框架结构
12.4.2深入理解UIViewController类
12.5Cocos2d-x框架下iOS版本的AppController
12.6Objective-C反射技术回顾
12.6.1获取Class
12.6.2确定继承关系
12.6.3方法的动态调用
12.7C++与Objective-C混合编程
12.7.1Objective-C和C++混编支持
12.7.2结构成员与类成员
12.7.3关于命名空间
12.7.4关于C++模板
12.7.5关于异常处理
12.8EasyNDK的iOS版深入剖析
12.8.1实现原理图展示
12.8.2EasyNDK-for-cocos2dx-master下载Demo应用全面剖析
12.8.3总结EasyNDK的使用套路
12.9参考资料
第章Android移植的Java&NDK编程知识必备
13.1Android应用程序体系架构
13.2Android应用程序基本组件
13.2.1Activity与View
13.2.2Service与Activity
13.2.3Intent类和IntentFilter类
13.2.4Android应用程序生命周期
13.3了解Android应用UI设计
13.3.1丰富的可视化控件
13.3.2关联后台代码与前台UI
13.4Android事件处理机制
13.4.1组件间消息传递――Intent
13.4.2线程间消息传递――Message
13.5EasyNDK的Android版深入剖析
13.5.1实现原理图
13.5.2EasyNDK-for-cocos2dx-master下载Demo应用全面分析
13.5.3Classes文件夹下子文件夹jansson和NDKHelper
13.5.4EasyNDK\\proj.android\\src\\com\\easyndk文件夹下内容解析
13.5.5Classes下文件HelloWorldScene.cpp分析
13.5.6总结EasyNDK的使用套路
13.6小结
第章拇指接龙集成社交分享ShareSDK for iOS
14.1下载ShareSDK iOS版本
14.2下载ShareSDK iOS版本的Cocos2d-x插件
14.3添加必需的依赖库
14.4Cocos2d-x插件部分有关编程
14.4.1选择需要的平台SDK和Cocos2d-x环境
14.4.2修改AppDelegate.cpp文件――初始化
14.5ShareSDK接口的调用
14.6截图欣赏
14.7小结
第章拇指接龙集成社交分享ShareSDK for Android
15.1通用部分集成步骤
15.1.1下载ShareSDK For COCOS2D-X
15.1.2初始化ShareSDK并配置社交平台信息
15.1.3分享内容、用户授权及获取用户资料
15.2Android部分集成步骤
15.3其他说明
15.3.1ShareSDK.xml配置文件说明
15.3.2java层代码解释
15.4效果图展示
15.5小结
第章拇指接龙游戏集成有米积分墙的Android版
16.1积分墙概述
16.1.1计费方式
16.1.2展现方式
16.2有米积分墙的基本配置
16.2.1导入SDK
16.2.2权限配置
16.2.3广告组件配置
16.2.4初始化
16.2.5混淆配置
16.2.6打包
16.2.7设置渠道号(推荐)
16.3集成有米积分墙代码
16.3.1初始化
16.3.2展示全屏积分墙
16.3.3展示悬浮半屏积分墙
16.3.4积分管理接口
16.4积分墙高级功能
16.4.1积分余额变动通知
16.4.2客户端SDK获取订单信息
16.4.3服务器获取订单信息
16.4.4验证积分墙配置是否正确
16.4.5配置积分墙SDK的积分到账提醒
16.5使用EasyNDK简化有米积分墙集成
16.5.1C++端调用Java端
16.5.2Java端调用C++端
16.5.3下载并解压EasyNDK for Cocos2d-x
16.5.4Classes文件夹下的复制
16.5.5proj.android中src文件夹下的复制
16.5.6ThumbelinaCell.java代码修改
16.5.7修改Android.mk文件
16.5.8修改StoreScene.cpp文件
16.6软件截图欣赏
16.6.1提示玩家积分交换
16.6.2积分墙界面
16.7游戏中积分墙相关数据算法
16.7.1集成有米积分墙时的典型问题
16.7.2有米广告过滤列表中显示的数据形式
16.7.3由道具价格推算积分墙显示数据
16.7.4我们的算法推算
16.8小结
第章弱联网手游开发的云存储技术
17.1Firebase(国外)
17.2AppWarp(国外)
17.3野狗(国内)
17.4LeanCloud(国内)
17.4.1数据存储服务
17.4.2消息推送服务
17.4.3实时通信服务
17.4.4iOS/OSX数据存储开发
17.5关于Pomelo和Firefly等
17.6小结