《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》共有12章,以跨平台的手机游戏开发为主线,围绕着cocos2d-x引擎,由浅入深地讲解了智能手机的游戏开发过程、跨平台游戏引擎的原理、跨平台游戏引擎周边工具以及跨平台的游戏开发,还给出了完整的实战案例,语言简洁,结构清晰。《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》适合所有想进入智能手机平台游戏领域的人士,包括在校大学生、游戏开发者和网络游戏公司的CTO等。
《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》前言
序
近几年,开源力量在全球软件行业里扮演着越来越重要的角色。就移动互联领域而言,Linux内核被广泛用在嵌入式系统和无头设备,Android崛起,PhoneGap诞生,服务端LAMP已是标配,svn/git和Redmine成为很多软件公司的管理工具。时至今日,已经很难有哪家软件公司敢说他们完全不用开源产品了。国内的盛大和淘宝等公司都推出了开源平台,尝试开放企业的一些内部项目的源代码,这些都是非常有意义的举动。就国内开源历史来看,最成功的开源项目当属Discuz、PHPWind和Dvbbs,这3个开源项目服务了国内无数中小网站的站长。而cocos2d-x这一开源项目所追求的目标正是服务大量的手机游戏开发者,把大家都需要花费大量时间学习和需要花费时间重复做的工作抽取出来,形成一套开源的公用库。往大了说就是,希望能通过这套公用库来降低手机游戏开发的技术门槛和研发成本,使得中小团队和个人开发者能从中受益。
cocos2d-x仅是cocos2d社区的一个分支。cocos2d开源项目诞生于2008年第一季度,以阿根廷人Ricardo Quesada为社区领袖和主要开发者。最初这仅是一个用Python语言写的游戏框架,并没有体现出什么商用价值,但2008年正好是苹果发布iPhone 2.0 SDK的时候,这给全球的手机游戏开发者提供了一个非常好的舞台。cocos2d社区抓住了这个时机,在2008年就开出cocos2d-iphone分支,用Objective-C语言替换Python重写了整个框架。cocos2d随着iOS的发展而快速壮大。到了2009年的4月,用cocos2d-iphone写的游戏StickWars在App Store美国区的付费榜冲到第一,这个里程碑事件标志着cocos2d完全脱离了自娱自乐过家家的水平,进入了可以稳定商用的阶段。在2010年,cocos2d已经成为iOS平台上首选的2D游戏框架:几乎每个初学iOS游戏开发的程序员都会从cocos2d入手,社区里时常有开发者跳出来炫耀他的cocos2d游戏冲到App Store Top10,让人“羡慕嫉妒恨”。
cocos2d框架的最大优势在于其简单易学,游戏开发者只需潜心学习一个月左右就能掌握,不需要学习复杂的OpenGL ES知识就可以开发出一款商用水平的游戏,却能完全享受OpenGL ES硬件加速给游戏带来的性能提升和各种炫酷特效。这一核心特点成就了许多个人开发者和中小团队通过cocos2d快速在iOS平台上掘金的梦想。
前文提到,2008年cocos2d社区用Objective-C替换Python对整个游戏框架进行了重写,而在2010年当Android崛起到能够和iPhone抗衡,开发者希望能把游戏移植到Android平台上的时候,同样的事情再次上演:cocos2d-x分支被开出来,框架用C++重写。虽然C++广被诟病,但作为iOS和Android两大平台都官方支持的编程语言,我们不得不“屈服”于C++的实力。事后证明这个技术路线的选择是对的!市面上各种Phone粉墨登场,都有自己独特的SDK、独特的UI控件接口,但对于游戏开发,它们具有两个相同点:一是支持C++开发,二是提供OpenGL ES接口。在这两点上,不论是国内的沃Phone、Ophone、乐Phone和魅族,还是国外的Bada和MeeGo等,都是一致的。甚至连封装层面甚高、直奔HTML5而去的WebOS都专门为游戏开发准备了C++&OpenGL ES专用的PDK。
和cocos2d-iphone的南美洲团队不同,cocos2d-x分支的主要维护团队在中国,我们有幸为大家做了这件事情,并很享受这个利他的过程。在大家的共同努力下,经过第一年的发展,社区里诞生了70多款基于cocos2d-x的游戏,其中包括多款Top 10的佳作,更有《捕鱼达人》、《Ah Up Planet》、《地铁总动员》和《91部落》等明星游戏。截至2011年10月中旬,基于cocos2d-x引擎创作的游戏在iOS平台已累计超过340万次下载,在Android平台则超过1000万次下载。
很快我们就发现大家都开始积极地回馈cocos2d-x项目。网龙公司为社区贡献了整套Lua绑定的代码,SuperRacccon、子龙山人、冬天的林和张文野等多位开发者不断撰写博客阐述使用要点,徐松林和黄猛更是热心地花费几个月的时间,为各位献上的这本教程。它不仅是cocos2d-x社区的第一本中文书,也是整个cocos2d社区的第一本中文书。
cocos2d-x的官方文档都受限于社区的国际化,因此没能提供中文版。另外,很多文档都是站在引擎开发者角度对原理进行阐述和解释的,对于初学者来说可能过于复杂。而此书从游戏开发者的角度,用通俗易懂的方式传授了cocos2d-x引擎的几个主要功能的用法,着重解决官方文档里没有涵盖的部分,如物理引擎和周边工具的使用,解答了新手经常感到困惑的热点问题,如开发环境安装、交叉编译和第三方库集成等。作者在这些地方都非常耐心地给出了按步骤的截图和代码段;最后,两位作者更是给出了一个很有分量的实际游戏案例,使得此书的学习价值大大提高。
非常感谢徐松林和黄猛两位作者的贡献,希望能有更多的游戏开发者从此书中受益。开源社区因为有大家的支持而更美好!
2011年10月
《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》精彩书摘
第1章
智能手机操作系统介绍
2007年1月9日,在MacWorld大会上,苹果首席执行官史蒂夫?乔布斯宣布iPhone产品正式推出,同年6月29日iPhone产品在美国上市。MacWorld是专门关注苹果公司产品的计算机杂志,也是全北美洲最畅销的关注苹果产品的杂志,每年的MacWorld大会,苹果公司基本上都会宣布一些新产品。
2007年11月5日,谷歌发布了基于Linux平台的开源手机操作系统Android。第一款基于Android操作系统的手机(T-MobileG1)于2008年9月22日在美国纽约正式发布。
2008年,工业和信息化部、发改委、财政部联合发布《关于深化电信体制改革的通告》,开始电信业务重组:中国电信收购中国联通的CDMA网络,中国联通与中国网通合并,中国网通的基础电信业务并入中国联通,中国铁通并入中国移动。自此,国内电信运营商由5家变为3家。同年,中国移动、中国联通、中国电信分别获取国家的3G牌照:中国移动获得基于TD-SCDMA技术制式的3G牌照,中国电信获得基于CDMA2000技术制式的3G牌照,中国联通获得基于WCDMA技术制式的3G牌照。
2007年苹果的iPhone、谷歌的Android相继推出,2008年国内的3G牌照发放,一次又一次地向大家证明:3G的时代已经来临。
第三代移动通信技术(3G)是指支持高速数据传输的蜂窝移动通信技术。围绕3G技术的3G协议、3G手机和智能手机操作系统等,都涉及非常多的理论及相关知识。本书只介绍智能手机的操作系统以及智能手机操作系统上的应用和软件,至于其他(包括3G协议和3G手机)的理论和相关知识,请参考相关领域的相关书籍。
如果没有各类软件,电脑和手机就不能有序地按照我们的想法进行工作。例如,电脑上没有办公软件,我们就不可能按照自己的想法写出文章;电脑上没有网页浏览器,我们就不可能访问网页;而手机上没有收件箱,我们也就不能收发短信了。
如果没有各类游戏,电脑和手机也就不能满足我们在工作之余还想玩游戏的需求。例如,电脑上的魔兽争霸3(Dota)、地下城与勇士(DNF)等,手机上的连连看和愤怒的小鸟等。
那么,电脑和手机上的软件和游戏是怎么制作出来的呢?它们需要根据每台电脑和手机的硬件做特殊的处理吗?事实上,大部分的软件和游戏都是不需要针对机器做特殊定制的,因为它们都不是直接和机器硬件打交道,它们都不会直接操作机器的硬件,它们都是基于一个名叫“操作系统”的程序开发的。
操作系统是一个管理硬件资源和软件资源的程序,不管在PC上还是在手机上,它都是核心和基础。操作系统管理全部的硬件资源和软件资源,控制软件的运行。
软件、游戏、操作系统以及硬件的关系如图1-1所示。
图1-1软件、游戏、操作系统以及硬件的关系图
前面我们介绍了操作系统与软件、游戏之间的关系,现在来分别介绍iOS和Android等几个常见的手机操作系统。
1.1iOS
2007年1月9日乔布斯宣布iPhone产品正式推出,同年6月29日,第一代的iPhone(iPhone1)在美国发布。截至如今,苹果已经发布了4款iPhone产品,分别是2007年发布的iPhone1,2008年11月发布的iPhone2,2009年6月发布的iPhone3,2010年6月发布的iPhone4。
苹果公司修改了原来用于电脑的MacOS操作系统,让其更符合移动设备,也就产生了iOS。苹果公司的iOS在4.0版本之前的名称为iPhone,在4.0版本之后才叫iOS。
iPhone是一个集照相手机、个人数码助理、音乐视频播放器为一体的掌上设备,在iOS4.0操作系统上,iPhone自带以下应用程序:短信、日历、照片、相机、备忘录、YouTube、股市、地图、天气、实用工具文件夹、iTunes、浏览器Safari、邮件工具Mail、应用商城AppStore以及系统设定等。下面我们开始介绍iOS的常见特性以及AppStore应用商城。
1.1.1iOS常见特性
iOS作为一款非常优秀的操作系统,是智能手机操作系统的典型。下面就给出其常见的一些特性。
(1)WiFi。支持无线网络(802.11b/g),通过无线网络能够方便地接入网络,手机还内置了浏览器Safari和邮件工具Mail。
(2)GPS。支持GPS定位。
(3)摄像头。iPhone1和iPhone2为200万像素,iPhone3为320万像素,iPhone4为500万像素。
(4)闪光灯。iPhone4之前无闪光灯,iPhone4支持LED闪光灯。
(5)感应器。也就是重力感应,iOS是第一个提供重力感应功能的手机操作系统。有了重力感应功能,手机能够根据用户水平或竖直的持有方式,自动地调整屏幕的显示方向。
(6)光感器。手机能够根据当前的光线强度,自动地调整屏幕的亮度。
(7)超强的CPU。iPhone4采用1GHz的A4处理器。
1.1.2AppStore
AppStore是苹果公司为iPhone、iPod、iPad以及Mac创建的,它允许用户从中浏览下载为iPhone、iPod、iPad以及Mac开发的应用程序(包括软件和游戏)。有些应用程序是收费的,有些则是免费的。
AppStore为第三方的开发者提供了一个方便、公平和高效的软件销售平台,正是因为这一点,手机软件业开始步入一个高速发展的时代。
AppStore建立了一种三方(苹果公司、开发者和用户)共赢的商业模式。苹果公司掌握AppStore的开发与管理权,是平台的主要掌控者,提供平台和SDK开发工具包,负责应用的营销,给开发者结算,向用户收费。开发者是应用软件的上传者,主要负责应用程序的开发,然后在AppStore上自主运营(免费、收费、免费与收费之间调整、调整价格)自己的产品或应用。用户是应用程序的使用者,只需要注册、登录AppStore并捆绑信用卡,就可以下载应用程序。
1.2Android
2007年11月5日,谷歌宣布组建一个全球性的联盟组织,即开放手机联盟。开放手机联盟的成员包括手机制造商、手机芯片厂商和移动运营商。手机制造商包括摩托罗拉、三星和索尼爱立信等,手机芯片厂商包括美国的德州仪器、美国的NVIDIA和欧洲的ST等,移动运营商包括中国电信、中国移动、中国联通和德国T-Mobile等。
开放手机联盟将支持谷歌可能发布的手机操作系统或者应用软件,共同开发名为Android的开源的移动系统。
Android是基于Linux平台的开源手机操作系统,第一款基于Android操作系统的手机(T-MobileG1)于2008年9月22日在美国纽约正式发布。
下面我们介绍Android的常见特性以及Android应用商城。
1.2.1Android常见特性
这里给出Android的3个常见特性。
(1)开放性。Android平台是开源的、开放的,它允许任何移动终端厂商加入到Android联盟中来。由于它充分开放,越来越多的厂商推出基于Android的手机,Android的终端会越来越多。当然开发者也会越来越多,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
(2)丰富的硬件选择。这一点其实还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出功能迥异又各具特色的多种产品。功能和特色的差异,却不会影响数据同步甚至软件兼容。
(3)不受任何限制的开发商。这一点其实与大家的利益息息相关。Android平台提供给第三方开发商一个十分宽泛、自由的环境,因此不会受到各种条条框框的限制,这样就会有非常多的新颖别致的软件和游戏诞生。但是这也有其两面性,血腥、暴力和色情方面的软件和游戏也会出现在Android里面。而且太自由宽泛的环境,很难建立一个像苹果AppStore那样完整的产业链。
1.2.2Android应用商城
尽管Android是一个开放的平台,但是谷歌还是建立了一个类似于AppStore的应用商城,即AndroidMarket(http://market.android.com/)。开发者可以上传自己的软件和游戏到AndroidMarket上,然后在AndroidMarket上运营管理自己的软件和游戏。
不过,由于Android太开放了,很多使用了Android系统的手机厂商都建立了自己的应用商城,例如摩托罗拉的智件园和HTC商城等。除了上述的几个商城外,常说的商城还包括亚马逊的Android商城。
1.3其他手机操作系统
iOS和Android是目前最火的两大智能手机操作系统,但是除了这两大系统外,还存在着很多的智能手机操作系统,比如PalmOS、WindowsMobile、WindowsPhone、塞班(Symbian)以及黑莓(Blackberry)等。中国移动的OPhone、中国联通的沃Phone和联想的LEOS是国内的三大智能手机系统,下面重点介绍一下。
1.3.1OPhone
为了突破TD终端瓶颈,促进手机终端与中国移动的网络及应用服务进行无缝对接,中国移动和播思通讯在谷歌Android操作系统的基础上,主导开发了OPhone操作系统(OpenMobilePhoneOperatingSystem)。OPhone操作系统直接内置了中国移动的服务菜单、音乐随身听、手机导航、号簿管家、139邮箱、飞信、快讯和移动梦网等特色业务。
1.3.2沃Phone
2011年2月28日,中国联通旗下自主的操作系统以及搭载该系统的多款机型正式发布。此次发布正式将操作系统命名为沃Phone操作平台(在此之前存在着多种命名方式,如Uphone等),这是中国首个自主知识产权的智能手机操作系统。
沃Phone是完全基于Linux内核的原生操作系统,具有自主、开放的特性。很难得的一点就是沃Phone是基于Linux内核的,而不是基于Android操作系统的,这与OPhone不同。
1.3.3LEOS
2010年1月7日,在美国的CES2010大展开幕之际,联想公司发布了一款全新的智能手机——乐Phone,其上市日期是2010年5月11日。
乐Phone采用的操作系统就是LEOS。LEOS是一个增强的Android操作系统,是联想根据自身的需求定制的Android操作系统。LEOS除拥有Android操作系统原来所有的功能外,还拥有联想自主开发的推送(push)引擎。推送引擎以联想公司强大的后台服务为基础,精准、实时地推送邮件、新闻、音乐、视频等信息,让用户在各种网络环境都能通过如影随形的推送服务实现互联之乐。
1.4总结
本章一共介绍了5个智能手机操作系统,分别是iOS、Android、OPhone、沃Phone和LEOS。下面总结一下这些系统的整体特点。
苹果的iOS的产业链比较完善,对于开发者来说,只需要针对iOS系统进行开发,然后提交给苹果的AppStore即可运营。
谷歌的Android、中国移动的OPhone、联想的LEOS都属于Android系列,Android的整个产业目前看起来是蒸蒸日上的,读者应该时刻都能从网上看到关于Android的新消息。但是由于其开放性,很多厂商对Android做了较大范围的改造,甚至已经宣称拥有自己的手机操作系统。这样开发者开发出一个软件或游戏时,要想做大规模的适配,有可能需要针对厂商的机型做定制。这些基于Android的厂商,都想像苹果那样控制整个产业链,每一家都在酝酿自己的应用商城,而且很多都已经上线,如谷歌的AndroidMarket、中国移动MM商城、联想应用商店等。但是,任何单独一家Android厂商的终端数都小于苹果。因此,虽然看起来是一个繁荣的市场,但具体每个开发者从中如何获益,还得研究。
沃Phone是中国联通刚刚推出的智能手机系统,围绕该系统的终端还不是很多。不过,中国联通已经建立了针对该系统的官方商城、提供了专门的开发环境,而且由于该系统是中国联通自主知识产权建立的,所以拥有控制产业链的基础。
本章介绍的各智能手机操作系统的发展知识对读者来说比较重要,了解这些知识可以方便读者在进行软件和游戏开发时选择合适的操作系统。而在下一章,我们将介绍游戏以及游戏引擎的相关知识。
《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》价格
《cocos2d-x手机游戏开发:跨iOS、Android和沃Phone平台》目录
第1章 智能手机操作系统介绍
1.1 iOS
1.1.1 iOS常见特性
1.1.2 App Store
1.2 Android
1.2.1 Android常见特性
1.2.2 Android应用商城
1.3 其他手机操作系统
1.3.1 OPhone
1.3.2 沃Phone
1.3.3 LEOS
1.4 总结
第2章 游戏及游戏引擎介绍
2.1 游戏介绍
2.2 游戏引擎介绍
2.2.1 渲染引擎
2.2.2 物理引擎
2.2.3 周边工具
2.3 总结
第3章 进入cocos2d的世界
3.1 cocos2d介绍
3.2 cocos2d-iphone介绍
3.3 cocos2d-x介绍
3.4 cocos2d-x游戏分享
3.5 其他cocos2d版本介绍
3.6 总结
第4章 搭建跨平台的开发环境
4.1 环境说明
4.2 环境搭建
4.2.1 安装Visual Studio
4.2.2 安装Cygwin
4.2.3 安装iOS环境
4.2.4 安装Android环境
4.2.5 安装沃Phone环境
4.2.6 安装cocos2d-x引擎
4.3 环境测试之Hello World案例
4.3.1 Windows运行
4.3.2 iOS运行
4.3.3 Andriod运行
4.3.4 沃Phone运行
4.4 总结
第5章 cocos2d-x引擎基础使用
5.1 整体架构
5.1.1 导演
5.1.2 摄像机
5.1.3 场景
5.1.4 布景
5.1.5 人物角色
5.1.6 动作
5.2 目录结构
5.3 坐标体系
5.4 跨平台常量
5.5 图形
5.6 动作
5.7 菜单
5.8 事件
5.9 变量自动释放
5.10 总结
第6章 cocos2d-x之高级特性
6.1 物理引擎
6.1.1 世界
6.1.2 刚体及刚体定义
6.1.3 形状
6.1.4 关联及关联定义
6.1.5 链接及链接定义
6.1.6 使用案例
6.2 粒子系统
6.2.1 重力式粒子系统
6.2.2 放射式粒子系统
6.3 声音模块
6.4 总结
第7章 cocos2d-x之周边工具
7.1 沃Phone 应用程序打包工具
7.1.1 软件包设置
7.1.2 应用配置
7.1.3 添加支持文件
7.1.4 保存编译
7.2 图片编辑器
7.3 地图编辑工具
7.4 粒子系统设计工具
7.5 总结
第8章 cocos2d-x之交叉编译
8.1 交叉编译到iOS平台
8.1.1 新建iOS项目
8.1.2 交叉编译
8.1.3 打包运行
8.2 交叉编译到Android平台
8.2.1 新建Android项目
8.2.2 生成编译脚本
8.2.3 交叉编译
8.2.4 打包运行
8.3 交叉编译到沃Phone平台
8.3.1 新建沃Phone项目
8.3.2 生成编译脚本
8.3.3 交叉编译
8.3.4 打包运行
8.4 总结
第9章 cocos2d-x之实用篇
9.1 游戏社交平台
9.2 手机广告平台
9.3 推广墙平台
9.4 技术准备
9.4.1 cocos2d-x调用Objective-C
9.4.2 cocos2d-x调用Java
9.5 案例实现
9.5.1 场景分析
9.5.2 环境准备
9.5.3 游戏设计
9.5.4 游戏实现
9.5.5 场景总结
9.6 总结
第10章 "魔塔"案例之基础篇
10.1 先熟悉一下游戏
10.2 准备工作
10.3 绘制最简单的游戏地图
10.4 人物行走
10.5 碰撞检测
10.6 总结
第11章 "魔塔"案例之高级篇
11.1 重构代码
11.1.1 分离场景和图层
11.1.2 分离游戏对象
11.1.3 小结
11.2 添加更多游戏元素
11.2.1 添加怪物
11.2.2 添加物品和门
11.2.3 添加对象层
11.2.4 小结
11.3 总结
第12章 未来展望
12.1 智能手机系统的发展趋势
12.1.1 iOS的发展趋势
12.1.2 Android的发展趋势
12.1.3 沃Phone的发展趋势
12.2 手机游戏的发展趋势
12.2.1 手机单机游戏
12.2.2 手机网络游戏
12.3 cocos2d-x引擎的发展趋势
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。