用cocos2dx开发的游戏可以申请软件著作权怎么申请吗?

发信人: AspireDylon (Aspire青梅煮酒), 信区: ParttimeJob标
题: [实习生]招聘unity3d开发、cocos2dx前端开发、编辑策划实习生发信站: 北邮人论坛 (Fri Aug 23 19:11:14 2013), 站内鼎讯互动(北京)科技股份有限公司成立于2002年,多年来公司一直专注于手机娱乐的研发与创新,成功研发了横跨WAP、JAVA、Symbian、Android、MTK、IOS等多个应用平台的手机游戏产品。目前已经在国内上市。目前公司拥有了上百款软件著作权产品;成功注册了商标计21项。我们崇尚团队精英化,目前公司聚集了技术,设计,产品,运营,市场方面的游戏精英们,我们崇尚的文化是: 坚持理想,脚踏实地,拼搏进取,付出利他。 我们设立的期权池是互联网公司中最多的,也设立了高额的项目利润奖金。我们相信:谁创造了奇迹,荣誉和价值就应该属于谁。 现招聘如下人员:unity3d开发人员任职需求1.参与过多个unity3D商业项目(有个人作品者优先)2.熟练掌握Unity3D引擎和UI与动画编辑器的操作3.擅长C#脚本编写JS脚本编写4.适应高效率工作,认真积极投入.善于团队协作
cocos2dx前端开发人员任职需求:1、6个月以上的c
实际开发经验2、有 Cocos2d 或 Cocos2d-x 或 其他游戏引擎 使用/开发经验3、参与或主导过手机游戏程序开发( Android, Ios, J2ME/KJava,Brew, Symbian ) 4、熟悉Socket 及 HTTP 协议者优先5、有游戏工具制作经验者优先 策划任职职责:1、根据手机游戏市场及目标消费群体需求,提出产品创作理念或参与提高已有的产品概念,制定策划方案;2承担手机单机游戏的策划和脚本撰写工作,包括不限于:游戏策划案主体架构与细节设计,任务剧情编写、游戏对白撰写,数值设定,地图编辑等;3、掌控游戏策划方向,确保游戏的乐趣元素和赢利性,各系统平衡性;4、负责策划工作的执行,在游戏设计的每个阶段,充分与程序、美术、运维等相关人员协调并讲解设计意图;5、关注游戏开发每个细节,追求最高品质画面、音效、UI设计、AI及游戏平衡性等。任职要求:1.热爱游戏,愿意终生投身游戏行业。2.具有丰富的创造力和想象力,能够从旧的的玩法中推理出新的玩法。3.一定的逻辑分析能力和数理能力。 全职者工资面议,实习者要求跟着完整做一个项目,每周工作5X8 小时。实习工资每月4000元,能力突出者酌情添加。有意向的同学请发送简历至邮箱:
真诚希望北邮的同学加入
相关专业最新招聘信息
热门招聘信息
     
     『 不要让任何事情成为你不去学习的理由!』 —Himi
【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别;
本站文章均为
原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接:
可能很多童鞋有点疑惑-。 -昨天刚写了如何搭建Cocos2d-X开发环境,这一篇就开始总结了。。。。。
不得不说要说总结,因为Cocos2d-X的代码和Cocos2d-iphone两个引擎除了语言不同外(Cocos2d-X使用C++,Cocos2d-iphone使用Object-C)可以说没有其他差异=。 =
下面Himi举例对比几段代码来说明吧:
创建添加一个精灵代码对比:
使用Cocos2d-X:
//---------Cocos2d-X代码部分--
//创建一个精灵
CCSprite *spriteTemp =CCSprite::spriteWithFile("icon.png");
//设置精灵的坐标
spriteTemp-&setPosition(ccp(size.width*0.5,size.height*0.5));
//将精灵添加到layer中
this-&addChild(spriteTemp,1);
//---------Cocos2d-X代码部分--&&&& //创建一个精灵&&&& CCSprite *spriteTemp =CCSprite::spriteWithFile("icon.png");&&&& //设置精灵的坐标&&&& spriteTemp->setPosition(ccp(size.width*0.5,size.height*0.5));&&&& //将精灵添加到layer中&&&& this->addChild(spriteTemp,1);
使用Cocos2d-iphone:
//---------Cocos2d-iphone代码部分--
//创建一个精灵
CCSprite *spriteTemp =[CCSprite spriteWithFile:@"icon.png"];
//设置精灵的坐标
spriteTemp.position=ccp(size.width*0.5,size.height*0.5);
//将精灵添加到layer中
[self addChild:spriteTemp z:0 tag:1];
//---------Cocos2d-iphone代码部分--&&//创建一个精灵&&CCSprite *spriteTemp =[CCSprite spriteWithFile:@"icon.png"];&&//设置精灵的坐标&&spriteTemp.position=ccp(size.width*0.5,size.height*0.5);&&//将精灵添加到layer中&&[self addChild:spriteTemp z:0 tag:1];
添加一个粒子代码对比:
使用Cocos2d-X:
//---------Cocos2d-X代码部分--
CCParticleSystem *tempSystem =ARCH_OPTIMAL_PARTICLE_SYSTEM::particleWithFile("himi.plist");
tempSystem-&setPosition(ccp(100,100));
this-&addChild(tempSystem);
//---------Cocos2d-X代码部分--&& && CCParticleSystem *tempSystem =ARCH_OPTIMAL_PARTICLE_SYSTEM::particleWithFile("himi.plist");&&&& && tempSystem->setPosition(ccp(100,100));&&&&&&&& this->addChild(tempSystem);
使用Cocos2d-iphone:
//---------Cocos2d-iphone代码部分--
CCParticleSystem *tempSystem =[ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"himi.plist"];
tempSystem.position=ccp(100,100);
[self addChild:tempSystem];
//---------Cocos2d-iphone代码部分--&&CCParticleSystem *tempSystem =[ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"himi.plist"];&&&& tempSystem.position=ccp(100,100);&&&&&&[self addChild:tempSystem];
OK,不在举例了,通过以上随便举例的两段代码童鞋们很清楚的看出来,基本上没有差异。。So~这也是Himi没有在更新Cocos2d-X博文的必要,以后主要会继续更新Cocos2d(Cocos2d-iphone)博文的,以后童鞋们不管是做Cocos2d-X还是做Cocos2d-iphone都可以看我的【iOS-Cocos2d游戏开发系列博文的】谁让它们通用呢 =。
这里还有三点要说下:
第一:现在很多游戏公司都趋向于Cocos2d-X引擎开发游戏的趋势,不得不说Cocos2d-X多平台平移确实很诱惑人,而且通过网龙《91部落》手机网游的成功发布,不得不说Cocos2d-X已成熟!
第二:不少童鞋肯定会很想知道Cocos2d-X能多平台平移,那么平移稳定性如何?
通过Himi的了解,Cocos2d-X开发都会使用统一的C++语言开发,例如在iOS开发中使用Xcode+cocos2d-X,在Android上一般使用Eclipse+Android NDK+ADT….
其实总结一句,Cocos2d-iphone并不像很多童鞋认为的只要的一人开发就可打包多平台包这样子~ 如果说用一句话更贴切的形容Cocos2d-X,Himi会用“Cocos2d-X代码通用”来形容;
从CC(CocoChina)上我看到王哲walzer(cocos2d-x 游戏引擎作者)在回复一童鞋问题时候这么说的:
问:关于如何打包cocos2d-x程序的问题
本人新手,想请教一下如何将Cocos2d-x win32的程序打包成iphone能够运行的程序,请各位大大不吝赐教!谢谢!
王哲walzer 答:win32上只是让你调试方便,要发布到appstore上,你还是得有个mac机,装好cocos2d-x template,新建工程,然后把win32上代码拷过来,手工地加入xcode工程里面,编译运行
从上面的对话可以证实Himi所说的Cocos2d-X是代码通用! OK,不多说了,大概就说这几点吧,继续忙了~
微信扫一扫,打赏作者吧~
街区小告示
技术开发交流群
? 【Unreal Engine】
? 【React Native】
? 【Cocos Creator】
? 【Cocos2dx】
? 【C2dx_Lua】
总有你想找的
小广告先森
小广告先森订阅游戏世界!请点击上面蓝字网易刘然:这两个都用过很长时间,大多数人没说到点上。。。游戏引擎的核心竞争力在哪里?在于工具链的完备性。现在的游戏行业上,开发效率才是王道,用好用的引擎,比竞品更早发布,更快迭代,才是生存之道。Unity3D具有目前几乎最方便使用的编辑器,能够极大的提升整个开发过程中的协作效率,策划可以实时改变数值观察效果,美术资源可以被更快的无缝整合。而这些东西在cocos里面是需要程序员手工实现的,而且实现出的还多是个不好用的东西。cocos现在官方出的工具也就仅仅是勉强能用,很多莫名其妙的坑在里面。Unity3D跨平台发布游戏十分容易,所有的美术资源都会被进行合理的自动压缩处理。换成cocos?纹理太大手机黑屏了你都不知道为啥。再其次,说到Unity3D,大家都觉得这个开发3D游戏比较好,觉得cocos更加适合2D。这其实是个广泛的误解,目前版本的Unity3D已经具有了完备的2D游戏开发能力,而且开发的可以比cocos更快更好。在Unity3D和cocos的对比上,我真的觉得不能仅仅把他们当作工具来看。选择哪个游戏引擎入门就像选择哪一种编程语言入门的情况一样,产生的习惯和观念会有很长时间的影响,这就好比用lisp入门编程和用php入门编程能产生的区别一样大。因为说实在的,cocos基本不能算是个完整的引擎,用它入门游戏开发对于养成游戏引擎的观念是有害的。我见过cocos用习惯的人在用别的引擎时的各种问题,缺乏引擎观念时人往往会分不清什么事是引擎该做的,什么事是自己该做的,最终会用代码去代替引擎的固有功能,使得项目缺乏应有的可维护性。综上,你老师说的对,我真的不知道现在为什么这么多人还推崇cocos。对于你来说,作为学的第一款引擎来说,Unity3D可以让你对游戏引擎有个更好的概念,等你掌握清楚了想再去看cocos也不迟。当然,以上一切的一切建立在你的编程水平已经达标的基础上。策划朱康:我一直认为,处在游戏行业要具有一颗玩心,你现在正在过cocos2d关卡,听到老师说,Unity3D的关卡奖励高,想放弃现在的cocos2d进度,转战Unity3D副本,千万别这样!刚看了你的专业数字媒体技术,也是一个万金油专业,如果你主打方向是游戏程序员,最好还是把cocos2d熟悉后,能独立做些小游戏后,发布到ios后,再转战Unity3D副本吧。在游戏行业不管是程序、美术、还是策划,人家看的都是你的作品。再华丽的简历词藻也比不上一个普通的产品重要。所以希望你透过现象看本质,引擎这块真的不重要,一大批爱好游戏的创业者,并没有去做游戏研发,而是去做了引擎开发,为游戏开发者提供服务来盈利。这批人大概都是受到了”旧金山挖金子“的启发,就是我不挖金子,我为挖金子的人服务,来赚取他们的金子。以此可见,以后的游戏引擎会越来越多,我很同意排名第一的回答,你先学好程序内功,将来上手什么引擎都是非常快的。不要纠结在cocos2d和Unity3d引擎的选择上,我之所以建议你把cocos2d学到能出普通游戏产品后再转Unity3D,是不想让你培养自己的浮躁心态,干游戏这行,如果浮躁了,那么是干不好游戏的。好了,说教完毕,下面看例子。--------------------------------------------------------------------cocos2d会被淘汰?这个真不会!不同的人学cocos2d是用在不同的方面,例如一个UI设计师学cocos2d是为了拿一份高工资,当初去年年初,成都为cocos2D项目支持的UI职位15K难求,许多人转,结果今年8K左右就能招一个用cocos2D不错的UI了。就像选热门专业一样,现在的热门未必就是热门,这是不是坚定了你转Unity3d的心思,那么好吧,我泼盆凉水,Unity3d从2012年兴起,到2013年大火,由于上手简单,脚本丰富,太多的人已经使用Unity3D做出了非常多的游戏,现在上海,Unity3D程序薪水,4k、8k、10k、12k的居多,这里我单指借助Unity3D引擎入行的程序,已经在职场打滚多年的程序除外。所以我想表明的观点是,只有技术才能决定你的薪水,引擎决定不了你的薪水。但是凡事都有例外,由于Unity3d必须使用自己的特效系统来制作游戏特效,所以现在的Unity3d对人才加成的红利在于特效师。如果你现在专攻Unity3D特效,熟悉粒子编辑器,能做出普通水准的特效,那么年后出来实习,要价10K,也是有公司要的,但是仅限明年上半年。(如果看到此文的有Unity3D特效师,如果15K以上的起薪您能满意,请私信我,唉,我也知道肯定有Unity3d特效师会嘲笑我,”我们光在家做外包一个月也有几十K的收入,稀罕你15K的起薪么,对了上次做了20个刀光特效,承惠5K,谢谢)总结:&引擎这些工具,我们是永远跟不上别人的脚步的。你现在需要学习的是什么?1、精通一门语言(从语法,到多线程,到数据操作,到网络等等方面)。2、掌握数据结构与算法。3、熟悉设计模式。4、多看他人的游戏源码,学习下来。学习一些以一变应万变的,会让你在以后面对所以问题不会感到无力。以后你也不会问选择哪个引擎的问题。COCO,unity等等是标,不是本,是加分项而不是基础分。我见过不少没有语言基础的直接上手学习UNITY的,恩,是学过一段时间,但是,当我看见问他们“事件”,“委托”,“四元素”,&线程池&“计数器”等等名词时的表情,我知道没有基础给他们带来的苦果。这样的程序员,也只是从一个地方换到另一个地方的码农。当你自信满满的以为学好了UNITY就能找到工作时候,人家笔试提上一堆的数据结构与算法,指针,设计模式,网络,数据库,少年,你怎么办?切记,把UNITY,COCO当做工具,把任何语言当做工具。unity,COCO只是加分项,如果你基础分没修满,这个时候是考虑多修基础分的时候,而不是考虑多修加分项的时候。-FOR A GAME PROGRAMMER游戏世界(youxishij) 
 文章为作者独立观点,不代表微头条立场
的最新文章
当前,全球电视游戏行业的市场规模日趋壮大,电视游戏作为一种游戏形式,在国外早已发展成熟,并逐渐成为游戏市场的主体,而在国内,由于长期受到政策制约,发展一直缓慢。
近日,韩国越来越多的街机游戏试图在手游界里分一杯羹,而这些产品能否成功也成为了最近业内最热门的话题。
近日,外媒对如何在中国手游市场取得成功,进行了总结,得出六大法则,做到这些,就可以在中国手游市场立足。来看看,老外是如何看待国内手游市场的吧!微博用户“装甲战兔”是第一批发现苹果中国区商店出现1元应用的人,11月18日23点57分,他在微博上发布了一张App Store截图,在图片中,手机游戏《瘟疫公司》的价格是1元人民币,而不是此前的30元人民币。索尼PlayStation业务美洲区负责人表示,虚拟现实技术两年后就将彻底改变游戏市场。该日本电子公司打造的Project Morpheus虚拟现实头盔也将迎战Facebook的Oculus Rift。王健林在接受彭博新闻社采访时表示,万达集团有兴趣收购电影《饥饿游戏》出品方狮门影业,但狮门影业方面只愿意出售少数股权,洽谈还处在初期阶段,可能无法达成协议。王健林还称,万达也在协商投资米高梅电影公司。米高梅发行了007系列影片。年近40岁的李敏(化名),原本在北京有一个相当不错的工作,每个月的收入将近1万元。他还有个相当不错的家庭,妻子对他特别好,两个孩子也听话。用这些年在北京的积蓄,他在老家买了房。只因为两年前的一次经历,生活里的这些美好都要毁了。记者问了腾讯副总裁吕鹏一个问题:在微信、手Q两大王牌渠道用户量已经逐渐见到顶板,增长开始放缓后,但与此相对的是,这两大渠道的游戏却是越来越多,其他的项目接入的也越来越多,在分子不变的情况下,分母越来越大,单个产品所得到的利益也就越来越小,腾满满的两本纯手工书写文字接近20万字。大量的游戏分析、感想、随想,其中有一篇最重要的,接近10万字的《自传》记录了我从第一次接触游戏到初中毕业的几乎所有和游戏有关的大事万万没想到,我们现在竟然有太多自己喜欢的应用了。各大应用商店已经变得拥挤不堪,开发者们迫切想要找到办法让自己的游戏和工具脱颖而出。于是,应用安装广告成为了移动平台公司的核心收入来源。游戏引擎的核心竞争力在哪里?在于工具链的完备性。现在的游戏行业上,开发效率才是王道,用好用的引擎,比竞品更早发布,更快迭代,才是生存之道。即使是打魔兽,只要你肯钻研,不断提高不断学习,不断的追求更高的水平,你就会遇到高水平的人,这些人脉与现实中的人脉一样可以帮到你,然后你把在魔兽里学到的方法教训运用到其他领域中,会因此受益Twitch,这家全球游戏视频流媒体的霸主,终于迎来一个值得警惕的对手:Valve 旗下的 Steam Broadcasting。12月3日,文化部官网发布第二十二批违法违规互联网文化活动查处工作,对提供含有宣扬色情、赌博,违背社会公德等内容的互联网文化活动下发了查处名单,重点涉及手机游戏平台提供的游戏产品和网络动漫网站提供的动漫产品。手机应用市场百度、腾讯等公司均在什么?!!游戏越傻,人们越爱玩!真是万万没想到。坦诚而言,在郭敬明近些年在文学、电影、社交媒体领域积累了强大的影响力优势下,3000万成本的手游推出之后,郭敬明的这边买卖会亏本的可能性几近为零,但要谈及郭敬明这款“开创或记录一个时代”的游戏,其要想成功的可能性也是微乎其微,为何郭敬明的小中国的手机游戏市场一直在经历爆炸式的增长,并预计将最早在2015年之前超越美国市场。独立研究公司Niko Partners最新研究表明,2014年中国的手机游戏市场将增长93%达到29亿美元,从年将以37.6%的年复合增长12月9日消息,盛大游戏宣布,公司代理首席执行官张鎣锋关联公司亿利盛达投资控股的母公司同意牵头组建新财团对盛大游戏进行私有化。「最终幻想 XV」首次宣布开发是在 2006 年,现在仍在开发中,如果参考该系列之前游戏的成本,预算估计达到了数千万美元了,而相比之下「怪物弹珠」只用两个星期就完成了初期样本的开发。这篇东西说起来不该是一个记者份内的文章。尽管我并不十分瞧得起记者的所谓职业,但是谁又能说这个职业也不是没有着自己的本分呢?所以,我只能说,我写的只是一个个人化的回忆。除去获得官方公开的数据;通过适当或者不太适当的途径获得游戏内部数据,源码或者策划案之外;大多数时候,也只能依靠反推这个方案了——显而易见的这是一种相对而言最为可行的探求黑箱内部的方案。今年以来传统公司纷纷加入并购手游公司行列。国内A股公司山水文化(600234)昨日晚间就发布公告,宣布以支付现金方式分期购买成都掌沃无限科技有限公司100%股权。游戏直播目前尚没有成熟的商业模式,大多都是处在烧钱烧流量的状态。电子游戏竞技又被称为电子竞技,现正在全美各大高校中风行起来,甚至连哈佛大学(Harvard)和佛罗里达州立大学(Florida State University)的学生对此也十分热衷。最大的一个大学电子竞技联盟今年新加入了近 4400 名学中国页游公司正在迎来收购狂潮。12月3日,顺荣股份发布公告称,公司于12月2日收到了证监会出具的《关于核准芜湖顺荣汽车部件股份有限公司向李卫伟等发行股份购买资产并募集配套资金的批复》,该批复核准公司向李卫伟发行7475.15万股股份、向曾开互联网医疗的部分公司已经开始切入严格意义上的诊疗环节,而游戏领域的投融资活动并不十分活跃。 2014 年对于游戏领域是不平凡的一年,移动游戏变的越来越火热。纪念碑谷和炉石传说显然是完全不同的两类游戏,他们会产生怎样的碰撞?由此带来的是内容基本靠引进,但引进又要遭遇审批关卡,看看Xbox One目前在中国的窘境我们就可以得知。游戏产业似乎走过了一个轮回,而2014年正是这个轮回的交接点。下面,游戏观察简单的梳理了一下今年的游戏产业。Minecraft(中文译名《我的世界》)是一款由瑞典游戏公司 Mojang 于 2009 年开发的自由度极高的沙盒游戏。游戏内所有元素由一个个方块组成,画面略显粗糙但自由度极大,玩家可以像玩乐高积木一样在其中建立和破坏自己的世界,因而现在由此带来的是内容基本靠引进,但引进又要遭遇审批关卡,看看Xbox One目前在中国的窘境我们就可以得知。游戏产业似乎走过了一个轮回,而2014年正是这个轮回的交接点。下面,游戏观察简单的梳理了一下今年的游戏产业。Minecraft(中文译名《我的世界》)是一款由瑞典游戏公司 Mojang 于 2009 年开发的自由度极高的沙盒游戏。游戏内所有元素由一个个方块组成,画面略显粗糙但自由度极大,玩家可以像玩乐高积木一样在其中建立和破坏自己的世界,因而现在中国页游公司正在迎来收购狂潮。12月3日,顺荣股份发布公告称,公司于12月2日收到了证监会出具的《关于核准芜湖顺荣汽车部件股份有限公司向李卫伟等发行股份购买资产并募集配套资金的批复》,该批复核准公司向李卫伟发行7475.15万股股份、向曾开互联网医疗的部分公司已经开始切入严格意义上的诊疗环节,而游戏领域的投融资活动并不十分活跃。 2014 年对于游戏领域是不平凡的一年,移动游戏变的越来越火热。纪念碑谷和炉石传说显然是完全不同的两类游戏,他们会产生怎样的碰撞?今年以来传统公司纷纷加入并购手游公司行列。国内A股公司山水文化(600234)昨日晚间就发布公告,宣布以支付现金方式分期购买成都掌沃无限科技有限公司100%股权。游戏直播目前尚没有成熟的商业模式,大多都是处在烧钱烧流量的状态。电子游戏竞技又被称为电子竞技,现正在全美各大高校中风行起来,甚至连哈佛大学(Harvard)和佛罗里达州立大学(Florida State University)的学生对此也十分热衷。最大的一个大学电子竞技联盟今年新加入了近 4400 名学12月9日消息,盛大游戏宣布,公司代理首席执行官张鎣锋关联公司亿利盛达投资控股的母公司同意牵头组建新财团对盛大游戏进行私有化。「最终幻想 XV」首次宣布开发是在 2006 年,现在仍在开发中,如果参考该系列之前游戏的成本,预算估计达到了数千万美元了,而相比之下「怪物弹珠」只用两个星期就完成了初期样本的开发。这篇东西说起来不该是一个记者份内的文章。尽管我并不十分瞧得起记者的所谓职业,但是谁又能说这个职业也不是没有着自己的本分呢?所以,我只能说,我写的只是一个个人化的回忆。除去获得官方公开的数据;通过适当或者不太适当的途径获得游戏内部数据,源码或者策划案之外;大多数时候,也只能依靠反推这个方案了——显而易见的这是一种相对而言最为可行的探求黑箱内部的方案。什么?!!游戏越傻,人们越爱玩!真是万万没想到。坦诚而言,在郭敬明近些年在文学、电影、社交媒体领域积累了强大的影响力优势下,3000万成本的手游推出之后,郭敬明的这边买卖会亏本的可能性几近为零,但要谈及郭敬明这款“开创或记录一个时代”的游戏,其要想成功的可能性也是微乎其微,为何郭敬明的小中国的手机游戏市场一直在经历爆炸式的增长,并预计将最早在2015年之前超越美国市场。独立研究公司Niko Partners最新研究表明,2014年中国的手机游戏市场将增长93%达到29亿美元,从年将以37.6%的年复合增长即使是打魔兽,只要你肯钻研,不断提高不断学习,不断的追求更高的水平,你就会遇到高水平的人,这些人脉与现实中的人脉一样可以帮到你,然后你把在魔兽里学到的方法教训运用到其他领域中,会因此受益Twitch,这家全球游戏视频流媒体的霸主,终于迎来一个值得警惕的对手:Valve 旗下的 Steam Broadcasting。12月3日,文化部官网发布第二十二批违法违规互联网文化活动查处工作,对提供含有宣扬色情、赌博,违背社会公德等内容的互联网文化活动下发了查处名单,重点涉及手机游戏平台提供的游戏产品和网络动漫网站提供的动漫产品。手机应用市场百度、腾讯等公司均在满满的两本纯手工书写文字接近20万字。大量的游戏分析、感想、随想,其中有一篇最重要的,接近10万字的《自传》记录了我从第一次接触游戏到初中毕业的几乎所有和游戏有关的大事万万没想到,我们现在竟然有太多自己喜欢的应用了。各大应用商店已经变得拥挤不堪,开发者们迫切想要找到办法让自己的游戏和工具脱颖而出。于是,应用安装广告成为了移动平台公司的核心收入来源。游戏引擎的核心竞争力在哪里?在于工具链的完备性。现在的游戏行业上,开发效率才是王道,用好用的引擎,比竞品更早发布,更快迭代,才是生存之道。youxishij热门文章最新文章youxishij初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比
前言 iOS7 beta发布后,大部分开发者和用户的注意力都集中在了iOS 7的全新UI交互设计界面上。一直负责硬件工业设计的Jony Ive首次全面负责苹果的软件和硬件设计工作,自然要把他自己的设计理
转自 &作者
iOS7 beta发布后,大部分开发者和用户的注意力都集中在了iOS 7的全新UI交互设计界面上。一直负责硬件工业设计的Jony Ive首次全面负责苹果的软件和硬件设计工作,自然要把他自己的设计理念完整诠释一番。加上和iOS之父Scott Forstall一直以来的不和,Jony对之前拟物化风格的全面颠覆设计也是必然的结果。
如今iOS7 已经出了beta3版本,在一番喧嚣的或谩骂或惊叹之后,人们逐渐开始接受了iOS 7的新设计风格。其实iOS 7并非是简单的copy windows8和android的flat设计风格,而是将原来令人惊叹的视觉效果从静态的图标和界面悄然转移到与用户的互动之中。或许iOS 7的UI设计并没有大家想的那么糟糕,以Jony的设计功底,相信只要他继续呆在苹果并负责设计工作,一定会让iOS 的界面和交互设计走上一条全新的道路。
对于用户来说,iOS 7的全新界面设计风格就是一切。而对于开发者来说,iOS 7也增加和完善了不少新东西。由于目前iOS 7仍然是beta版本,很多东西都不是最终的,但还是可以从现有发布的工具和API中学到不少。
最近这几天仔细阅读了What&s New in iOS 7,iOS 7 for Developers, What&s New in Xcode等官方文档,并观看了中有关iOS 7的大部分视频,对于iOS 7有了初步的印象。
从个人了解的情况来看,除了全新升级的Xcode 5开发工具,对于iOS 7开发者来说需要重点关注的三个最大变化是:
1.iOS 7全新的UI 交互设计,以及与之相关的API(UIKit Dynamics), Text Kit
相关的文档有:
&& & (中文版:)
& &(中文版:)
WWDC 2013中的相关视频有:
Advanced Techniques with UIKit Dynamics(Session 221),
Advanced Text Layouts and Effects with Text Kit (Session 220),
Best Practices for Great iOS UI Design(Session 225),
Building User Interfaces for iOS 7(Session 201),
Customizing Your App&s Appearance for iOS 7(Session 214),
Custom Transitions Using View Controllers(Session 218)
Exploring Scroll Views on iOS 7 (Session 217),
Getting Started with UIKit Dynamics(Session 206),
Implementing Engaging UI on iOS(Session 226),
Introducing Text Kit(Session 210),
Using Fonts with Text Kit(Session 223),
What&s New in iOS User Interface Design(Session 208),
细心的开发者可以看到在WWDC 2013中与iOS 7的UI设计相关的视频是最多的,也足以看出苹果对此的重视程度。
2、升级后的真正意义上的Multitasking多任务管理
WWDC 2013中的相关视频是:
What&s New with Multitasking (Session 204)
What&s New in Foundation Networking(Session 705)
What&s New in Core Location
What&s New in State Restoration
Improving Performance and Energy Usage
Protecting Secrets with the Keychain
Energy Best Practices
Protecting your User&s Privacy
增强的Multitasking提供了三个非常有用的新特性
(1)Background Fetch(对一些社交类应用非常有用)
(2) Remote Notifications(对阅读聚合类应用非常适合)
(3) Background Transfer Service(对一些社交照片分享类应用很有用),和CFNetworking有关。还可以和自动判断所在地区相结合,比如地图类应用,当用户进入一个新的地理区域后自动下载相关地图。即便用户已经关闭了该应用,仍然有效。
3.游戏开发的新框架和新性能
这部分又包括全新添加的Sprite Kit Framework,全新添加的Game Controller Framework,以及增强的Game Center。
其中Sprite Kit Framework和Game Controller Framework凸显了苹果对于游戏市场的野心。Sprite Kit Framework可以帮助现有的iOS开发人员快速转向游戏开发,而Game Controller Framework则支持真正的硬件游戏控制器(手柄神马的),为苹果推出自己的专用游戏控制器和传说中的iTV奠定了坚实的基础。苹果甚至可以借此彻底抢占家用游戏主机的市场,相信Microsoft, SONY和Nintendo对苹果的野心也是心知肚明的。
相关的苹果官方开发文档有:
苹果罕见的为Sprite Kit和Game Controller提供了一个非常完整的多人对战(最多支持4人,支持真正的外接游戏手柄)示例项目以及代码解读文档:
代码下载链接:()
WWDC 2013中的相关视频有:
Designing Games with Sprite Kit (Session 503),
Integrating with Game Controllers(Session 501),
Introduction to Sprite Kit(Session 502),
对于一般的iOS 应用开发者来说,重点关注的就是1和2这两大块。而对于游戏开发者来说,特别是2D游戏开发者,不妨了解一下苹果的这个全新游戏开发框架。
对于已经在手机游戏开发市场浴血奋战的开发者来说,目前最常用的几款手机游戏开发引擎工具几乎集中在cocos2d-iphone,cocos2d-x,unity 3d,adobe flash air, html5。其中cocos2d家族(在中国主要是cocos2d-x,在海外cocos2d-iphone用的更多些)开发的2D游戏几乎占据了收入排行榜的80%以上,而unity3d也是当仁不让的3d 手机游戏开发引擎。少数资本雄厚的开发商用unreal等商用引擎,但算不上主流。国外还有少数开发者用corona, game salad等引擎或工具,但充其量也只是占据了少数的业余爱好者市场,更谈不上主流。
cocos2d从2009年发布cocos2d-iphone到现在不过4年的时间,但却伴随着iOS和智能手机市场的崛起而迅速壮大。2011年才发布的cocos2d-x更是在短短两年时间内就成了2d手机游戏开发的首选引擎工具。
或许是苹果在为即将发布的iTV和家用游戏机做最后的准备,这次iOS 7的变化中,全新的Sprite Kit Framework和Game Controller Framework可谓是提供给游戏开发者的屠龙宝刀。
那么,同为2d游戏开发引擎工具的cocos2d和Sprite Kit,可谓是倚天屠龙,那么究竟那一柄利器会让开发者更为高效的开发游戏呢?iOS 7 之后,究竟还有无必要继续使用cocos2d?
在接下来的内容中,本文将对Sprite Kit和cocos2d做一个简单的对比,并提出自己的一些看法。
不过,在继续之前,强烈推荐对Sprite Kit感兴趣的开发者看看WWDC 2013中的相关视频,以及官方的开发指南和示例项目代码。
Sprite Kit 和cocos2d开发对比
这里假定看此文的朋友对cocos2d已经有一定的了解,当然,即便不懂cocos2d也不会看不懂,只是对于两者的对比可能缺少感性的认识。这里以cocos2d-iphone为例,考虑到cocos2d-x的主要特性都是从cocos2d-iphone移植的,就不另作特别说明了。
1.所支持的主要特性对比
作为一款被市场普遍接受的2d游戏开发引擎,cocos2d支持场景管理(scene),场景切换(transitions),精灵和精灵表单,动作,动画和特效,菜单和菜单按钮,内置支持box2d(使用c++语言)和chipmunk(使用c语言)物理引擎,粒子特效,文本渲染,纹理图集,瓷砖地图,视差滚动,音效,暂停/恢复,快速纹理,opengl es 1.1(cocos2d 1.x)和opengl es 2.0(cocos2d 2.x),等等。
而作为苹果官方内置的游戏开发框架,Sprite Kit几乎支持cocos2d的所有主要特性,在物理引擎方面更是无需借助外力。
但就所支持的特性来说,两者不分高下。
在仔细看了相关的文档和视频后,我甚至觉得苹果是直接把cocos2d-iphone引擎维护团队的某位牛人挖走了,然后改头换面弄了一个Sprite Kit。难怪cocos2d-iphone的主要作者Riq先生在观看了Sprite Kit的演示视频后油然而生一种&既生瑜何生亮&的感叹。
2.安装和配置对比
cocos2d 的安装配置其实很简单,只需要在Terminal中切换到所在的目录,然后输入一个命令行即可完成安装。然后在Xcode中创建新项目选择对应的cocos2d或cocos2d-x模板即可。
但相比Sprite Kit来说,要借助Terminal和命令行命令的安装方式还是稍逊风骚。Sprite Kit作为内置的游戏开发框架无需安装。而对于新的游戏项目,开发者只需要在Xcode 5中选择SpriteKit Game模板即可。需要注意的是,SpriteKit Game模板默认是采用storyboard的。
3.帮助文档对比
cocos2d的帮助文档可以借助doxygen整合到Xcode中,但通常我个人偏好使用Dash来查找所需API的帮助文档。
Sprite Kit在这方面又赢了,因为是内置的framework,可以直接在Xcode的documentation中查看帮助文档,而且Xcode 5的帮助文档非常便于使用,非常人性化。
4.应用启动流程对比
在使用cocos2d开发的游戏中,启动流程如下:
main.m ---&AppDelegate的didFinishLaunchingWithOptions方法---&IntroLayer的onEnter方法---&特定游戏的首界面或加载界面
在使用Sprite Kit开发的游戏中,启动流程如下:
main.m---& XXXAppDelegate(XXX为项目名称)---&XXXViewController的viewDidLoad方法---&特定游戏的首界面
5.核心类对比
在进行对比之前,先对cocos2d的核心类做一下简单的回顾,这部分也可以完全跳过。
cocos2d的核心类包括CCNode,CCScene,CCLayer三个没有具体视觉呈现的抽象类,以及CCTexture纹理类,CCSprite精灵类,CCLabel文本标签,CCMenu菜单等。
(1)CCNode
CCNode是Cocos2d中最为重要的类,也可以说是整个cocos2d的基础,它是所有节点的基类,它是一个抽象类,没有视觉表现,定义了所有节点都通用的属性和方法。
在Cocos2D中,所有要绘制到屏幕的对象,或是自身包含要绘制到屏幕中的对象,都属于CCNode类。最重要的几个CCNode类分别是CCScene、CCLayer、CCSprite、CCMenu。CCNode的主要作用:
a.包含其他的CCNode节点(addChild、getChildByTag、removeChild等方法)
b.通过定时器预定消息(schedule、unschedule等方法)
c.执行动作(runAction、stopAction等方法)
CCNode有非常多有用的属性,比如锚点(anchorPoint),camera(游戏视角),children(子节点数组),contentSize(节点大小),position(位置),rotation(旋转角度),scale(缩放比例,又分为scale,scaleX,scaleY),skew(变形角度,分为skewX和skewY),tag(标识值),userData(自定义的数据指针对象),visible(是否可见),zOrder(视觉显示的z顺序值),等等。有些属性不太常用就不在这里一一列出,大家可以参考官方文档或dash里面的帮助文档。
CCNode主要实现三大类方法,分别是对子节点的处理,使用定时器预定消息,以及执行动作。
其中对子节点的处理又包括添加、获取和删除子节点。
其中执行动作的方法包括运行某个特定的动作,停止动作,停止某个特定动作,停止动作列表中的某个特定动作,获取动作列表中的某个特定动作,获取动作的数量等。
其中预定消息主要是update方法,可以设置特定的时间间隔,或默认按每帧来调用。
除了以上方法外,CCNode还支持坐标转换,视图-矩阵转换,初始化节点等多个方法,可谓威力无比。
(2)CCScene
CCScene是CCNode的子类,和CCNode一样,也是一个抽象类。事实上,CCScene和CCNode几乎完全相同,唯一差异就在于CCScene的锚点位置默认在屏幕中心。如果打开模板中CCScene.h文件,会发现其中只说明CCScene继承自CCNode,并没有任何其他内容。
当前版本的Cocos2D-iPhone中,CCScene类基本上没有附加任何逻辑机制和特殊功能。通常建议将CCScene作为所有其他节点的父节点,看作CCLayer(层)对象的一个容器。
需要说明的是,通常CCScene的子节点都直接继承自CCLayer。CCLayer包含各个游戏对象。因为大多数情况下场景对象本身不包含任何游戏相关的代码,而且很少被子类化,所以它一般在CCLayer对象里通过+(id)scene静态方法来创建。
CCScene场景类支持多种场景切换效果。
(3)CCLayer
一个CCLayer是屏幕上可绘制的区域,可以是半透明的,这样就可以看到CCScene下面的其他层。在游戏编程的过程中,开发者大部分时间都需要跟层打交道。
CCLayer直接继承自CCNode,作为精灵节点和其他节点的容器,同时可以接收触摸输入和加速计输入的信息,前提是上述接收功能已被启用。
CCLayer类的作用主要是三个:作为其它子节点的容器和组织者,接收触摸事件,接收加速计事件。CCLayerColor是一个透明的、可以按照RGB 设置填充颜色的层,是实现CCRGBAProtocol协议的CCLayer子类,继承了CCNode所有属性和方法,同时还可以接收触摸事件和加速计事件。它的特有属性包括color(ccColor3B类型的色彩),opacity(Glubyte类型的透明度),blendFunc(ccBlendFunc)类型的混合模式。
(4)CCMenu菜单
CCMenu继承自CCLayer,是一个菜单管理选择画面层,该画面以Menu对象为集合类,由MenuItem类实例组成各种按钮。CCMenu类提供的方法主要用来按横向、竖向或者多行列排序展示MenueItem的类实例。
(5)CCTexture纹理
在游戏运行中,所有图像文件(PNG、PVR)都被加载成GPU可以理解的OpenGL ES纹理,而精灵则对应着这些纹理图。Cocos2D内置一个纹理缓存管理器(CCTextureCache)来保持这些纹理图。
在cocos2d中,和纹理相关的类包括CCTexture2D,CCTextureCache和CCTextureAtlas。
在Cocos2D中,使用CCTexture2D(纹理)从图片、文本或源数据中创建OpenGL 2D纹理,所创建的纹理对象使用2的乘方来填充。
CCTextureCache(纹理缓存)作为单例使用,用于加载和管理纹理。一旦纹理加载完成,下次使用时可使用它返回之前加载的纹理,从而减少对GPU和CPU内存的占用。
使用CCTextureAtlas(纹理图集)来实现纹理图集。纹理图文件可以是PVRTC、PNG或任何Texture2D所支持的文件类型。可以对纹理图集的矩形进行实时的更新,添加,删除或重排序。
(6)CCSprite精灵
CCSprite是Cocos2D游戏开发中最常用的类,也是cocos2d引擎的灵魂。
在游戏开发中,经常会遇到精灵(sprite)这个术语。精灵是一个图像,可以在屏幕上独立地移动。一个精灵可能是玩家角色、敌人,或者是大的背景图像。一般情况下,精灵来自于开发者所准备的PNG或PVRTC图像。一旦图像载入内存,精灵将被转换成纹理图,从而被iPhone GPU用于在屏幕上渲染。
生成精灵最简单的方法是把图片文件加载进CCTexture2D纹理,然后将它赋给精灵。精灵可以接受其他精灵作为子节点。CCSprite默认锚点位置是(0.5,0.5),也就是节点的几何中心。
如果一个精灵的父类是标准CCNode节点,那么它和其他CCNode的属性和方法没有太大区别。如果一个精灵的父类或任何一个祖先类是CCSpriteBatchNode,那么具备的特性包括:更快地纹理渲染、不支持Camera、不支持GridBase、不能单独设置Alias/Antialias属性、不能单独设置混合模式、不支持视差滚动。
(7)CCSpriteBatchNode精灵表单和CCSpriteFrame精灵帧
如果仔细看看CCSprite相关代码(CCSprite.h文件),会发现在游戏的每一帧都会调用-(void)draw方法。在draw方法中,每次在屏幕中绘制一个精灵时都会调用真实的OpenGL ES命令(gl为前缀的方法,详见gl.h)。对于每个精灵,OpenGL ES都需要将纹理图绑定在这个CCSprite上,然后将其绘制在屏幕上(称为渲染)。
在屏幕上真实显示图像的像素前,还有一件事要做:iOS提供的OpenGL ES驱动将把OpenGL ES的命令转换成GPU可以理解的硬件编码,从而让GPU显示图像。作为一个游戏开发者,无需了解更多驱动细节,只需明白一点,每次调用OpenGL ES的命令都将耗费OpenGL ES驱动的CPU时钟。如果尽可能地减少OpenGL ES的调用,游戏的运行将更为顺畅。
要实现这一点,就需要让OpenGL ES一次性处理所有纹理图,而使用CCSpriteBatchNode和纹理图集就能实现这一目的。
在使用精灵表单时,CCSpriteBatchNode、CCSpriteFrame和CCSpriteFrameCache常常配合使用。
(8)CCDirector导演
CCDirector(导演类)是Cocos2D游戏引擎的核心。CCDirector是一个单例,它保存Cocos2D的全局配置设定,同时管理Cocos2D场景。主要作用如下:
a.访问和改变场景;
b.访问Cocos2D的配置细节;
c.访问视图(OpenGL、UIView、UIWindow);
d.暂停、恢复和结束游戏;
e.在UIKit和OpenGL之间转换坐标。
(9)CCAction动作
如果说CCSprite是cocos2d的灵魂,那么CCAction则是cocos2d绚丽多彩的外表。
任何一个游戏中的角色都不会在原地一动不动,使用动作可以让玩家更好地产生游戏中的参与感,并沉浸其中。
可以把节点动作想象成给所有CCNode节点对象下达的命令。这些动作可以修改节点对象的各种属性,如position(位置)、rotation(旋转)、scale(比例)等。如果这些属性是经过一段时间之后修改的,属于CCActionInterval(区间动作),否则属于CCActionInstant(瞬时动作)。
cocos2d默认提供了多种不同的基本动作,同时开发者还可以使用组合动作,ease动作,延迟动作,方法回调动作,块语句调用动作,反转动作,特殊动作来让cococs2d的游戏世界丰富多彩。
此外,cocos2d还提供了20多种特效,特效也是动作,只是其原理是利用cocos2d的网格来生成动作。特效会调整节点的网格属性。网格是节点的一种新属性,使用网格可以将节点划分为更小的方块或瓦片,通过移动组成每个方块的顶点调整节点的属性。
在cocos2d中还提供了用于创建动画的另一种特殊动作,CCAnimate、CCAnimation和CCAnimationCache这三个类。在Cocos2D中实现动画其实很简单,只需从精灵表单(CCSpriteBatchNode)中获取一系列图片,按照特定的顺序排列,最后在精灵对象上执行特定的动作。
(10)CCLabel文本渲染系统
cocos2d中提供了三种用于文本渲染的类,CCLabelTTF,CCLabelAtlas,CCLabelBMFont.
在使用Cocos2D开发的项目中,经常用CCLabelTTF类显示一些静态的标签和文本。CCLabelTTF类继承自CCSprite,主要用于渲染文本标签。使用CCLabelTTF类可以用很少的代码将文本嵌入到游戏之中。
虽然使用CCLabelTTF显示静态标签文本比较方便,但其渲染速度相对较慢,且通常用于显示纯文本。为了提高文本渲染速度,同时为在项目中显示文本提供更大的灵活性,Cocos2D提供了CCLabelTTF的替代类CCLabelAtlas。
CCLabelBMFont类支持不同宽度的字符,并且有很多第三方的编辑器支持,比CCLabelAtlas更灵活。
(11)CCTileMap瓷砖地图(瓦片地图)
瓷砖地图(Tile Map)是图形界面程序设计和游戏设计领域中常用的技术,也有人将其翻译成&瓦片地图&。其原理是用小的瓷砖(Tile)拼接出一张大的地图。这样做的好处很多,最明显的当然就是节省内存,大大提高OpenGL的渲染绘图性能。很多游戏开发引擎都内置了对瓷砖地图的支持,Cocos2D当然也不会例外。
瓷砖地图其实是二维数组,数组中的每个元素都包含地图中的某个特定区域信息。此类信息包括该区域中所显示的图像、瓷砖的碰撞属性等。
对于创建游戏中的大型关卡(特别是RPG角色扮演类游戏)瓷砖地图非常有用。即使游戏不是很大,如果为每个关卡创建不同的滚动背景,也需要用到瓷砖地图。
(12)CCParticleSystem(粒子系统类)
粒子系统是计算机图形学中用来模拟一些特定效果的技术,特别是一些模糊的现象。这些现象用传统的渲染技术难以实现。使用粒子效果可以模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或发光轨迹这样的模糊而又抽象的视觉效果。
在Cocos2D中提供了几个与创建和编辑粒子系统相关的类。了解并掌握了这些类之后,就可以在游戏中轻松的创建和编译粒子系统。其中主要是CCParticleSystem、CCParticleSystemQuad和CCParticleBatchNode类。此外cocos2d还内置了多种粒子特效。
以上概念对于cocos2d游戏开发者来说应该是非常熟悉的了,这里再次归纳一下是为了便于和Sprite Kit进行全面的对比。
实际上,以上的核心类就是一款cocos2d游戏的核心组织元素。
有了这十一大核心类,可以充分发挥开发者的创意和想象力,开发出令人唏嘘不已的游戏体验。事实上,cocos2d在过去4年内的巨大成功也要归功于这十一种利器。
那么,对比已经相对比较完善的cocos2d,Sprite Kit又靠什么来取胜呢?
接下来让我们一起来了解下Sprite Kit。
根据官方的文档和视频,Sprite Kit由三大部分组成,分别是Scene(场景),Actions(动作)和Physics(物理)。Scene当然是游戏场景及其中的角色,背景等;Actions则负责处理游戏角色的动作动画特效音效等,Physics则专门负责物理模拟。仅从这一点来看,Sprite Kit和cocos2d的本质是相似的。
当我们在Xcode中查看SpriteKit.framework的Headers时,会发现其中的类并不多,只有21个.h文件,打开SpriteKit.h就可以看到其中的代码如下:
再加上一个SpriteKitBase.h和SpriteKit.h,一共只有21个.h文件。而cocos2d中有多少个.h文件呢?我大概数了下,至少超过250个~
这个该如何比较呢?既可以说cocos2d功能全面,也可以说Sprite Kit设计简洁,秉承了苹果一贯的风格。
好了,现在可以来看看Sprite Kit的核心类有哪些:
(1)SKNode vs CCNode
SKNode对于Sprite Kit的重要性如同CCNode对于cocos2d的意义一样。cocos2d的游戏场景可以用场景节点图的形式来展现,而节点同样是Sprite Kit游戏场景的根基。
Sprite Kit游戏中的所有视觉元素均使用SKNode的子类来绘制。
SKNode的几大子类包括:
SKSpriteNode(对应CCSprite,用于绘制精灵纹理);
SKVideoNode(在cocos2d中无对应类,用于播放视频);
SKLabelNode(对应CCLabel,用于渲染文本);
SKShapeNode(在cocos2d中无对应类,用于渲染基于Core Graphics路径的形状);
SKEmitterNode(对应CCParticleSystem,用于创建和渲染粒子系统);
SKCropNode(无对应类,用于使用遮罩来裁剪子节点);
SKEffectNode(无对应类,用于在子节点上使用Core Image滤镜)。
类似cocos2d,SKNode也是用节点树的形式来组织的,这一点和iOS的视图层级也有相似之处。通常情况下,在一个游戏场景中,SKScene(场景节点)将作为根节点存在,而其它的内容节点都是其子节点。场景节点将负责运行一个动画循环,从而来处理其它子节点的动作,模拟物理世界,并将节点数中的内容渲染到屏幕上。
节点树中的每一个节点都为其子节点提供了一套坐标体系。当我们将某个子节点添加到节点树中时,可以通过设置其position和zPosition属性将其放置在父节点的坐标体系中。可以通过xScale,yScale和zRotation等属性来缩放和旋转节点。当某个节点的坐标体系被缩放或旋转时,其自身内容和所有子节点的内容也会发生同样的变化。
类似CCNode,SKNode自身是个抽象类,没有具体的视觉呈现。但SKNode的子类则可以分别用于绘制不同的视觉内容。
SKNode的frame属性可以获得节点的视觉内容的边框,通过调用calculateAccumulatedFrame方法可以获取包含该节点和其所有子节点的边框。
节点树上的所有节点都可以运行动作,从而可以产生动画和动作效果,添加或删除节点,播放音效或其它特定任务。在Sprite Kit中,动作(action)的重要性尤胜于cocos2d。
SKNode还有其它一些属性,比如设置透明度的alpha属性,设置是否显示的hidden属性等。这里就不一一列举了,开发者可以参考苹果官方文档了解更详细的信息。
接下来说说SKNode和CCNode不太一样的地方。在cocos2d中,有专门的CCLayer类用于接收触摸事件或加速计事件,从而处理用户交互。
但在Sprite Kit中并不存在一个专门的Layer类,所有的SKNode节点都可以对屏幕上的用户交互做出直接响应,这一点相对cocos2d实在是个大大的改进。我们可以转换坐标体系,根据触摸测试(点击测试)来判断用户的触摸点在哪个节点上。同时我们还可以对节点树中的节点进行交叉测试,从而来判断它们的物理区域是否重叠。当然,cococs2d中也是完全可以实现这一点的,只是多了一个中间步骤而已。
如果我们来仔细看看SKNode.h的源代码,会发现SKNode继承自UIResponder,并遵循NSCopying和NSCoding协议。而查看CCNode.h的源代码,会发现CCNode只是简单的继承自NSObject,不像SKNode这样一出生就肩负重任。
正因为SKNode继承自UIResponder,所以所有的SKNode节点其实都可以直接对用户交互作为直接响应,比起cocos2d利用CCLayer来处理交互的方式要直接一些。
另外,因为SKNode要遵循NSCopying和NSCoding协议,所以在自行创建SKNode的子类时,如果要给该类添加要archive的属性,就必须实现NSCoding协议。具体可以参考()
(2)SKView vs CCGLView/CCDirector
SKView继承自UIView(如果是Mac应用则继承自NSView,不过这里默认都是iOS应用,就不再赘述了)。
我们都知道在cocos2d中使用CCGLView,而CCGLView本身又继承自UIView,所以殊途同归。当然,cocos2d中的CCGLView是将OpenGL场景渲染进EAGL中。至于具体的细节,如果不是引擎的开发者,或者对OpenGL不感冒,也没必要深入研究。
Sprite Kit中的SKView类比cocos2d中的CCGLView要简单的多,它的主要作用就是作为视图容器来显示Sprite Kit的内容。而这个内容则是由SKScene提供。
SKView的很多作用类似于cocos2d中的CCDirector导演类。
通过调用SKView的prensentScene:方法就可以在视图中呈现游戏场景的内容。
通过调用presentScene:transition:方法则会以某种特定的场景切换效果从当前场景切换到新的场景。
当游戏场景被显示后,将会在场景模拟(场景中的内容动画)和内容渲染之间来回切换状态。我们可以通过设置该类的paused属性来暂停游戏场景。
此外,SKView还可以使用textureFromNode方法从场景内容中获取纹理图,使用Core Animation来同步渲染精灵。
SKView可以设置是否显示游戏的相关测试信息(showsFPS-游戏帧速,showsDrawCount-绘制数量,showsNodeCount-节点数量)。
SKView还提供了转换视图和游戏场景坐标的方法。
当然,如果我们对比SKView和CCDirector的属性和方法,会发现CCDirector所提供的功能更全面更强大,但也有些过于追求大而全的感觉。而SKView一如苹果一贯的产品设计风格,只提供最核心的功能,对次要功能则宁可弃之不用。好处是因为方法和属性较少,很容易掌握,而不好的地方当然就是功能没有CCDirector那么全面强大了。
在XXXViewController.m的viewDidLoad方法中,配置SKView的代码非常简洁明了:
&&&SKView&*&skView&=&(SKView&*)self.&&&skView.showsFPS&=&YES;&&&skView.showsNodeCount&=&YES;&
而紧接着就是创建和配置游戏场景的代码
(3)SKScene vs CCScene
与cocos2d中的CCScene类似,Sprite Kit中的SKScene更多起到一个容器的作用,但比起CCScene,SKScene的任务更多一些。
首先,SKScene是一个抽象类,因此在实际的项目中必须创建该类的子类。游戏的主要内容和逻辑都会在子类中运行。
SKScene的任务包括:
a.调用update:方法
b.在其子节点上执行动作;
c.调用didEvaluateActions方法;
d.对场景中的物体执行物理模拟计算;
d.调用didSimulatePhysics方法。
说到这里,就不得不说一下Sprite Kit游戏的循环。
进入游戏后,由SKView负责渲染游戏场景,在游戏的每一帧,首先在update:方法里面更新游戏中角色的信息,然后由SKScene评估并执行这些动作,接下来调用didEvaluateActions方法,再然后由SKScene模拟物理世界的变化,最后再调用didSimulatePhysics方法。然后再次由SKView渲染游戏场景,重新开始下一次的循环。
与cocos2d相比,这样的游戏循环逻辑更为严密清晰,初学者可能也更容易理解。
(4)SKSpriteNode/SKSprite vs CCSprite
SKSpriteNode的重要性从它的名字就可以看出来,没有Sprite,哪来的Sprite Kit?
不过与cocos2d相比,SKSpriteNode的作用更加纯粹,它只是用来绘制精灵纹理。而在cocos2d中,连CCLabel文本也是CCSprite的子类。
比cocos2d方便的是,Sprite Kit中提供了多种与SKSpriteNode具备同等地位的节点。
比如专门用于播放视频的SKVideoNode,cocos2d里面没有类似的类;
专门用于渲染文本的SKLabelNode,在cocos2d中使用CCSprite的子类CCLabelTTF等;
用于根据Core Graphics 路径来渲染抽象形状的SKShapeNode,想来用于制作涂鸦类的游戏自然是绝佳的,可惜cocos2d中貌似没有类似的类;
用于创建粒子效果的SKEmitterNode,在Cocos2d中有与之对应的类CCParticleSystem:
使用遮罩来裁剪子节点的SKCropNode,在cocos2d中貌似没有对应的类;
在子节点上使用Core Image 滤镜效果的SKEffectNode,在cocos2d中貌似没有对应的类。
因为这几个类在Sprite Kit中与SKSpriteNode处于同一级别,这里就一并比较了,后面不再重复。
(5)SKTexture vs CCTexture2D
SKTexture的作用与cocos2d中的CCTexture2D是类似的,用于创建可以被Sprite Kit对象(通常是SKSpriteNode对象)重用的纹理图像。使用纹理可以让Sprite Kit对精灵的渲染更加高效。
我们可以从不同的源中初始化纹理,比如bundle中的图片文件,core image filters, Quartz 2D图形,甚至是原始像素数据。在Sprite Kit中,可以使用SKTextureAtlas来创建纹理图集。
需要注意的是,在cocos2d中有CCSpriteBatchNode精灵表单,但Sprite Kit中只有SKTextureAtlas,两者的作用是类似的,都是使用单次OpenGL ES命令调用替代重复的OpenGL ES命令。
(6) SKAction vs CCAction
SKAction在Sprite Kit中的作用非常重要,和CCAction类似,同样用于创建节点动作。合理使用动作(actions)可以让游戏世界更加丰富多彩,灵活多变,充满吸引力。
使用SKAction可以更改节点的多个属性,如位置,旋转或缩放等。部分动作只能用于SKSpriteNode,比如更改精灵的色彩或纹理属性。
此外,Sprite Kit中允许创建三种复杂的动作,可以将其它动作作为子动作,分别是序列动作,组合动作和重复动作。在Sprite Kit中,序列动作,组合动作和重复动作都是可以嵌套的。
需要注意的是,开发者不能直接创建SKAction的子类,而是直接对目标对象调用方法或执行块语句。
我们都知道cocos2d中提供了多个CCAction的子类,但在Sprite Kit中只有一个SKAction,且不允许创建其子类。
总的来说,从创建动作的角度来看,SKAction和CCAction可以达到完全相同的效果。
(7)SKPhysicsBody/SKPhysicsContact/SKPhysicsJoint/SKPhysicsWorld &vs Box2d/chipmunk
大家都知道,cocos2d并没有自己的物理引擎,而是内置了box2d或chipmunk两个第三方物理引擎。而box2d采用c++语言开发,chipmunk采用c语言开发,对iOS开发者来说多少是个麻烦事。
从这个角度来看,Sprite Kit可谓直接胜出。SKPhysics相关类非常简洁明了,原生Objective-C,无论从配置到使用都很简单。
关于这部分,可以参考苹果官方的Adventure游戏,这里也不再多说。
比较到这里,基本上已经涵盖了Sprite Kit绝大多数的核心类。感觉Sprite Kit的设计非常清晰简洁,而cocos2d由于属于开源项目,从结构上来说稍显复杂,但因为众多开发者的反馈和贡献,功能却比Sprite Kit要丰富很多。
(8)AV Foundation vs CocosDenshion
在cocos2d中使用cocosDenshion来播放游戏的音效和背景音乐,只需一行代码就可以搞定一切。
在Sprite Kit中需要借助AV Foundation的帮助,但功能显然要强大很多。
6.工具对比
用过cocos2d开发游戏的朋友都知道有不少第三方的开发工具对其进行支持,这里也简单对比一下。
(1)创建纹理图集
在cocos2d中常用Zwoptex或者Texture Packer,非常方便,特别是Texture Packer,可惜是付费的。
但如果用了Sprite Kit之后,就会发现在Xcode 5中创建纹理图集更方便,无需任何第三方工具。具体的操作可以参考官方视频。
(2) 创建瓦片(瓷砖)地图
在cocos2d中通常使用Tiled Map或其它第三方工具。
在Sprite Kit中貌似没有内置的创建工具。
(3)创建字体
在cocos2d中可以使用Hiero等第三方工具。
使用Sprite Kit开发则可以直接利用iOS 7中最新的Text Kit,显然更为强大。
(4)创建粒子效果
在cocos2d中可以使用Particle Designer等第三方工具,很直观,很强大。
在Sprite Kit中则可以直接利用Xcode 5内置的粒子编辑器,同样非常强大。
(5)创建游戏界面
在cocos2d中可以使用CocosBuilder等第三方工具,目前仍然在完善中。
在Sprite Kit中则可以直接借助Xcode 5中的Interface Builder,很直接。
显然,如果使用cocos2d需要大量借助第三方的开发工具,而使用Sprite Kit则可以直接利用Xcode 5和iOS 7的诸多新特性,无需学习第三方工具。
Sprite Kit和cocos2d对比小结
相信在看了以上的比较之后(再次建议看看WWDC 2013官方视频和相关的官方文档),大家对Sprite Kit已经有了初步的认识。
那么,究竟Sprite Kit能否替代cocos2d成为2d手机游戏开发的首选工具呢?
在作出自己的结论之间,先用表格的方式来做一个小小的总结。
整理完这个表格之后,下面就是我个人的结论:
a.Sprite Kit作为iOS 7 内置的游戏开发工具,短期内不太可能替代cocos2d-x,但很有可能完全替代cocos2d-iphone。
b.如果要支持跨平台开发,那么2D游戏引擎还是首选cocos2d-x,没有其它。按照苹果的风格,Sprite Kit这么霸气的工具是不可能支持Android游戏开发的。
c.初学手机游戏开发的,如果只想搞iOS游戏开发,那么可以直接学Sprite Kit,不必从cocos2d-iphone学起。
d..现有的开发者,如果只专注iOS游戏,那么完全没必要转到Sprite Kit。cocos2d的功能足够强大。
e.Sprite Kit的成功与否取决于iOS平台能否继续发力。
忘了说这个了。为了实际比较,过段时间会做一个简单的实例,分别提供cocos2d-iphone版,cocos2d-x版和Sprite Kit版,放在这里作为参考。
CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!
请搜索微信号“CocoaChina”关注我们!
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 如何申请游戏著作权 的文章

 

随机推荐