编辑推荐
涵盖了大部分使用Cocos2d-x进行游戏开发时所需的流行技术,如粒子系统、关卡设计、计算几何、2D及3D物理引擎、模型加载、骨骼动画、网络对战、VR虚拟现实等
书中9个综合案例,既包括单机版的游戏项目案例,也有网络对战游戏的项目案例;既包括2D画面呈现的游戏案例,也包括3D画面呈现的游戏案例,以及流行的VR游戏案例
本书附赠的学习资源中包含了书中所有案例的完整源代码,大部分案例都提供了Android的项目版本以及iOS的项目版本,方便读者根据自己的需要选用。
内容简介
本书结合作者多年从事游戏应用开发的经验,详细介绍了几款Cocos2d-x游戏案例的开发。在介绍案例开发的过程中也介绍了一些常用技术的使用、开发技巧以及思路等。书中主要内容包括:靠前章“初识Cocos2d-x”介绍使用Cocos2d-x游戏引擎开发3D游戏的一些基础知识、环境的配置以及案例的导入和运行;第2章“忍者飞镖”是很好简单的休闲小游戏,通过此案例读者可以学到很多Cocos2d-x游戏开发的基础知识;第3章“切冰块”是休闲类小游戏,通过此案例介绍了Box2D物理引擎,为下面讲解Bullet引擎打下基础;第4章探寻当前市面上的火爆游戏“鳄鱼吃饼干”的开发过程,并讲解了如何实现该游戏的开发;第5章“方块历险记”,通过此案例读者可以学到3D游戏开发;第6章“峡谷卡丁车”,使得读者对竞速类3D游戏的开发有一个整体的认识;第7章“森林跑酷”,本游戏是当下十分流行的体育游戏;第8章“雷鸣战机”,通过此案例读者能够学习到2D与3D结合的游戏的开发过程;第9章“天下棋弈”,通过此案例读者能够学习网络对战游戏的开发;靠前0章“极速飞行”,通过此案例读者能够学习到当下火爆的VR游戏是如何开发的,进一步学习VR游戏的开发流程。本书适合有一定基础、有志于游戏开发的读者学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
作者简介
吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGL ES、WebGL、Vulkan及手机游戏。同时为手机游戏、移动3D应用独立软件开发工程师,并兼任百纳科技Java培训中心首xi培训师。近十年来为数十家企业培养了上千名软件开发人员,曾编写过《Cocos2d-X案例开发大全》《Cocos2d-X 3.0游戏开发实战详解》《Cocos2d-X 3.x 游戏案例开发大全》《OpenGL ES 3.x游戏开发(上下卷)》《H5和WebGL 3D开发实战详解》等多本畅销技术书籍。2008年初开始关注Android平台下的3D应用开发,并开发出一系列的Android应用程序与3D游戏。
目录
- 第1章 初识Cocos2d-x1
- 1.1Cocos2d-x的概述1
- 1.1.1Cocos2d-x的发展史1
- 1.1.2Cocos2d-x的市场前景2
- 1.2Cocos2d-x开发环境的搭建3
- 1.2.1Android Studio以及Android SDK的下载与配置3
- 1.2.2Android NDK的下载与配置5
- 1.2.3Cocos2d-x的下载与配置6
- 1.3初识Cocos2d-x应用程序7
- 1.3.1本书案例的导入与运行7
- 1.3.2Cocos2d-x案例导入后的相关修改9
- 1.4本章小结9
- 第2章 休闲益智类游戏——忍者飞镖10
- 2.1游戏的背景及功能概述10
- 2.1.1背景描述10
- 2.1.2功能介绍10
- 2.2游戏的策划及准备工作12
- 2.2.1游戏的策划12
- 2.2.2手机平台下游戏的准备工作13
- 2.3游戏的架构15
- 2.3.1各个类的简要介绍15
- 2.3.2游戏框架简介16
- 2.4布景相关类17
- 2.4.1场景管理类GameSceneManager18
- 2.4.2欢迎布景类MainLayer19
- 2.4.3游戏帮助布景类HelpLayer22
- 2.4.4游戏记录成绩布景类RankLayer25
- 2.4.5游戏关于布景类AboutLayer26
- 2.4.6游戏选择系列布景类SelectLayer28
- 2.4.7游戏背景类BackGroundPopupWindow41
- 2.4.8游戏暂停对话框类PausePopupWindow44
- 2.4.9开始游戏对话框类GameStartPopupWindow46
- 2.4.10游戏结束对话框类GameOverPopupWindow47
- 2.4.11退出游戏对话框类ExitPopupWindow51
- 2.5物理引擎相关类53
- 2.5.1基本物体类53
- 2.5.2碰撞检测类57
- 2.5.3射线投射类59
- 2.6引擎引用入口类——AppDelegate60
- 2.7本章小结61
- 第3章休闲类游戏——切冰块62
- 3.1游戏的背景及功能概述62
- 3.1.1背景描述62
- 3.1.2功能介绍63
- 3.2游戏的策划及准备工作65
- 3.2.1游戏的策划65
- 3.2.2手机平台下游戏的准备工作66
- 3.3游戏的架构68
- 3.3.1各个类的简要介绍68
- 3.3.2游戏框架简介69
- 3.4布景类相关70
- 3.4.1场景管理类GameSceneManager71
- 3.4.2欢迎布景类WelcomeLayer72
- 3.4.3游戏选择系列布景类SetLayer78
- 3.4.4选择系列1关卡布景类set1ChoiceLayer81
- 3.4.5游戏布景类GameLayer87
- 3.4.6游戏胜利或失败布景类SuccLayer99
- 3.5辅助工具类相关104
- 3.5.1工具类105
- 3.5.2辅助类105
- 3.6物理引擎工具类相关113
- 3.6.1自身的光线投射回调类RayCastClosestCallback113
- 3.6.2矩形物体类RectPhyObject114
- 3.6.3多边形物体类PolygonPhyObject115
- 3.7引擎引用入口类——AppDelegate116
- 3.8游戏的优化及改进117
- 3.9本章小结117
- 第4章休闲益智类游戏——鳄鱼吃饼干118
- 4.1游戏的背景及功能概述118
- 4.1.1背景概述118
- 4.1.2功能介绍119
- 4.2游戏的策划及准备工作121
- 4.2.1游戏的策划121
- 4.2.2手机平台下游戏的准备工作122
- 4.3游戏的架构125
- 4.3.1各个类的简要介绍125
- 4.3.2游戏的框架简介126
- 4.4游戏常量头文件AppMacros127
- 4.5游戏辅助类128
- 4.5.1焊接关节类——WeldJoint128
- 4.5.2鼠标关节类——MouseJoint129
- 4.5.3气泡道具类——AirBubble130
- 4.5.4气球道具类——AirBullon133
- 4.5.5弹簧道具类——Bouncer134
- 4.5.6拖拉棒道具类——DragRod136
- 4.5.7电击道具类——Electric140
- 4.5.8帽子道具类——Hat142
- 4.5.9蜘蛛道具类——Spider144
- 4.5.10钉子道具类——Nail147
- 4.5.11尖刺道具类——Spike148
- 4.5.12碰撞监听器类——MyContactListener150
- 4.6场景相关类152
- 4.6.1游戏场景管理类——Box2DSceneManager152
- 4.6.2加载布景类——LoadLayer153
- 4.6.3开始布景类——StartLayer155
- 4.6.4设置布景类——OptionLayer158
- 4.6.5选主题布景类——ChooseHouseLayer161
- 4.6.6选关布景类——ChooseLevelLayer164
- 4.6.7游戏布景类——Box2DLayer167
- 4.7引擎引用入口类——AppDelegate172
- 4.8游戏的优化及改进173
- 4.9本章小结173
- 第5章3D休闲游戏——方块历险记174
- 5.1游戏背景及功能概述174
- 5.1.1游戏开发背景概述174
- 5.1.2游戏功能简介175
- 5.2游戏的策划及准备工作176
- 5.2.1游戏的策划176
- 5.2.2游戏的开发准备工作177
- 5.3游戏的架构178
- 5.3.1各类的简要介绍178
- 5.3.2游戏框架简介179
- 5.4布景相关类180
- 5.4.1总场景管理类——ObjSceneManager180
- 5.4.23D布景类——My3DLayer181
- 5.4.3菜单布景类——My2DLayer186
- 5.4.4摄像机管理类——CameraChange188
- 5.5机关与方块相关类189
- 5.5.1方块管理类——ZFTManager190
- 5.5.2地刺机关管理类——DiCiBox192
- 5.5.3掉落块机关管理类——DiaoLuoManager193
- 5.5.4夹子机关管理类——JiaZiBox194
- 5.5.5移动机关管理类——YiDongBox196
- 5.5.6烟雾管理类——YanWu198
- 5.6常量及其他相关类200
- 5.6.1常量类——Constant200
- 5.6.2引擎应用入口类——AppDelegate202
- 5.7游戏的优化及改进203
- 5.8本章小结203
- 第6章竞速类游戏——峡谷卡丁车204
- 6.1游戏的背景及功能概述204
- 6.1.1游戏开发的背景概述204
- 6.1.2游戏的功能介绍204
- 6.2游戏的策划及准备工作206
- 6.2.1游戏的策划207
- 6.2.2游戏的准备工作207
- 6.3游戏的架构210
- 6.3.1游戏中各类的简要介绍210
- 6.3.2游戏的框架简介211
- 6.4游戏常量头文件——APPMacros212
- 6.5场景相关类213
- 6.5.1游戏场景管理类——SceneManager213
- 6.5.2加载布景类——BeginLayer215
- 6.5.3主界面布景类——SelectLayer216
- 6.5.4音效布景类——SettingLayer219
- 6.5.52D布景类——Game2DLayer220
- 6.5.63D布景类——Game3DLayer223
- 6.5.7物理世界类——GamePhysicsWorld226
- 6.6辅助类228
- 6.6.1奖励特效类——AwardBox228
- 6.6.2子弹类——Bullet229
- 6.6.3导弹类——Rocket231
- 6.6.4底盘类——Disc232
- 6.6.5卡丁车类——Kart235
- 6.7引擎引用入口类——AppDelegate246
- 6.8引擎的修改247
- 6.9游戏的优化及改进248
- 6.10本章小结248
- 第7章休闲体育类游戏——森林跑酷249
- 7.1游戏的背景及功能概述249
- 7.1.1背景描述249
- 7.1.2功能介绍249
- 7.2游戏的策划及准备工作253
- 7.2.1游戏的策划253
- 7.2.2手机平台下游戏的准备工作253
- 7.3游戏的架构257
- 7.3.1各个类的简要介绍257
- 7.3.2游戏框架简介258
- 7.4布景相关类259
- 7.4.1场景管理类GameSceneManager259
- 7.4.2游戏加载布景类LoadingLayer261
- 7.4.3游戏主菜单布景类MainMenuLayer264
- 7.4.4选择游戏角色布景类SelectRoleLayer272
- 7.4.52D游戏布景类My2DLayer275
- 7.4.63D游戏布景类My3DLayer281
- 7.4.7游戏得分布景类ScoreLayer298
- 7.5辅助工具类相关301
- 7.5.1工具类301
- 7.5.2辅助类302
- 7.6引擎引用入口类——AppDelegate310
- 7.7游戏的优化及改进311
- 7.8本章小结311
- 第8章飞行射击类游戏——雷鸣战机312
- 8.1游戏的背景及功能概述312
- 8.1.1背景概述312
- 8.1.2功能简介313
- 8.2 游戏的策划及准备工作315
- 8.2.1游戏的策划315
- 8.2.2安卓平台下游戏开发的准备工作315
- 8.3游戏的架构318
- 8.3.1程序结构的简要介绍318
- 8.3.2服务器端的简要介绍318
- 8.3.3手机客户端的简要介绍319
- 8.3.4游戏框架简介321
- 8.4服务器端的开发322
- 8.4.1数据类的开发322
- 8.4.2服务线程的开发323
- 8.4.3收发数据工具类的开发325
- 8.4.4辅助工具类的开发327
- 8.4.5动作执行类的开发328
- 8.4.6状态更新类的开发332
- 8.5布景相关类333
- 8.5.1菜单布景类MainMenuScene333
- 8.5.2游戏模式布景类NetLayer337
- 8.5.3帮助布景类HelpLayer340
- 8.5.4飞机强化布景类WeaponLayer343
- 8.5.5关卡选择布景类SelectGameLayer344
- 8.5.6飞机选择布景类SelectPlaneLayer346
- 8.5.7游戏2D布景类My2DLayer348
- 8.5.8单机游戏3D布景类First3DLayer351
- 8.5.9联网游戏3D布景类Web3DLayer353
- 8.6辅助工具类354
- 8.6.1网络通信工具类BNSocketUtil354
- 8.6.2战机类的开发357
- 8.6.3敌机工具类362
- 8.6.4子弹工具类367
- 8.6.5爆炸工具类369
- 8.7游戏的优化及改进371
- 第9章棋牌类游戏——天下棋奕372
- 9.1游戏的背景及功能概述372
- 9.1.1背景概述372
- 9.1.2功能介绍373
- 9.2游戏的策划及准备工作374
- 9.2.1游戏的策划374
- 9.2.2安卓平台下游戏开发的准备工作375
- 9.3游戏的架构379
- 9.3.1网络游戏架构简介379
- 9.3.2服务器端的简要介绍379
- 9.3.3客户端的简要介绍380
- 9.3.4游戏框架简介381
- 9.4服务器端的开发382
- 9.4.1数据类的开发382
- 9.4.2服务线程的开发383
- 9.4.3收发数据工具类的开发386
- 9.4.4走棋判断工具类的开发387
- 9.5辅助工具类390
- 9.5.1网络通信工具类BNSocketUtil390
- 9.5.2计算辅助类PublicApi393
- 9.5.3水波类Water394
- 9.6布景相关类的开发397
- 9.6.1游戏场景管理类——GameSceneManager397
- 9.6.2游戏资源加载布景类——LoadingLayer399
- 9.6.3游戏主菜单布景类——MainMenuLayer404
- 9.6.4游戏帮助菜单布景类——HelpLayer412
- 9.6.5单机游戏3D布景类——3DLayer415
- 9.6.6联网游戏3D布景类——WebLayer420
- 9.7引擎引用入口类——AppDelegate423
- 9.8游戏的优化及改进424
- 9.9本章小结424
- 第10章 VR休闲游戏——极速飞行425
- 10.1游戏背景及功能概述425
- 10.1.1游戏开发背景概述425
- 10.1.2游戏功能简介425
- 10.2游戏的策划及准备工作426
- 10.2.1游戏的策划427
- 10.2.2游戏的开发准备工作427
- 10.3游戏的架构429
- 10.3.1各类的简要介绍429
- 10.3.2游戏框架简介430
- 10.4布景相关类431
- 10.4.1总场景管理类——ObjSceneManager431
- 10.4.23D布景类——My3DLayer432
- 10.5辅助类438
- 10.5.1绘制顺序438
- 10.5.2模型创建类——ModelCreate439
- 10.5.3镜头光晕原理441
- 10.5.4光晕类——Flare442
- 10.5.5地形类——MyTerrain443
- 10.5.6常量类——Constant444
- 10.6工具管理类446
- 10.6.1摄像机管理类——CameraControl446
- 10.6.2光晕管理类——FlareControl447
- 10.6.3游戏管理类——GameControl448
- 10.6.4无穷地形原理449
- 10.6.5地形管理类——TerrainControl451
- 10.7引擎引用入口类454
- 10.8材质系统与着色器的开发455
- 10.8.1地形的材质系统455
- 10.8.2菜单的材质系统457
- 10.8.3光晕的材质系统458
- 10.9游戏的特别说明及优化改进460
- 10.9.1特别说明460
- 10.9.2游戏的优化改进460
- 10.10本章小结461