Cocos2d-x 是一个跨平台的游戏开发引擎,可以运行在多个平台下,Android、iOS、Windows、Mac OS、Linux 等等。本书是基于全新的Cocos2d-x 3.x API 来编写的游戏引擎开发书籍,从最基本的环境搭建到最后的项目实战,内容全面并配有大量案例,无论是游戏初学者还是多年的游戏开发高手,都能从中受益。全书最后以《疯狂地鼠》案例,全面系统地梳理Cocos2d-x 游戏开发的完整过程,Cocos2d-x 的大部分内容进行综合应用。
商业级手机游戏案例分享,基于Cocos2d-x 3.0这一2014年春季推出的最新版本。
前言
移动互联网
移动互联网,就是将移动通信和互联网二者结合起来,成为一体。在我国的互联网发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展。数据显示,截止2013年底,中国手机网民超过5亿,占比达81%。随着移动终端价格的下降以及WiFi的广泛铺设,移动网民呈现爆发式趋势。
在如此规模的商业价值里面,每个人都想分一杯羹,下面一起来看看留给个人开发者的机会有多少。移动互联网,可以分为三大模块:互联网、移动运营商和终端设备。从这三方面来看,互联网经过多年发展格局基本成型,移动运营商虽然是一块大肥肉,但是其特殊的地位根本不可撼动,剩下的就是终端设备了。终端设备又可以分为:硬件厂商、软件操作系统和App软件。对于个人开发者来讲,硬件厂商的机会很小,厂商中有大牌的苹果、三星、LG等,个人根本无法与其抗衡。目前,操作系统的局面呈现三足鼎立之势,Google的Android、苹果的iOS和微软的Windows Phone,个人开发者要想做一个操作系统出来几乎不太可能,那剩下的就是App软件了。的确,随着移动互联网的兴起,软件的个人英雄主义又回归了,个人开发者可以在数周或一周内开发出一款App,并一举成名,这样的案例比比皆是。
App大潮
据了解,截止到2014年3月,App Store的下载次数已经突破 650 亿次,达到了又一个里程碑。苹果同时还宣布,目前 App Store 已经在 155 个国家和地区上线,其应用总数超过100万个,其中超过 50 万个专门为 iPad 打造。
Google Play的下载量也逐渐增加,2014年第二季度,Google Play下载量超出了App Store 60%。
通过这些数字可以看出,软件商店平台大大降低了开发者发布软件的成本,各路App开发者蜂拥而上,其中一些App的收益也是相当的可观,免费版《愤怒的小鸟》月广告收入100万美元,《捕鱼达人2》日收入100万美元。个人开发者开发的《找你妹》,其App Store 月收入500万美元,这还不包括Android的收入。
手游
在众多的App中,收益最多的还是游戏,在成百上千的App中,我们真正经常使用的应用App不超过10款,微信、QQ、手机淘宝等。而游戏会层出不穷,你的手机里可能有十几款甚至几十款好玩的游戏,而且这些游戏会不停地更换。
游戏经历了桌面游戏、网络游戏、网页游戏和手游,可以说手游开发时期是离开发者赚钱最近的一个时期,只要把握住这个时机,成功就只有一步之遥。
资本的过度介入,导致2013年的手游市场呈现跳跃式增长。在资本的助推下,手游产品属性日益金融化。相应的,追求短、平、快的投机心理开始盛行,“山寨”成了“一夜暴富”的捷径。
一旦某款手游产品反响火爆,立即就会引来争相效仿者,这直接催生了手游的版权乱象。由于在法律界定上的不完善、手游产品存活率低导致不少维权找不到被诉人等现状,手游行业的版权保护异常蹒跚。
Cocos2d-x
谈到Cocos2d-x,我们就不得不谈一下它的前身Cocos2d-iPhone和Cocos2d的Python版本。Cocos2d是由一个阿根廷的开发者Ricardo于2008年2月发布的,后来随着iPhone游戏的流行,2008年6月宣布与iPhone平台进行接轨,并在当月就公布了用Objective-C编写的Cocos2D for iPhone 0.1版,它与Python版的Cocos2D拥有相同的设计思路。
Cocos2d-x,为什么是“x”。“x”,标志着该项目是由C++编写的;“x”,也意味着交叉。这个开源项目的目标是让用户创建跨平台的代码。Cocos2d-x是跨平台的,具体各个平台的支持如下:iOS、Android、BlackBerry、HTML 5和Window Phone等。
Cocos2d-x的主要功能如下。
流程控制(Flow Control):非常容易地管理不同场景(Scenes)之间的流程控制。
精灵(Sprites):快速而方便的精灵。
动作(Actions):告诉精灵们该做什么。可组合动作如移动(Move)、旋转(Rotate)和缩放(Scale)等。
特效(Effects):特效包括波浪(Waves)、旋转(Twirl)和透镜(Lens)等。
平面地图(Tiled Maps):支持包括矩形和六边形平面地图。
转换(Transitions):从一个场景移动到另外一个不同风格的场景。
菜单(Menus):创建内部菜单。
文本渲染(Text Rendering):支持标签和HTML标签动作。
基于OpenGL:支持硬件加速。
脚本语言:支持Lua、JavaScript语言。
本书内容
本书是基于全新的Cocos2d-x 3.x API来编写的游戏引擎开发书籍,从最基本的环境搭建到最后的项目实战,内容全面并配有大量案例,无论是游戏开发初学者,还是多年的游戏开发高手,都能从中受益。
本书分为20个章节,详细内容如下。
第1章 开发环境搭建。讲述的内容有如何下载Cocos2d-x,如何安装Python、Ant和JDK,如何下载安装Android开发环境ADT和NDK,如何使用命令cocos new来创建新项目,如何在Windows下面使用Visual Studio和Eclipse来开发Cocos2d-x项目,如何在Mac OS平台下使用Eclipse和Xcode来开发Cocos2d-x项目。
第2章 编程起步。详细讲述了Cocos2d-x的第一个项目Hello World的项目架构,以及核心类Director、Node、Scene、Layer、Sprite等常用API,还有坐标系统的讲述,相对坐标、绝对坐标及其转换,位置和锚点的设置,以及代码的风格。由于Cocos2d-x是由Cocos2d-iphone移植而来,因此带有很多Objective-C的编程风格。另外,本章的一个难点就是内存管理的讲解。
第3章 雷电项目。本章将通过这个项目来对Cocos2d-x开发的全貌做一个整体讲述,内容包含项目的概述、游戏启动画面的设计、构建玩家精灵、创建HUD图层、创建游戏主界面、玩家发射子弹、敌机自动移动、碰撞检测和Game Over等。
第4章 标签。本章采用最新的Cocos2d-x 3.x的API,讲述了字体标签、位图标签和字符图集标签的用法。
第5章 菜单。本章对菜单类Menu和菜单项MenuItemLabel、MenuItemSprite、MenuItemImage及MenuItemToggle等都做了详尽的讲述。
第6章 精灵及其相关类。本章首先对精灵类Sprite的用法做了讲述,然后讲述了和精灵相关的一些类,精灵帧SpriteFrame和精灵帧缓存SpriteFrameCache、精灵批量节点类SpriteBatchNode和精灵动画类Animation、动画缓存类AnimaltionCache。
第7章 事件处理。Cocos2d-x 3.x采用全新的事件处理方式,基于监听器Listener的事件处理方式,本章讲述的事件处理有单点触屏事件、多点触屏事件、鼠标事件、键盘事件和重力加速度事件。
第8章 动作。本章首先讲述了动作和基本父类Action和FiniteTimeAction的API,然后讲述了动作的工作原理,后面的具体动作包括:瞬时动作、持续性动作、复合动作和变速动作。
第9章 调度器。首先讲述了调度器的工作原理及其API,然后讲述了调度器的三种调用方法。
第10章 图形用户界面。讲述的视图组件有:文本Text、按钮Button、复选框CheckBox、滑块Slider、加载条LoadingBar、布局Layout、滚动视图ScrollView、列表视图ListView、表格视图TableView和编辑框EditText。
第11章 数据结构和常用类。在游戏开发中,经常会使用一些集合数据结构来管理游戏对象,本章就详细讲述了这些数据结构的用法,内容包括:基本类型封装类Bool、Float、Double、Integer、字符串类String、数组Array、Set集合、字典Dictionary、基本类型封装类cocos2d::Value、向量类Vector和映射类Map。
第12章 屏幕适配。移动设备种类繁多,各种设备屏幕大小不一,因此屏幕适配就变得极为关键和重要。本章将详细讲述FileUtils工具类、屏幕适配的相关接口和屏幕适配解决方案。
第13章 声音效果。一款好的游戏怎能缺少优美的音效,本章将讲述音效的用法,首先是音效引擎简介,然后是音效引擎API,最后通过实例讲述音效的用法。
第14章 网络编程。随着游戏的社交化的演变,几乎所有的游戏都要和服务器打交道,这就需要了解网络编程的相关知识。本章内容包括:JSON数据解析、XML数据解析、curl、HttpClient和WebSocket。
第15章 数据存储。游戏的本地数据存储也很普遍,例如,游戏级别、配置、玩家积分都需要保存。本章讲述两种数据存储方法:UserDefault和SQLite数据库。
第16章 Tiled Map(瓦片地图)。瓦片地图在游戏开发中使用非常广泛,它可以极大地提高游戏场景中图片的加载效率,本章内容包括:Tiled Map 简介、Tiled Map Editor编辑器、Tiled Map API和Tiled Map 实例。
第17章 粒子系统。子游戏中使用粒子系统可以做出非常炫酷的游戏特性,但是,由于粒子系统的属性繁多且不易掌握,而且通过编程的方式实现非常麻烦,为此我们专门讲述了粒子系统的属性和粒子编辑器的用法。
第18章 物理引擎。使用物理引擎可以模拟现实生活中的物理特性,使游戏更能接近真实场景。本章讲述了流行的物理引擎Box2D的用法和Cocos2d-x中的集成用法。
第19章 常用工具和编辑器。在游戏开发中经常会使用到各种工具,例如,字体编辑工具、纹理打包工具、粒子编辑器工具、UI工具、动画工具等,本章将对这些常见工具一一讲述。
第20章 项目实战——疯狂地鼠。本章将通过一个项目来对前面所学的知识做一个总结,该项目是一个疯狂地鼠项目,首先在界面上布局4行6列24个地鼠,地鼠会随机地冒出,玩家需要在一定时间内消灭掉地鼠,如果玩家没有及时消灭掉地鼠,那么当屏幕上的胡萝卜被地鼠吃光后,游戏就会结束。通过本游戏我们可以对Cocos2d-x的大部分内容进行综合应用,包括核心类导演、场景、图层、精灵,以及计时器、动作、动画、自定义组件等。