cocos2d x教程-x能完整开发一款游戏吗

Cocos2D-X游戏引擎简介|开发技术 - 美国主机支持论坛
查看完整版本: [--
Cocos2D-X游戏引擎简介
Cocos2D-X跃居全球第二大游戏引擎 仅次于Unity摘要:触控科技在GMIC2013大会上展示了自己的成果:捕鱼达人系列全球安装量超3亿;Cocos2D-X成全球第二大游戏引擎,仅次于Unity;Cocos2D-X植入中国移动计费SDK,开发者将能在产品中加入中国移动的计费方式。目前,Cocos2D-X已成为全球第二大游戏引擎,仅次于Unity。Cocos2D-X在全球市场份额中超过25%,而在国内已超70%的份额。近日,在GMIC2013大会上,触控展示了数款触控自有游戏、触控代理游戏及针对开发者的工具、平台与服务。捕鱼达人系列全球安装量超3亿触控展台提供了多款游戏供现场玩家体验,既包括触控科技出品的捕鱼达人2、疯狂攀岩家,也包括由触控代理发行的小鳄鱼顽皮爱洗澡、乱斗堂、DNF、Templerun、叫我大魔王等。据悉,捕鱼达人系列游戏在全球范围内安装总量达到3亿。游戏代理方面,触控科技是银汉科技、我叫MT、迪斯尼产品中国重要的代理方。目前触控科技旗下游戏的日活跃用户已突破1000万,成为国内用户量最大的移动游戏发行平台。疯狂攀岩家界面截图Cocos2D-X成全球第二大游戏引擎 中国份额超70%触控科技还展出了Cocos2D-X游戏引擎、、CocoaChina开发者社区、PunchBox广告平台等与开发者相关的服务。Cocos2D-X作为一款开源免费的跨平台游戏引擎,用户分布在世界199个国家,开发者已经通过该引擎为全球用户带来了超过5000款游戏作品,其中不乏“我叫MT”、“大掌门”、“龙之力量”、“找你妹”、“保卫萝卜”等知名游戏。 目前Cocos2D-X在全球的市场份额已经超过25%,成为仅次于Unity的第二大游戏开发引擎,而在中国这一份额已超过70%。基于Cocos2D-X的免费游戏工具集CocoStudio在4月正式发布,CocoStudio提供了UI、动画、场景、数据四个编辑器。在5月1日发布的Cocos2D-X的新版本中,集成了全新Plugin-X功能。Plugin-X是一套SDK模板,能够满足开发者在社交分享、广告、支付、统计等几方面的需求,目前提供了包括admob、支付宝、flurry、友盟、twitter的SDK及代码示例,游戏开发者只需将这个Plugin-X集成进来,调用针对的协议,就可以实现对第三方SDK的调用。拥有了Plugin-X的Cocos2D-X不再是一个简单的渲染层引擎,它将承载和集成更多的工具式、一站式开发服务。Cocos2D-X植入中国移动计费SDK前不久,中国移动游戏基地宣布与触控科技达成战略合作,将中国移动的计费SDK植入Cocos2D-X中,未来开发者将能够在产品中加入中国移动的运营商计费方式。由于众多开发者的聚合及较高的市场份额,也使得很多诸如像ARM、英特尔这样的厂商主动对基于Cocos2D-X在底层给予更多的优化。触控科技CEO陈昊芝指出,以用户和开发者聚合的中国最大手机游戏平台。他强调这是一个有别于传统导流量、仅仅输出用户资源的平台。“触控致力于给开发者输出能提高效率,降低成本的工具、能力和渠道,我们更注重生态。”
1.2&&Cocos2D-X引擎的来历Cocos2D-X游戏引擎并不是最初的版本。从名字读者就能看出最早的版本其实为Cocos2D引擎版本。追溯起来,Cocos2D引擎已经有5年的历史了。在2008年3月,Ricardo Quesada发布了Cocos2D引擎的第一个版本。最初的引擎版本定位于平面游戏框架,使用的开发语言为Python语言。在发布之初,只有235份的下载量。之后的两年间,Cocos2D引擎的受众群体依然很少,很少有游戏开发者知道。说明:Cocos2D的名字是来自于引擎原创团队所在的阿根廷Córdoba市附近的Los Cocos。2008年,苹果公司在乔布斯先生的带领下进军手机移动市场。这不仅改变了手机移动市场的格局,也为移动游戏产品带来了新的平台。引擎开发团队抓住了此次机会,在2008年6月宣布将会接入iPhone手持平台,并在当月就公布了以Objective-C为基础的Cocos2D for iPhone 0.1引擎版本。此版本延续了Python版引擎的框架和设计思路。随着iOS设备市场占有率不断上升,iPhone游戏产品也成为了用户最爱的应用。截止到2008年12月,苹果网上商店(App Store)上已有超过40个用Cocos2D引擎开发的游戏。到2010年的9月份,Cocos2D引擎已经在游戏开发者中流行。许多的开发者第一次接触Cocos2D引擎,就是来自其iPhone平台的版本。此版本不仅是Cocos2D引擎当中的明星产品,它也是App Store最为成功的引擎。由于iPhone版本完善而成熟的功能,使得它在开发者中广泛传播并使用。随后《StickWars》成为第一款在美国区付费榜夺得冠军的Cocos2D游戏,这宣告了Cocos2D引擎的时代已经到来。与此同时,英国的设计大师Michael Heald为Cocos2D引擎设计了新的标志,替换了之前&奔跑的椰子&,如图1-2所示。图1-2左边的是Cocos2D引擎版本,它是基于Objective-C语言的版本。右边的就是本书将介绍的Cocos2D-X引擎。在iPhone版本发布之前,Cocos2D引擎只被少数开发者用来制作个人电脑平台上的游戏。游戏产品大多以Flash开发类型的居多。因为在个人电脑平台上,存在着许多优秀的游戏引擎,再加上Python语言比较小众,所以Cocos2D引擎并没有大放异彩的机会。直到现在也是如此,在个人电脑平台上,它并不是开发者热衷的游戏引擎。但是因为iPhone版本的出现,凭借着用户对iPhone设备的热衷,Cocos2D-iPhone版本,也变成开发者的首选。换句话说,iPhone版本的诞生是引擎发展的重要时刻。它成为了引擎体系中第一个明星。随后不久,另一个更加耀眼的明星诞生了。那就是更具历史意义的Cocos2D-X版本。Cocos2D-X引擎版本开启了跨平台开发的时代。&X&意味着Cross,表示交叉的意思。-X引擎版本为开发者提供了跨平台的支持。开发者只需使用C++语言编写一次游戏逻辑,就可以在Android、iOS以及其他移动平台运行。说明:值得骄傲的是Cocos2D-X引擎版本是由国内开发者王哲(walzer)以及团队制作的。Cocos2D-X版本之后,引擎发展进入了鼎盛时期。同一时期,美国人用C#改写成CocosNet,新西兰人Ryan Williams用JavaScript改写了HTML5的版本,中国人则用C++改写了Cocos2D-X版本。正如图1-3所示的,在全球开发者的贡献下,Cocos2D引擎衍生出了很多的版本。开发者社区也涌现出丰富的工具和编辑器,其中有Texture Packer、Glyph Designer等单一工具,也有CocoShop、CocosBuilder、Sprite Helper/Level Helper等集成式的编辑器。开发者社区还提供了大量的书籍教程、示例代码、视频培训等供开发者学习和使用。如今Cocos2D引擎各个版本还都在不断地发展和更新中。Cocos2D引擎的原始团队也受雇于Zynga公司。Cocos2D-X引擎团队也受到了来自微软和谷歌的赞助。说明:谷歌赞助了HTML5版本,微软赞助了XNA版本。目前Cocos2D引擎已经更加完善、稳定和易用,同时,拥有众多非常优秀的编辑器。各个平台的应用商店,已经拥有大量基于引擎开发的游戏。毫不夸张地说,Cocos2D绝对是移动平台领域应用最广、使用最多的游戏引擎。相信读完本书,读者也将成为众多优秀的Cocos2D-X引擎开发者中的一员。那么接下来,让我们来慢慢地体会它的强大吧!1.3&&引擎的版本Cocos2D-iPhone游戏引擎,自2008年6月发布了第一版本0.1至今已经度过了4年。4年的时间正好是一届奥运会的间隔。虽然Cocos2D引擎没有与其他的引擎竞赛,但其版本更新的速度毫不逊色。能保持如此频率的更新升级,除了来自开发者辛勤的工作之外,还得益于人们对于此款游戏引擎的喜爱。正是因为有了众多开发者的关注,才促使它成长到今天的地步。在4年的时间里,Cocos2D引擎至少推出了10个主要版本。每个版本都存在一些变化:修正了一些存在的问题,加入了新的功能等。这其中有一些重要的版本变化。0.90版本算是一次重大升级,采用了全新的类名体系。这也标志着这个平台变得越来越成熟,越来越好用。从0.99.0版本开始,Cocos2D引擎凭借丰富的功能以及简单易用的程序接口,成为了开发者的首选。Cocos2D引擎就登上了iOS平台游戏引擎的王座,进入了鼎盛时代。说明:截至日,Cocos2D引擎最新的稳定版本为2.0。Cocos2D版本是引擎发展的主旋律,Cocos2D-X版本也是按照其节奏来推陈出新的。以版本号来区分,引擎可以分为两个分支:以1开始标号的是支持OpenGL ES 1.x的,由于年代久远已经不再维护了;以2开始标号的是支持OpenGL ES 2.0之后版本的。Cocos2D-X最新的稳定版本为2.0。只有一些专属平台还存在0.X以及1.X的引擎版本。比如Windows Phone 8平台的0.13版本以及应用HTML5的0.5.0版本。说明:OpenGL ES为引擎所用的3D渲染库,它是实现跨平台的核心技术。因为Cocos2D-X引擎采用了C++语言编写,所以可以同时支持多个手持设备平台。它成为了开发者进行移动游戏产品跨平台开发的首选。另外,Cocos2D-X引擎也为使用C++语言的开发者找到了一条进入Android和iOS以及Windows Phone平台开发的捷径。1.4&&下载与安装(1)Cocos2D-X引擎的最新版本,读者可以从官方网站来下载。这是完全免费的,地址如下。//Cocos2D社区&&http://www.cocos2d-iphone.org/&&//Cocos2D-X社区&&http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download 图1-4所示正是Cocos2D-X的官方网站。在网站的页面中标签依次为新闻、路线图、任务、维基、下载、文档、讨论区、扩展和游戏。这些都是与Cocos2D-X引擎相关的内容。在新闻页面中,将会发布最新的引擎动向、技术变化以及版本更新,还有一些业内的新闻。偶尔,也会有一些开发者日常生活中的琐事。按照网站上页面的划分,从左至右依次介绍如下。(1)路线图页面展示了Cocos2D-X引擎版本的变化。对于开发者来说最主要的就是各个引擎下一个版本的发布时间。页面中还展示了引擎开发者修复Bug的时间。(2)任务页面主要是给引擎开发者使用的。里面表明了与引擎相关的各项任务。每个任务包含了引擎版本、主题内容、当前状态、开发时间、指派人员和涉及平台。读者可以通过此页面来了解引擎开发人员是如何工作的,清楚地知道开源引擎所进行的工作有哪些。(3)维基页面算是对开发者最有帮助的内容了。这里有关于Cocos2D-X引擎的基本介,还有基础的教程、示例程序以及演示Demo。不过这些内容大多是英文的。其中有一个编程语言与目标平台的对应表。还有三个版本下载的链接,C++、JavaScript、LUA三种语言的开发文档以及代码贡献方式。(4)下载页面就无需多说了吧!在此页面内包含了Cocos2D-X引擎各个版本的下载地址。其中还包括了HTML5以及XNA版本。不过此页面内只有最新的引擎版本,之前的版本只能通过代码库来获取。还有一些游戏示例项目,提供给了开发者借鉴学习。(5)文档页面就是提供了Cocos2D-X引擎版本以及Cocos2D-HTML5引擎版本的API文档。开发者可以在线查询引擎中每一个类以及函数的定义和用法。(6)讨论区页面是世界各地开发者讨论的中心。我们在这里交流、沟通、分享。讨论区可以帮助读者解决技术难题,可以发现与引擎配套的工具,可以看到别人的作品,可以找技术高手请教,可以向别人传授经验。总之在论坛中,开发者讨论一切与引擎有关的内容。(7)扩展页面则是介绍Cocos2D-X引擎配套的工具、编辑器或者开发库。(8)游戏界面则是展示的那些使用了Cocos2D-X引擎制作并且上线销售的游戏。这些游戏是由其开发者上传的。下载页面则是提供给开发者下载各个版本的Cocos2D引擎。Cocos2D-X官方网站是引擎一切信息的来源。它应该是读者经常登录的网站。虽然网站是以英文为主,但是读者也不用担心自己英文不好。在讨论区就有不少中文提问者,别忘了引擎的开发者中也有许多国内的同仁。社区网站是开源引擎重要的窗口。在这里可以获得引擎最新的消息;在这里可以结交志同道合的朋友;在这里可以解答疑惑,获得帮助;在这里可以分享自己的成就,看到别人的作品;在这里可以找到高效的工具;在这里可以找一些游戏产品的源码;在这里可以找到技术文档。所以要想成为一个引擎的使用高手,官方网站必将是读者频繁访问的地方。说明:国内有一些中文的技术论坛,对读者来说也是不错的学习和交流之地。在Cocos2D-X的官方网站的下载页面中,开发者就能看到最新的引擎版本。先不用着急下载引擎,找到适合的版本再说。引擎总在那里,不论下载与不下载,它就在那里,不离不去。所以读者首先是要明确选用哪个版本。Cocos2D-X引擎不同版本,对于开发环境也有不同的要求。根据前面介绍的内容,本书将会选择使用稳定的2.0.4引擎版本。稳定版本是经过测试的可运行版本,这并不代表着其他版本存在多么严重的问题,而是稳定版在短时间内将不会升级更新。1.4&&下载与安装(2)考虑到本书主要以学习引擎技术为主,当然会以最新的稳定版作为主要内容。否则,在一本书还没有完成的情况,测试版就被更新了,岂不就是浪费资源。读者需要明白每一个版本都是经过了测试之后,才会变为稳定版本的。本书的目的不是制作一款新颖的游戏产品来吸引玩家,而是教会广大读者掌握游戏开发的能力。所以稳定的引擎版本与先进高效的技术之间,必然会选择前者。另外,测试版本可能会有一些不完善的地方和未经测试的功能,这并不适合用来教授开发技术。注意:那些尚在开发中的测试版本,可能会有一些暂时未确定的方法接口或者部分新添加的功能。Cocos2D-X是一款跨平台的游戏引擎。这意味着开发者需要在不同平台的开发环境中编写游戏。所以如果读者想要开发iOS和Android以及其他平台,请先准备好开发环境以及设备,然后再继续后面的内容吧!在本书的讲解中,将会以Windows下的Visual Studio 2010为主要的开发环境,因为它涵盖了大多数的移动平台。它能够完成游戏主要内容的制作。如果开发者想要制作iOS系统的游戏,则需要准备一台苹果电脑了。说明:通常开发者会在个人电脑上开发一个游戏的主版本,然后再适用到不同平台。跨平台开发除了需要不同的设备和开发环境之外,对于开发者还将会需要掌握不同的编程语言。这也是Cocos2D-X引擎对于新手来说的一个入门槛。表1-2列出了Cocos2D-X支持的平台以及其所用的编程语言。在表中对各个平台表明了三个状态。&o&表示已经完全支持的平台,在主版本的引擎中就能实现开发;&i&表示只能够使用独立引擎版本支持;&w&表示开发者正在制作中,未来将要支持的内容。从表1-1中能够看到,Cocos2D-X引擎不仅仅只是支持了移动平台,对于桌面平台以及网页平台也是有所涉及的。表1-2 Cocos2D-X支持平台以及编程语言开发语言与支持平台o:完全支持的平台i:独立支持的平台w:将要支持的平台平台C++LuaJavaScriptC#移动平台iOSoow Androidoow WindowsPhone7   oWindowsPhone8w   Badai   BlackBerry QNXo   MeeGoi   Marmaladei   桌面平台win32oow Linuxo   Win8 Metroo   Mac OS Xo   网页平台HTML5  o 说明:对于编程语言的掌握,读者并不需要都会。不过,因为引擎主版本是以C/C++编写的,所以读者最好具备一些此方面的编程经验。至于其他语言,则可根据爱好选择学习。按照之前的约定,点击下载稳定版本。为了和本书内容一致,请读者下载cocos2d-2.0-x-2.0.4 @ Nov 02 2012的版本。之后的内容将会使用此版本的引擎进行讲解。当下载完成后,就会得到一个压缩包。进入解压后的目录,读者就能看到如图1-5所示的内容。这将是与Cocos2D-X引擎的初次见面。图1-5中包含了引擎的源代码、授权文件、示例程序、第三方程序库以及各种工具。
图1-5所示的内容就是下载引擎包中所有文件以及目录。在此目录当中,读者会看到许多的文件与子目录,是不是会感觉内容多得有点应接不暇?不用着急,这只是第一印象。哪有人只通过一面之缘,就能摸清对方底细的。稍后读者将会通过整本书的内容来认识它!在licenses目录中,有多个引擎版本说明的文件,其中包括了Cocos2D-X引擎以及其使用的第三方开发包的版权声明。如果读者不想研究法律,就不必查看了。其他的文件则是制作者介绍、版本说明、更新说明以及发布介绍。这些内容与制作游戏并没有太多的联系,直接跳过吧!引擎包已经提供了工程项目的开发文件。图1-5所示中间的一列最后三个就是用来应对不同VS版本的工程项目文件。为了方便引擎的使用者,包中提供了很多方便快捷建立项目的方式。针对不同的平台,开发者要创建不同的项目。对于开发工具的选用,作为Windows、iOS以及Android三大主要平台,读者至少需要安装Visual Studio、XCode以及Eclipse。本书后续的内容介绍会基于VS2010、XCode 4.5以及Eclipse 3.5的版本。注意:读者最好不要选用VS 2008版本进行开发,因为引擎开发者已经明确未来将不再支持此版本的开发环境。除了基于Windows平台开发之外,引擎也为其他平台的开发者提供了便利的工程建立方式。在Mac或者Linux平台的开发者,可以通过批处理或者Shell脚本来建立项目。这些文件就在引擎根目录当中。针对不同的开发工具,引擎还提供了对应的项目模板以及技术文档。在Mac电脑中的XCode环境下,读者就可以安装Cocos2D-X的项目模板以及文档。至于具体的步骤,将会在下个章节进行介绍。1.5&&引擎的组成作为知名的2D游戏引擎,Cocos2D-X具备的功能算得上达到应有尽有、无所不能的程度了。在引擎中甚至都提供了一些3D功能。按照模块以及功能来看,引擎中包含了画面渲染、碰撞检测、音乐音效、操作响应、内存控制、粒子效果、文件读写、UI界面等一系列的功能。这些内容,将在本书后续的章节中逐个进行详尽的介绍。其实读者只要看看本书各个章节的目录,就会知道Cocos2D-X引擎为开发者提供了哪些丰富的功能。说明:因为Cocos2D-X引擎发展从未停滞不前,所以读者看到本书时,它一定会有一些新的功能或者工具出现。Cocos2D-X引擎为开发者提供了开发游戏的基础内容。游戏开发者可以在引擎中找到与游戏制作相关的所有内容。除此之外,它还支持许多第三方的工具或者程序库,比如物理模拟库、动画工具、地图编辑器以及粒子编辑器。这些工具与程序库,能够帮助开发者更快更高效地完成游戏制作的过程。因为Cocos2D-X引擎已经拥有了广大使用群体,其中包括Zynga、Namco、GLU等国际知名游戏公司,所以越来越多的开发者分享与之配套的工具。下面简单地为读者列举一些Cocos2D-X引擎中的功能。这算是作为前期的铺垫,在后续的章节读者将会详细地熟悉它们。场景管理:采用种子树的方式来管理画面。使用流水线的方式来绘制游戏界面。场景切换:提供了丰富的场景切换效果,比如滚轴、翻页、淡进淡出。精灵以及精灵列表:精灵是游戏内容的基本元素,它被用来表现游戏中的各个物体。特殊效果:画面的透明、波纹、波动、液态效果等。动作功能:引擎中的精灵具备丰富的动作或者行为。比如移动、旋转、伸缩等。UI界面:引擎中提供了一些简单的菜单以及按钮组件。支持物理功能:引擎外接了两款物理引擎,Box2D与Chipmunk。粒子系统:用于游戏中的火焰、雪花、爆炸等特殊效果。字体功能:快速的可编辑字体绘制功能,支持TTF标准字体。支持纹理集合:引擎支持将多张纹理整合为一张纹理的功能。此功能用于节省内存,提供绘制速度。地图背景功能:支持三种地图图块拼接方式矩形、菱形以及正六边形。绘制到纹理:这是一个三维渲染技术,类似二维平面中的绘制缓冲区技术。用户交互:引擎可以响应iOS设备中的触碰以及加速度计,和Mac平台的触碰、鼠标以及键盘。跨平台功能:隐藏各个平台的差异,为开发者提供统一、完整的功能。声音模块:提供了丰富的声音播放功能,支持多种音频格式。支持脚本开发:引擎中提供了对Lua以及JavaScript脚本编写的支持。上述的条目只是列出了大部分Cocos2D-X引擎中的功能。如果读者是第一次接触游戏引擎的话,看到如此多的功能,难免会感觉到学习的压力。大可不必有如此的担心。因为Cocos2D-X引擎设计之初,就是为了让更多的新人进入游戏开发领域,所以它一直秉承着简单易用的观念。上述列举的功能中,有些内容甚至于只需编写一句代码就可以实现。再加上本书中使用了很多示例项目作为介绍,读者将会非常轻松地成为Cocos2D-X引擎的开发高手。Cocos2D-X引擎中大部分的源代码是基于C/C++编写完成的,所以开发者也主要使用C/C++编程语言来完成。不过,由于引擎提供了脚本支持,开发者也可以选择使用Lua或者JavaScript。Cocos2d-X引擎已经足够成熟,足够稳定。引擎不仅拥有众多的开发者,而且在各个平台都已存在许多游戏产品。Cocos2D-X引擎能够成为2D引擎中的佼佼者,获得玩家和开发者的热衷,完全是因为其强劲而完善的功能。Cocos2D-X具备了优秀引擎的品质:功能完善、性能强劲、多平台支持、丰富的工具、简单易用。说明:由于跨平台的特性,在引擎中还存在基于Objective-C和Java的源代码。虽然Cocos2D-X引擎总是被用来制作二维游戏,但是其底层的渲染库选用的是OpenGL ES 2.x。究其原因,无非想要通过硬件设备来提高引擎的渲染能力。以个人电脑为例,如果只是进行简单的平面图形绘制,那么通过CPU的运算就可以快速实现。但是面对色彩纷呈的游戏画面,CPU的运算就不够用了。对于那些复杂、大型的游戏,玩家就需要通过显卡来提升性能了。对于移动设备也是如此。此时就是OpenGL ES渲染库登场的时候,OpenGL ES是专门为移动设备打造的3D渲染器,它已经成为硬件领域的技术标准。Cocos2D-X引擎选用OpenGL ES作为渲染底层,出于两个明显的原因。(1)因为OpenGL ES已经成为各个平台系统的标准支持,所以选用它可以从根本上解决引擎跨平台的问题。(2)OpenGL ES渲染库能够获得来自设备显卡的支持。这是一种对游戏渲染性能最佳的提升方式。基于上述两点原因,OpenGL ES就成为了引擎开发者最佳的选择。虽然引擎的渲染库是基于三维空间的,读者也不用担心缺乏对三维空间技术的理解。因为Cocos2D-X引擎已经为开发者降低了技术复杂度,对于开发者来说几乎完全感觉不到任何3D方面的内容。开发者不需要知道画面效果是怎样用OpenGL ES代码来实现的。相比来说,二维游戏更容易开发,也更容易让人理解。而且多数情况下,2D游戏产品对设备硬件的要求更小。开发者能创建更生动和拥有更多细节的画面。开发者哪怕对OpenGL ES的技术一点不知,也仍然能够运用Cocos2D-X引擎制作出优秀游戏。现实情况也是如此,笔者曾经问过一些开发者,他们也并不懂得任何三维空间的技术,却也做出了让人称赞的游戏。这就好像我们所使用的手机。很多人并不知道它是通过怎样的技术来接听电话或者发送信号的,但依旧是人手一台,聊得不亦乐乎。说明:如果读者要想成为游戏制作技术的高手,那么OpenGL ES开发是必须掌握的技能之一。
1.6&&技术文档前面的章节内容,曾介绍了两个包含引擎的技术文档的地方,细心的读者一定会留有印象。在引擎的官方网站,提供了在线版本的API指南。以防读者忘记了,下面列出的网址就是访问路径。http://www.cocos2d-x.org/reference/native-cpp/index.html 在引擎的下载包中也提供了技术文档。不过,技术文档的内容其实包含在代码中,读者需要一个工具才能生成网页版本。这个工具就是Doxygen。它是一个C++、C、Java、Objective-C、Python、IDL(CORBA和Microsoft flavors)、Fortran、VHDL、PHP、C#和D语言的文档生成器。它可以运行在大多数类UNIX系统,以及Mac OS X操作系统和Microsoft Windows。它是一个编写软件参考文档的工具。因为此工具是从源文件提取注解来生成文档,所以开发者需要将注解直接写在代码中。这种方式可以很好地保持与源代码的同步。下面以Windows操作系统为例,讲解技术文档生成的方法。读者需要从网络下载Doxygen应用软件。读者不要搞错了平台版本,而且如果不想通过命令行来生成文档的话,记得下载包含GUI的版本。在其官方网站可以找到最新版本。网络地址如下所示。http://www.doxygen.org/ 安装的过程和其他电脑软件类似,直接点击下一步就可以了。然后运行软件,读者就会看到如图1-6所示的画面。在菜单界面中选择文件,然后打开引擎目录中cocos2d-2.0-x-2.0.4\document\doxygen.config文件。此文件就是引擎中提供的技术文档生成文件。有了它,读者就可以省去配置的过程,直接点击&Run Doxygen&按钮,很快就能够获得网页版本的API指南了,在引擎document目录将会生成一堆文件。读者可以直接点击&Show HTML output&或者通过浏览器访问其中的index.html,就会看到如图1-7所示的界面。在技术文档中,开发者可以查到引擎中每一个类以及函数。这就是引擎使用指南宝典。不过,为了考虑国际化,技术文档是英文版本。正所谓&代码无国界&,对于开发者来说代码片段还是可以看懂的。在文档中,将引擎的功能按照模块划分方便查询。开发者也可以按照字母顺序或者直接搜索,来查询类以及函数。文档中还提供了基本的类和函数的解释。有一点读者需要明确,文档的所有内容都来自于源代码。所以在源代码中,我们也能够看到同样的内容,只不过技术文档更直观和系统一些。同时,在网页中展示的类的继承关系以及引擎组成更容易理解。说明:生成的文档,可以在各个平台自由访问。此技术文档将会成为读者经常需要查看的手册。在以后的游戏开发中,如果有关于引擎中类以及函数不清楚的地方,就可以来这里寻找答案了。此技术文档只能作为一个类和函数的指南,其中并没有讲解类和函数具体的用法,这也是本书存在的价值。如何正确、有效地使用引擎制作游戏,才是开发者的主要能力。除此之外,在今后的开发中如果遇到了技术难题,这是指那些具体情况下出现的问题,读者可以选择在网站的讨论区寻求帮助。答案的一种可能是已经有人遇到了同样的问题并提供了解决方案。另一种可能是会有高手协助解决问题。如果有朝一日,读者也成为了一个有丰富经验的游戏开发者,去讨论区参与解决技术难题,也是颇有乐趣的一件事。对于英文不好的开发者,也可以去Cocos2D-X的中文社区,地址如下。http://cn.cocos2d-x.org/&&1.7&&成功的游戏按照官方的数据,市场上基于Cocos2D-X引擎开发的游戏已达三百多款。根据开源社区的保守统计,基于Cocos2D-X开发的游戏全球范围内已经突破一亿安装量。比如著名的捕鱼达人就是引擎应用成功的典范。国内知名的游戏厂商,网龙、空中网、Haypi、TinyCo、人人游戏、4399、热酷、五分钟等都在使用Cocos2D-X开发手机游戏。国外也有很多公司选用Cocos2D-X引擎制作二维游戏,比如GameLoft、Glu以及Disney Mobile。现如今在厂商和开发者的支持下,一个全职的团队全力投入到维护和发展游戏引擎。这在开源软件领域也是很少见的情况。讨论社区也是堪比淘宝客服,七天二十四小时不打烊。引擎中所有的缺陷都被迅速发现并修复。Zynga、Intel、Google及众多大公司的工程师也全面投入了Cocos2D-X的代码贡献工作。拥有如此强劲生命力的引擎,任何一个游戏开发者都不应该错过。开发者就算不用它来制作游戏,也会称赞其对游戏产业的推动。经过对Cocos2D引擎体系的介绍,我们知道它主要是针对移动平台的游戏引擎。现在移动平台市场被两大平台占据:Android和iOS。虽然Windows Phone 8被业界看好,但是它还需要时间才能占据一定的市场份额。由于主版本Cocos引擎就是针对iOS平台的,在苹果公司的网上商场(AppStore)中已经有超过三千多款游戏是由此版本制作的完成,如果加上Cocos2D-X引擎制作的游戏,那么Cocos2D引擎绝对是公认的iOS平台最佳引擎。Android市场种类较多,很难有汇总的数据,在此就不列举了。说到使用引擎而获得成功的游戏,那真是数不胜数。其中不少游戏都曾是TOP 10排名的常客,深受玩家喜爱。在官方网站上,列举了一部分游戏产品。这些产品大多是开发者主动申报的,还有一些隐姓埋名的游戏并不在统计当中。图1-8所示正是来自官网推荐的游戏列表中的截图。这些游戏大多都可以从网上商店下载。有兴趣体验一下的读者,也可以登录App Store或者Google Play下载这些游戏。在开始使用Cocos2D-X引擎之前,先来体会一下游戏引擎的魅力吧!这样当我们在制作游戏时就能轻车熟路、得心应手了。看看当中是否有读者认识的知名游戏?如果读者有一台智能手机的话,这个答案想必是肯定的。如果没有体验过的话,不妨下载一些免费的试玩版本,以此来体验一下Cocos2D-X引擎的游戏效果。这也算是为将来制作游戏做准备了。在知道了其他开发者的实现方法后,不妨思考一下当自己使用Cocos2D引擎制作游戏时,该如何利用引擎的功能来实现效果呢?就算没有正确答案,也无关紧要,因为读者马上就要开始熟悉Cocos2D-X引擎的使用技术了。1.8&&Cocos2D-X引擎的体系在前面的介绍中,读者得知Cocos2D-X只是Cocos2D引擎的子版本,引擎的架构以及类都是与Cocos2D一致的。虽然Cocos2D-X只是引擎的子版本,但是它的风头早已盖过了Cocos2D。其最显著的特点就是跨平台的特性。在Cocos2D-X引擎发布之初,只是支持了仅有的几个移动平台。而现在的引擎版本支持了众多的系统平台,涉及了个人电脑、移动平台以及网络应用。正如图1-9所示,这些适配的平台,其中大多数是由引擎开发者完成的,也有一些是来自其他开发者的分享。总之,如今的Cocos2D-X引擎仍在不断完善,尽可能地支持更多的系统平台。图1-9展示了Cocos2D-X引擎支持的平台,其中包含了一些主流的移动平台。而Cocos2D-X引擎跨平台特性,就是最大限度减少程序员重复开发的工作,以此来提高效率。引擎能够让开发者只需要编写一套代码,就可以在多个平台运行。Cocos2D-X引擎的第一个版本发布于2010年的11月。至今为止,已经发行了34个主要版本。如果以开发语言来区分的话,Cocos2D-X引擎主要为三个版本。如图1-10所示的C++、JavaScript以及C#语言版本。 Cocos2D-X引擎体系以开发语言来划分,成为了三个版本:-X、HTML5、XNA。其中-X的版本是使用者最多,也是产品最多的一个分支。它应对了大多数的平台。比如iOS、Android、黑莓、Bada、Windows、Linux、Mac,等等。它的主要开发语言就是C++。而HTML5是近期刚刚推出的版本,至今还没有成形的游戏产品。它完全是为未来技术趋势而准备的版本。XNA是早期为了支持微软移动设备而推出的版本。它需要使用微软独特的C#语言来开发。说明:如今为了更好地实现跨平台,JavaScript脚本语言可以在各个引擎版本中用来开发游戏。读者需要留意,三个分支基于的引擎版本也有所不同。XNA的版本由于已经不再更新了,只有少数的开发者在更改其中的错误。它是基于0.1.0的引擎版本。而HTML5则存在两个版本:0.5.0和2.1.0。-X作为主要分支,其版本更多一些。据说黑莓的版本,是由一个开发者经过四十八小时做出来的。不得不令人敬佩的开发者对游戏的热情啊!1.9&&Cocos2D-X引擎的版权声明免费开源是Cocos2D-X引擎最迷人的地方,也是众多开发者选择它的主要原因。简单讲,开发者不用支付一分钱,就能用到几乎是世界上最好的游戏引擎。开发者可以用它制作游戏产品,就算将来游戏产品销售获得利润,也无需支付任何费用。俗话说天下没有免费的午餐,但这次却是例外。这正是开源的魅力所在,开源是互联网传播的产物。说明:免费开源并不是没有版权,Cocos2D-X引擎属于其开发者社区。开发者可以使用Cocos2D-X引擎来进行商业开发并获得收益,但是必须要包含其版权声明。开发者可以利用引擎在各个平台编写免费或收费的应用程序。这并不需要向引擎的提供者支付任何版税或者使用费用。毕竟也是用了别人的成果,让自己赚到了钱,如果实在过意不去,那么也可以为Cocos2D-X引擎的开发者捐赠一些费用。这能够帮助引擎团队维持项目运营。Cocos2D引擎基本上是由Ricardo Quesada一个人创造的产品,后来被Zynga收购,而Cocos2D-X引擎版本则是众多开发者参与完成的。说明:在官网提供了捐赠的链接。不过自从被Zynga收购之后,引擎团队就不差钱了。详细来说的话,Cocos2D-X引擎版本是针对多平台由C++程序语言编写的。使用了最宽松的MIT开源协议,MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology,MIT),又称&X许可协议&(X License)或&X11许可协议&(X11 License),赋予软件被授权人更大的权利与更少的限制。图1-11列出了在引擎目录cocos2d-2.0-x-2.0.4\licenses下存放着的各种授权协议文件。读者可以通过文本的编辑器来查看文件内容。这里不仅放着Cocos2D以及Cocos2D-X引擎的授权文件,还有引擎中所用到的第三方库的授权文件。这些第三方库同样也是开源免费的,否则它们也不能够出现在引擎当中。为了国际通用,授权协议是以英文撰写。下面列出许可协议的中文解释。被授权人权利被授权人有权利使用、复制、修改、合并、出版发布、散布、再授权及贩售软件及软件的副本。被授权人可根据程序的需要修改许可协议为适当的内容。被授权人义务在软件和软件的所有副本中都必须包含版权声明和许可声明。其他重要特性此许可协议并非属copyleft的自由软件许可证条款,允许在自由及开放源代码软件或非自由软件(proprietary software)所使用。MIT的内容可依照程序著作权者的需求更改内容。这正是MIT与BSD(The BSD license,3-clause BSD license)本质上的不同处。MIT许可协议可与其他许可协议并存。另外,MIT条款也是自由软件基金会(FSF)所认可的自由软件许可证条款,与GPL兼容。开源的含义,就是开放源代码。一些人将开放源代码认为是一种哲学思想,另一些人则把它当成一种实用主义。开放源代码意味着制作者将其在互联网发布,来获得广泛使用。在发布之后,其他的开发者也有机会成为游戏引擎制作的参加者。地球上的任何人都可以提出对源代码的修改或者建议。同时,应用程序的开发者也可以通过阅读Cocos2D-X引擎的源代码来进行学习,甚至可以在必要的时候去修改引擎中的代码,来添加想要的功能。这并不是每一款引擎都能做到的。多数授权引擎,并不会为开发者开放源码。当开发者使用授权引擎制作游戏时,总有一种雾里看花、不知真假的感觉。如果读者喜欢阅读代码,那么完全可以近距离接触Cocos2D-X引擎,对其内部结构搞得清清楚楚、明明白白。这也不是一件不可能的事情。说明:读者完全可以放心地使用这个开源引擎,不用顾虑其可能存在的内在限制或者法律约定。
文 / 李成,郑鑫移动互联网浪潮正在彻底改变人们日常的生活习惯和生活方式。相应的,基于移动终端和感应交互的游戏,也为人们带来了全新的游戏体验。本文,我们将结合目前流行的cocos2d-x引擎,使用C++语言,基于iOS平台,和大家分享iPhone、iPad上游戏客户端的构架与实现。游戏架构与实现目前,很多基于cocos2d-x的代码基本上仅是对引擎功能的使用,完全不能按照游戏项目的标准来参考。作为游戏项目代码,不仅需要实现游戏的诸多功能,还需要从架构层面,从模块设计的角度来思考和设计,使代码具有更好的复用性和拓展性。对于游戏客户端,按照功能模块的区别可分为:引擎封装层模块、游戏数据管理模块、应用程序配置模块、日志记录模块、网络管理模块、消息事件机制模块、输入输出控制模块、音效管理模块、UI系统模块、逻辑系统处理模块、调试器控制模块等。针对不同类型的游戏,通常只需要单独实现最上层的游戏逻辑系统,而剩余的模块完全可以复用。下面将详细讲解各个模块的职能与实现(暂不包含游戏逻辑系统)。引擎封装模块(EngineSystem)为了减少客户端代码对cocos2d-x引擎的依赖程度和降低耦合度,我们建立了引擎封装层模块,将引擎必要的初始化、逻辑更新、渲染和资源管理等操作全部交给引擎封装层处理,使客户端的其他模块不需要过于依赖引擎层。同时,为了避免客户端代码中频繁、直接地调用平台相关的诸多功能,我们还将一些平台相关的功能全部封装在引擎封装层模块内。cocos2d-x功能很多很强大,但在开发时,需要根据项目需要有条件选择引擎功能(当然,cocos2d-x本身设计实现的很好)。例如,在引擎封装层内部,我们仅使用了一个CCScene对象,在设计之初就刻意避免处理多个CCScene之间的初始化、跳转、销毁、更新等操作,极大地简化了逻辑层代码,降低了复杂度,且到目前为止,在表现效果上没有什么影响。 数据管理模块(DBSystem)在开发过程中经常会存储和读取大量的静/动态数据,对比我们针对这部分设计了DBSystem模块,专门进行游戏数据层的管理。每种类型的游戏数据都会派生出一个具体的类,如音效数据管理器、图片数据管理器等。这些数据管理器都在DBSystem内部统一进行初始化、更新和销毁,并各自使用单例模式。外层使用时,直接通过其类进行数据读取即可,无须关心其初始化、逻辑更新、销毁等操作。同时,为了时刻对游戏的静态数据进行监控,所有的数据模块都暴露了获取其所包含数据的接口,这样我们就可以在游戏中随时获取数据层的信息,方便进行统计和监控。应用配置系统(VariableSystem)开发者一般需要对应用属性进行可配置化处理:一方面可以方便开发者快速开启/屏蔽某些功能;另一方面能更人性化地支持用户偏好设置。目前,我们根据类型的不同,建立了账号、网络、日志三种配置文件,分别对游戏账号、游戏功能信息、游戏网络配置信息、游戏日志配置信息进行动态设置,全部使用XML进行数据存储和读取。在开发中通常需要保存大量临时数据,这些数据往往被放在各个模块内部,如果其他模块需要使用,就造成两个模块间强行依赖,增加了耦合度。所以,我们将所有临时需要的数据统一定位为内存配置数据,放在我们的应用配置系统中,其和账号、网络、日志配置文件的区别在于:基于文件配置的属性数据都需要在程序退出时强行写回文件,而基于内存配置的属性数据无须保存。音效控制模块(SoundSystem)iOS平台并没有十分完善的音效引擎,而一般自行实现的音效库都难以进行拓展和支持跨平台,所以我们直接选取流行的FmodEx引擎,进行游戏音效的播放和管理。同时,结合FmodEx提供的强大接口,可以很方便地实现声音大小设置、暂停、循环、3D音效等操作,完全满足一般游戏的需求。在游戏中,一般都需要频繁的播放多个音效,为了提高效率并节省内存,我们在逻辑层对每一个音效文件都使用了引用计数技术,对同一种音效文件仅需通过计数的方式维持一份实例即可,同时播放的多个相同音效,实际上都是使用同样的一份实例而已,无须单独创建音效实例;另外,通过引用计数,很好地解决了音效资源回收的问题,当音效资源计数为零时,即表示其可以被回收,对应的资源,占用的内存也将被释放。日志系统模块(LoggerSystem)为了方便在开发、运营期对出现的问题及时进行定位和排查,对游戏中关键的处理流程都需要进行日志记录。在客户端,我们仿照Log4J的方式,实现了分级(Trace级、Info级、Error级等)、分文件、分输出方式的强大日志管理。游戏的日志模块,结合了应用配置系统,完全实现了动态化配置,通过对日志配置文件进行设置修改,开发者可以很方便地设置日志的开启等级、输出方式、大小拆分、输出名称等。另外,对于客户端日志模块,无须过多考虑其性能问题,所以我们的日志模块,完全是简单地在主线程里进行文件写入,没有多开线程进行文件操作。消息事件系统模块(EventSystem)考虑到客户端框架总体的拓展性,我们完全使用事件驱动模型(Event-driven)来设计和开发,将客户端中事件的触发时机和具体处理逻辑彻底分隔开。游戏的各个模块,仅需要注册、监听和实现其关心的消息事件,而无须关心事件何时被触发,降低了总体耦合度。目前游戏中所有UI面板的隐藏/显示、事件响应、音效的播放/停止、游戏流程的切换、游戏角色状态迁移等,完全通过事件驱动方式开发;同时这种基于事件的处理方式,为项目使用动态脚本拓展提供了支持:脚本层省去对逻辑代码的大量直接调用,通过消息事件完成脚本层和逻辑层的交互调度,大大简化了开发的复杂度。UI系统(GUISystem)cocos2d、cocos2d-x这两种引擎本身并没有提供太多UI控件,仅提供了按钮、进度条等基础控件,如果想使用更多的UI控件,需要开发者借鉴或使用其他成熟的GUI引擎,如CEGUI等。在我们的UI系统中,充分借鉴了CEGUI的设计思想。整体上,将游戏中有关联的UI控件集中到一个个单独的CCLayer上,组成多个独立的Layout,也就是我们在代码中定义的IWindow类。每一个IWindow类,都包含其自身的根面板(CCLayer)和众多依附在其上的子UI控件。通过IWindow,我们实现了对所有UI布局Layout进行统一的接口调用和处理,如初始化加载、消息注册与响应、隐藏/显示、销毁等。虽然我们在之前的多个项目开发中提倡将窗口的逻辑实现全部交给动态语言(Python&Lua)来实现,但对于某一些UI功能,并不适合使用脚本来进行逻辑拓展。对于这类难度比较大、复杂度特别高的UI处理,使用原生的C++开发可能更为合适,所以,在UI系统中,针对这两种不同的需求,我们对IWindow进行了拓展:对需要使用脚本来拓展逻辑的Layout,派生出UIWindowByScript类,其内部主要通过消息事件机制将对应窗口的初始化、加载、逻辑更新、事件处理、销毁等操作传递给对应的脚本逻辑处理;对于需要使用C++来进行处理的Layout,直接根据功能需要,从IWindow上派生出各个具体的实现类。目前的UI布局还未完全通过外部配置文件动态实现,我们将借鉴CEGUI的处理方式,将所有UI的布局信息、控件属性与事件响应处理等全部使用外层配置文件实现,从而将这些静态信息和程序分隔开,达到动态配置的目的。网络管理模块(NetSystem)考虑到传统类型游戏和即时竞技类游戏的差异性,在设计网络模块之初,我们就同时支持了UDP和TCP两种通信方式。为了支持UDP通信方式,我们使用监听器模型,在客户端中设计了UDPAcceptor管理器,专门进行UDP通信方式的初始化、操作和销毁。同时,考虑到UDP通信方式的特殊性,在UDPAcceptor内部,我们对收到的数据进行了杂乱包的过滤,并且使用序列号技术(Sequence Number),实现了UDP数据包先后顺序的管理和纠正,确保最终交给逻辑层处理的数据包,都是完整可靠有序的。对于TCP通信方式,我们使用连接器模型,在客户端中封装了TCPConnector管理器。为了解决粘包、拼接、临时数据拷贝等问题,我们在内部设计了特殊的MemNode存储结构,将读取的数据全部存储到MemNode里,其内部根据当前数据的读、写指针位置来进行有效数据定位,确保最终交给上层逻辑使用的数据包,都是完整独立的数据。网络模块面临着频繁的数据接受和发送,如果不进行控制,频繁的new/delete对性能会有一定影响。因此,我们在网络系统内部使用链表式内存池技术,对接收和发送的数据包都通过该内存池进行统一分配、回收和管理,从根本上解决了频繁的new/delete。另外,在NetSystem内部,使用网络编程中传统的Selector模式进行网络连接的监听、轮询、读取和发送。目前市面上很多游戏对网络模块都是单开线程进行处理,而在我们考虑到多线程同步、数据串行化等问题,所以尽量避免了多线程的方式,使用非阻塞式I/O,全部在逻辑主线程里面进行网络控制管理。输入控制系统(InputSystem)因为cocos2d-x本身提供的UI控件都有其自身的输入响应机制,所以我们很难直接修改游戏的输入控制系统。此处我们讨论的输入控制系统,主要就是针对CCLayer进行的Touch和Accelerate事件控制与管理。在游戏中,为了对Touch和Accelerate事件进行统一的管理和处理,在整个客户端的窗口上,我们特意设计了一个最底层的UILayer(也就是所有UI布局Layout的根窗口)。整个游戏中,仅这个根窗口的CCLayer监听了Touch和Accelerate事件,其内部对两种事件进行捕获和处理,然后将对应的事件,存储在内部的输入消息队列中,通过消息事件,通知当前各个游戏管理器调度和处理。调试器系统(DebugerSystem)在游戏过程中,需要时刻对游戏内的各项性能指标进行监控,判断各个模块、各个环节是否存在着重大的性能问题。因此,我们在客户端中,彻底将调试、监控作为一个核心模块来设计开发,目前主要分为网络模块调试器(NetDebuger)、渲染模块调试器(RenderDebuger)、逻辑模块调试器(LogicDebuger)三大模块(可根据需要动态增加)。对于NetDebuger,主要监控当前网络上下行数据量、接受和发送的数据包个数、网络接受和发送的耗时信息等,并通过曲线图展示;对于RenderDebuger,主要用于监控当前客户端渲染的具体信息,例如DIP数量、像素填充率、渲染顶点数量等,开发者可以通过这些渲染引擎判断当前渲染是否存在性能问题;对于LogicDebuger ,管理和统计所有逻辑对象个数、大小、逻辑处理耗时等。我们在实际开发中,通过自行开发的游戏逻辑层调试器系统,结合XCODE本身提供的强大监控工具,可以非常完善仔细地监控各个模块的详细数据、内存、处理耗时等信息,完全满足一般的开发监控需求。引擎改进与公共代码库游戏中的UI面板,难免会使用到模态窗口,但cocos2d-x引擎并没有提供类似的功能,为了避免在逻辑层编写大量冗余代码来实现该功能,我们需要对cocos2d-x引擎进行必要的修改:在cocos2d-x消息事件处理(CCTouchDispatcher)内部,存在一个事件响应队列,对于所有关心Touch事件的对象,按照优先级从小到大排序,优先级越小,则越优先调度。所以,如果我们需要实现模态窗口的功能,需要自己管理所有UI控件的消息响应级别,并且按照控件之间的父子依赖关系,实现一个类似树的优先级结构,每次需要实现模态窗口时,只要确保其对应的事件优先级在最顶层,并且在处理完消息之后,屏蔽掉该消息,避免继续传递到下面的窗口。考虑到不同开发者对操作系统、底层接口等熟悉程度不同,为了降低开发成本,我们开发了一套基于iOS平台的基础代码库cobra_ios,其内部封装了开发中常用的各种接口:整套完善的线程安全容器,如数组、单链表、双向循环列表、队列、二叉树等;各种线程控制模型和串行化接口、各种内存管理技术、数据解包器DPacket和数据组包器EPacket等。在开发中,所有开发者都统一使用该基础库,使用相同的接口处理,方便开发且提升效率。拓展cocos2d-x VS. Cocoa前文提到,cocos2d-x引擎本身没有提供太多UI控件,除开发者自行实现外,我们还可以使用iOS标准的UI控件。熟悉Win32、MFC的朋友都知道,Win32标准控件很难与DirectX结合,因为两者是完全相同的渲染机制,但在iOS平台,cocos2d-x与Cocoa自带的UI控件完全兼容,并可以相互调用,例如在游戏登录界面,我们就可以使用Cocoa自带的NSTextField控件来实现账号和密码输入框。因此,对于游戏开发者来说,学好Cocoa很有必要。其他由于iOS平台不支持以动态链接库的方式使用第三方库,所以我们不可能选择Boost+Python的方式进行脚本拓展,不过我们还可以选择Lua等其他可行性比较高的动态语言。“工欲善其事,必先利其器”,对于中大型项目,除开发客户端外,一般还需要单独开发编辑器进行关卡、场景等编辑处理。对于编辑器的开发,由于引擎cocos2d-x本身完全跨平台,所以我们完全可以使用自己熟悉的语言和平台来开发,选择使用Cocoa、MFC、C#等熟悉的语言,只要确保所有最终的关卡场景数据可被跨平台读取即可。总结移动时代,游戏的操作方式,已不仅仅限于传统的鼠标键盘模式,随着触摸、摄像、语音、重力感应等更多操作形式的普及,也为游戏带来了前所未有的机遇和挑战。作者李成,网名关中刀客,曾参与制作过多款端类MMO、Web Game等游戏项目,目前热衷于移动设备的游戏制作。作者郑欣,游戏客户端程序员,参与制作多款游戏项目,曾供职于GameLoft北京手游部门、盛大游戏老牌游戏工作室,现任职于腾讯游戏,负责拓展国际业务。
查看完整版本: [--
Powered by
Time 0.084076 second(s),query:2 Gzip enabled}

我要回帖

更多关于 cocos2d x教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信