内容简介
本书从游戏的基础知识介绍、Cocos引擎介绍、Cocos2d�睯S的环境搭建、Cocos核心概念、Cocos引擎节点、Cocos资源处理、Chipmunk物理引擎、Cocos网络编程等方面对Cocos2d�睯S进行了全面解析,所有章节的所有技术点均有示例,且所有示例均有配套的源码可供参考。除此之外,本书还提供聊天室、贪吃蛇、2048以及飞机大战4个项目的实战,对项目进行了全面的讲解和源码剖析。
本书有较强的实用性,可帮助想要入门游戏前端开发技术的同学快速理解并掌握Cocos2d�睯S前端技术,并能使用该技术进行项目开发。
目录
目录
基础篇
第1章欢迎来到游戏世界
1.1游戏的前世今生
1.2游戏的玩法与分类
1.2.1MMORPG类游戏
1.2.2FPS类游戏
1.2.3ARPG类游戏
1.2.4卡牌类游戏
1.2.5RTS类游戏
1.2.6消除类游戏
1.2.7MOBA类游戏
1.2.8塔防类游戏
1.2.9跑酷类游戏
1.2.10数字类游戏
1.3游戏团队的职责与分工
1.4游戏的从无到有
1.5小结
第2章奇妙的Cocos2d�睯S之旅
2.1Cocos的前世今生
2.2Cocos2d引擎家族
2.3Cocos2d�睯S的介绍
2.3.1官方定义
2.3.2引擎架构
2.3.3引擎目录
2.4开发环境的搭建
2.4.1安装Python
2.4.2Cocos Console
2.4.3安装WebStorm
2.4.4配置Android环境
2.4.5Cocos Creator的安装
2.5Hello Cocos2d�睯S
2.5.1创建工程
2.5.2项目目录
2.5.3调试运行
2.5.4各平台打包及部署
2.6官方Demo
2.7小结
进阶篇
第3章Cocos核心概念
3.1导演、场景、精灵和图层
3.2实现菜单
3.2.1实现文字菜单
3.2.2实现精灵菜单
3.2.3实现开关菜单
3.3自定义场景
3.3.1创建场景脚本文件
3.3.2添加图层到场景
3.3.3添加精灵到图层
3.3.4修改main.js入口场景
3.3.5添加JS文件到project.json
3.4多场景切换
3.4.1导演的作用
3.4.2Director的常用方法
3.4.3场景切换Demo
3.5场景切换特效
3.6小结
第4章Cocos引擎节点
4.1锚点和坐标
4.2父子关系
4.3缩放和旋转
4.4计划任务
4.5电子时钟的实现
4.5.1功能分析
4.5.2底层格子的绘制和时间的定时刷新
4.5.3绘制数字
4.5.4绘制数字底色
4.6动作与组合动作
4.7生命周期
4.8事件处理
4.8.1创建单点事件监听处理
4.8.2创建事件监听的快捷方式
4.8.3键盘响应事件
4.8.4加速计事件
4.8.5鼠标响应事件
4.8.6自定义事件
4.8.7事件监听器的其他操作
4.9打地鼠
4.9.1玩法分析
4.9.2结构设计
4.9.3代码实现
4.10绘制节点
4.10.1绘图API
4.10.2绘制复杂图形
4.11小结
第5章Cocos资源处理
5.1纹理缓存
5.2图片的异步加载
5.3帧动画处理
5.4切图帧动画
5.5纹理打包文件的加载
5.5.1打包纹理文件
5.5.2加载打包文件
5.6粒子动画
5.6.1系统粒子动画
5.6.2自定义粒子动画
5.6.3使用粒子动画
5.7音乐和音效
5.8小结
第6章Chipmunk物理引擎
6.1基本概念
6.2引入Chipmunk引擎
6.3创建物理世界
6.3.1创建Space空间
6.3.2设置debug模式
6.3.3设置重力
6.3.4划分空间边界
6.4创建物理对象
6.4.1创建刚体
6.4.2设置body属性
6.4.3创建并绑定形状
6.4.4创建物理精灵对象
6.5物理世界的刷新
6.6碰撞检测
6.7运行物理世界
6.8小结
第7章Cocos网络编程
7.1网络通信协议
7.1.1TCP协议
7.1.2UDP协议
7.1.3TCP与UDP的比较
7.2NodeJS服务器环境的搭建
7.2.1NodeJS简介
7.2.2安装NodeJS
7.2.3Express框架
7.3HTTP通信
7.3.1HTTP协议位置
7.3.2请求响应模型
7.3.3HTTP客户端
7.3.4HTTP服务端
7.4WebSocket通信
7.4.1WebSocket出现之前的实时通信方式
7.4.2WebSocket原理
7.4.3WebSocket客户端
7.4.4WebSocket服务端
7.5小结
实战篇
第8章聊天室
8.1功能模块
8.2时序图
8.3功能设计
8.4客户端
8.4.1分层架构
8.4.2类图设计
8.4.3登录场景的实现
8.4.4聊天场景的实现
8.4.5网络处理的实现
8.4.6相关工具类
8.5服务端
8.5.1分层架构
8.5.2类图设计
8.5.3网络处理
8.5.4逻辑处理
8.5.5内存管理
8.6前后端通信
8.7小结
第9章贪吃蛇
9.1游戏玩法
9.2游戏分析
9.2.1身体关节
9.2.2移动方向
9.3游戏开发
9.3.1项目构建
9.3.2开始/结束场景
9.3.3游戏场景
9.3.4关节节点
9.3.5相关工具类
9.4运行效果
9.5小结
第10章2048
10.1游戏玩法
10.2游戏分析
10.3游戏开发
10.3.1项目构建
10.3.2开始/结束场景
10.3.3游戏场景
10.3.4滑动方块
10.3.5相关工具类
10.4运行效果
10.5小结
第11章飞机大战
11.1游戏玩法
11.2游戏分析
11.3游戏开发
11.3.1项目构建
11.3.2场景与状态机
11.3.3游戏场景
11.3.4游戏背景
11.3.5子弹类
11.3.6玩家类
11.3.7敌机类
11.3.8道具类
11.3.9加载动画
11.3.10全局管理
11.4运行效果
11.5小结
精彩书摘
第3章Cocos核心概念
经过前面的介绍,相信大家已经迫不及待地想要看看Cocos究竟有多大的本事。从本章开始逐步了解Cocos的核心概念,了解Cocos的世界到底是如何运转的。
本章内容:
■导演、场景、精灵和图层
■实现菜单
■自定义场景
■多场景切换
■场景切换特效
3.1导演、场景、精灵和图层
在Cocos的设计理念中,一款游戏就如同一部电影,在电影中有导演、场景、演员和布景,整个电影如何演、怎么演,演员在什么场景做什么事,都是由导演来控制,而在具体的场景、具体的布景中,演员淋漓尽致地表演,他们相互协作、相互依赖,最终形成了电影。
相似地,在Cocos的设计中也有类似的角色,它们分别是Director(导演)、Scene(场景)、Sprite(精灵)和Layer(图层)。它们在Cocos引擎中有着不同的责任,导演负责控制所有场景之间的转换与切换,场景控制所有层和精灵的展示,精灵负责所有的动作表现,图层则负责场景的构成及用户交互。它们之间相互依赖的关系如图3��1所示。
图3��1导演、场景、精灵和图层的关系
读者可以通过把游戏和电影中的内容对应来加深理解。一般来说,在一场电影中只会有一个导演,在一个Cocos游戏中也只会有一个导演类; 一场电影会有多个镜头,对应Cocos中就是多个场景,而同一时刻只会同时运行一个场景,就像电影中不可能同时出现多个镜头; 电影场景中的房屋、天空、大地对应Cocos游戏中的图层,而房屋中的桌椅板凳、天空中的云、地面上的人对应Cocos中的精灵。以上各种元素构成了一整部电影,通过电影的这么一个过程,读者比较能够容易理解Cocos的机制原理。
这里以第2章创建的HelloWorld工程的默认JS文件app.js为例来了解导演、场景、精灵和图层。读者可以跟随代码一步一步进入Cocos2d�睯S的世界。
首先看游戏的入口文件main.js,Web启动会通过index.html加载CCBoot.js,然后加载入口文件main.js,而Native启动会通过原生代码加载jsb_boot.js,然后调用main.js,无论是Web还是Native启动,最终都会以main.js为入口进入到游戏,下面来看一看main.js里都做了什么。
cc.game.onStart=function(){
if(!cc.sys.isNative && document.getElementById("cocosLoading"))
//If referenced loading.js, please remove it
document.body.removeChild(document.getElementById("cocosLoading"));
//传true值让retina显示可用,在Android设备上默认为不可用以提高性能
cc.view.enableRetina(cc.sys.os===cc.sys.OS_IOS ? true : false);
//调整视图属性
cc.view.adjustViewPort(true);
//取消下面代码的注释来为你的游戏设置固定的朝向
cc.view.setOrientation(cc.ORIENTATION_PORTRAIT);
//设置分辨率的策略和大小
cc.view.setDesignResolutionSize(960, 640, cc.ResolutionPolicy.SHOW_ALL);
前言/序言
前言
随着移动端设备的普及,手游行业异常火爆,而随着HTML5技术的兴起,Cocos2d�瞲游戏引擎中的分支Cocos2d�睯S也越来越受欢迎,越来越多的有志人士加入到手游行业中来,本书可帮助想入门Cocos2d�睯S游戏前端开发的游戏行业人员或非游戏行业人员快速掌握并能上手开发Cocos2d�睯S游戏前端程序。
本书从游戏的基础知识介绍、Cocos引擎介绍、Cocos2d�睯S的环境搭建、Cocos核心概念、Cocos引擎节点、Cocos资源处理、Chipmunk物理引擎、Cocos网络编程等方面对Cocos2d�睯S进行了全面解析,所有章节的所有技术点均有示例,且所有示例均有配套的源码可供参考。除此之外,本书还提供聊天室、贪吃蛇、2048以及飞机大战4个项目的实战,对项目进行了全面的讲解和源码剖析。
本书内容由浅入深,从Cocos2d�睯S的基础知识介绍到最后的项目实战,逐步使读者深入理解Cocos的游戏开发原理。因为Cocos2d�睯S基于JavaScript语言开发,所以除了需要读者有一定的JavaScript语言基础之外无任何其他要求,任何对于Cocos2d�睯S技术感兴趣的开发者均可阅读此书。
编者
2018年1月
《移动互联网开发技术丛书》系列简介:解锁下一代移动应用开发的前沿技术 随着移动互联网的爆炸式增长,跨平台开发的需求日益迫切。开发者们不仅需要构建功能强大、用户体验出色的应用,更需要一种能够高效触达海量用户的解决方案。本丛书系列正是应运而生,汇聚了移动互联网开发领域最前沿、最具潜力的技术栈,旨在为广大开发者提供一条从入门到精通的系统化学习路径,助力您在日新月异的移动开发浪潮中抢占先机。 系列宗旨: 本丛书系列秉承“理论与实践并重,前沿与经典结合”的宗旨,致力于为读者提供: 系统化的知识体系: 涵盖移动互联网开发的核心概念、主流技术、高级技巧以及工程实践,构建扎实的理论基础。 丰富的实战案例: 选取行业内真实、具有代表性的项目案例,带领读者一步步完成从需求分析到产品落地的全过程,将理论知识转化为解决实际问题的能力。 前沿技术的探索: 关注移动互联网技术发展的最新动态,及时引入和深入剖析新兴技术,帮助读者把握技术趋势,保持竞争力。 高效的学习体验: 采用由浅入深、循序渐进的编写方式,辅以清晰的代码示例、详尽的图解和实用的开发技巧,确保读者能够轻松理解并有效吸收。 全方位的技术指导: 不仅仅是技术层面的讲解,更深入到项目管理、性能优化、安全防护、商业化运营等多个维度,帮助读者构建完整的移动互联网产品开发思维。 系列内容概览: 《移动互联网开发技术丛书》系列涵盖了当前移动互联网开发中最重要的几个技术方向,包括但不限于: 第一部分:跨平台开发利器——构建统一的用户体验 在移动互联网时代,用户遍布 iOS 和 Android 两大平台。为了最大限度地触达用户并降低开发成本,跨平台开发成为了必然选择。本系列中的部分书籍将深入探讨当前最受欢迎的跨平台开发框架,帮助开发者们用一套代码构建出在不同平台上都能运行的、体验一致的应用。 深入剖析主流跨平台框架: 您将了解到 React Native、Flutter 等框架的核心设计理念、架构原理以及它们在性能、UI 渲染、原生模块交互等方面的优势与劣势。 组件化与模块化开发: 学习如何通过组件化和模块化的方式组织代码,提高代码的可复用性和可维护性,加速开发进程。 与原生平台的集成: 掌握如何调用原生 API、开发原生模块,解决跨平台框架无法直接满足的需求,实现高性能的调用。 UI/UX 设计的最佳实践: 学习如何根据不同平台的特性,设计出既统一又符合用户习惯的 UI/UX,提供卓越的用户体验。 性能优化与调试技巧: 深入学习如何针对跨平台应用进行性能分析、瓶颈定位和优化,确保应用流畅运行。 第二部分:高性能原生应用开发——精雕细琢的极致体验 虽然跨平台开发日益普及,但在对性能、响应速度和系统级功能有极致要求的场景下,原生应用开发仍然是不可替代的选择。本系列将为 iOS 和 Android 原生开发提供详尽的指导,帮助开发者们打造出性能卓越、功能强大的原生应用。 iOS 原生开发(Swift/Objective-C): Swift 语言深度解析: 从基础语法到高级特性,全面掌握 Swift 的强大之处,学习如何编写安全、高效、富有表现力的代码。 Cocoa Touch 框架精讲: 深入理解 UIKit、Foundation 等核心框架,掌握视图控制器、数据管理、网络通信、多线程等关键技术。 SwiftUI 与 UIKit 融合: 学习如何在现代 UI 框架 SwiftUI 和传统的 UIKit 之间进行选择和集成,拥抱声明式 UI 的未来。 性能优化与内存管理: 掌握 Instruments 等工具的使用,进行性能剖析,学习 ARC 机制,优化内存使用,确保应用稳定流畅。 App Store 发布与分发: 了解 App Store Connect 的使用,学习证书配置、打包、提交审核等流程。 Android 原生开发(Kotlin/Java): Kotlin 语言优势与实践: 学习 Kotlin 相较于 Java 的诸多优势,如空安全、协程、扩展函数等,并将其应用于实际开发。 Android SDK 全面解析: 深入理解 Activity、Fragment、Service、BroadcastReceiver 等四大组件,掌握布局绘制、事件处理、资源管理、数据存储等核心知识。 Jetpack 架构组件: 学习 ViewModel, LiveData, Room, Navigation 等 Jetpack 组件,构建更易于维护、测试和扩展的应用架构。 Jetpack Compose 现代 UI 开发: 掌握 Jetpack Compose 声明式 UI 的开发范式,构建响应式、高效且美观的用户界面。 性能调优与应用安全: 学习 ART 虚拟机、内存优化、CPU 性能分析,并了解 Android 应用的安全加固措施。 第三部分:后端服务与云原生——支撑移动应用的强大后盾 一个完整的移动互联网产品离不开强大的后端支持。本系列将带领读者走进后端开发的世界,学习如何构建可扩展、高可用、安全的后端服务,为移动应用提供数据存储、用户认证、实时通信等关键能力。 Node.js/Python/Go 等后端语言与框架: 深入学习一种或多种主流后端开发语言及其对应的 Web 框架(如 Express.js, Django, Gin 等),掌握 RESTful API 设计、数据库交互、身份验证等。 数据库技术: 学习关系型数据库(如 MySQL, PostgreSQL)和 NoSQL 数据库(如 MongoDB, Redis)的使用,理解数据建模、索引优化、事务处理等。 云原生技术与容器化: 了解 Docker、Kubernetes 等容器化技术,学习如何在云平台上部署和管理后端服务,实现弹性伸缩和高可用。 微服务架构: 学习微服务的设计理念、拆分策略、服务治理、API 网关等,构建稳定可靠的分布式系统。 消息队列与实时通信: 掌握 Kafka、RabbitMQ 等消息队列的应用,实现异步通信和解耦;学习 WebSocket 等技术,实现实时数据推送。 第四部分:移动互联网产品工程化实践——从想法到落地 开发出优秀的应用只是第一步,将应用成功推向市场并持续迭代优化,则需要一套完善的工程化体系。本系列将聚焦于移动互联网产品的全生命周期管理,提供实用的方法论和工具。 敏捷开发流程与项目管理: 学习 Scrum、Kanban 等敏捷开发方法,掌握需求管理、任务分配、进度跟踪等技巧。 版本控制与持续集成/持续部署(CI/CD): 熟练使用 Git 进行版本管理,搭建 CI/CD 流水线,实现代码自动化构建、测试和部署。 自动化测试: 学习单元测试、集成测试、UI 自动化测试,确保代码质量,减少回归错误。 性能监控与用户行为分析: 引入 Firebase Analytics, Mixpanel 等工具,收集用户行为数据,分析应用性能,驱动产品迭代。 应用安全与隐私保护: 学习常见的移动应用安全漏洞及防护措施,了解数据加密、权限管理等,确保用户数据安全。 应用商店优化(ASO)与推广: 学习如何提升应用在应用商店的可见度,制定有效的推广策略。 商业化变现策略: 探讨广告变现、内购、订阅等多种商业化模式,帮助开发者实现盈利。 目标读者: 初学者: 希望系统学习移动互联网开发技术的在校学生、转行开发者。 在职开发者: 希望拓展技术栈、学习跨平台开发、提升原生应用开发技能、了解后端技术或掌握工程化实践的开发者。 技术团队负责人: 希望了解当前主流移动开发技术,为团队技术选型和规划提供参考的管理者。 创业者: 希望快速构建 MVP (Minimum Viable Product),验证商业想法的技术型创业者。 《移动互联网开发技术丛书》系列,将是您在移动互联网浪潮中乘风破浪的得力助手。我们致力于为您提供最前沿、最实用、最系统的技术指导,帮助您成为一名优秀的移动互联网开发者。