如何使用Cocos2d-x完美呈现捕鱼3

如何使用Cocos2d-x完美呈现捕鱼3,第1张

捕鱼达人3与前两部相比,技术上有哪些突破和创新?

捕鱼达人3作为前两代成功作品的续作,我们需要从玩法到技术,全面超越前代。所以在技术上,我们主要做了下面一些突破和创新:

1)鱼的3D渲染。 跟2D渲染相比,3D渲染可以让鱼看起来更加立体和真实。 3D骨骼动画可以让动作更加丰富和平滑。另外我们还为鱼增加了表情动作,让鱼儿更具个性化。

2) 纯3D路径。 前两代的2D路径在我们新的3D场景下,表现力要弱很多。为此我们设计了全新的3D路径编辑器,鱼的游动不仅仅在一个面上游动,而是一个立体空间,这样鱼的游动过程会更加平滑和真实。

3) 丰富的武器表现效果。 以前的武器效果,我们一般是结合帧动画和粒子效果实现,在捕鱼3中,我们的武器很多是通过 shader 实现的,让效果更加绚丽和富于变化。比如闪电武器,泡泡武器等。

4) 3D的后处理和灯照效果。大家可以看到我首屏模拟海洋的效果,就用到相关技术。还有鱼身上的波光效果。

2.《捕鱼达人3》使用了最新的Cocos2d-x中3D功能,它有哪些突出的亮点?请举几个游戏里的具体案例说明

1)继承Cocos2d-x的设计思路,只要具备Cocos2d-x的编程经验, 在使用和理解上完全无障碍,可以立马上手写代码。

2) 丰富的材质系统,可以自定义模型不同渲染效果。 比如:我们的鱼身上的渲染效果已经电鳗鱼的闪电效果

3) 强大的模型编辑器,可以自定义模型的材质

3. 引擎3D功能使用的时候感觉和2D部分区别在哪?

设计理念和开发流程和2D差不多

4. 游戏里面的动画效果,是UI实现的,还是Cocos引擎的3D效果?比如那个漩涡,是不是使用引擎的3D效果可以做很多不同的漂亮效果呢?

渲染时用3D的材质系统实现的, 由于材质系统的扩展能力很强,做出各种漂亮的效果完全没问题。

5. Cocos2d-x的3D技术稳定性如何?是否已经到了可以大规模市场化应用的阶段?

挺好的,我们Android版本的适配度高达92%以上。

6. 引擎粒子效果的效率一直备受争议,请问捕鱼达人3有没有专门做优化?

我们对同一种粒子做了批次处理。另外,还通过脚本, 严格控制了粒子的个数,不能超过某个上限值。

7. 在《捕鱼达人3》开发过程中,遇到哪些困难和挑战?你们是如何克服的?

游戏开发都会面临一个资源的管理问题,就是资源如何从美术制作,在到程序使用以及后续的维护。捕鱼3的资源类型比较多。2D层有图片,ui资源,动画资源,字体资源,粒子资源。 3D层又涉及3D模型,材质,纹理,shader等。另外,还有track,策划配置文件等。所以种类非常多。 还因为捕鱼3的适配性要求比较高,所以,我们有些资源按照分辨率有划分了几大类。 还附加一条,资源还分不同的语言版本。 上线之后,资源本身还需要跟随发布版本一起维护。所以中间的问题非常多。 在我们项目中会严格对资源进行规范, 包括命名,目录结构。资源如何从美术维护的目录流动到程序使用的目录等。另外还维护了一套基于ant+python的脚本来去驱动资源的流转。 实现一键生成程序所需要的资源。 无须人工的干预, 非常便捷。

另外我们还有一键打Windows,iOS,Android各种程序包的脚本,方便做版本的daily build。

8. 《捕鱼达人3》的背后一定有一支强大的团队,包括多方面能力的配合,能否分享一下团队协作和管理的经验?

就我们研发而言, 其实最重要是前期做好开发规范,然后打造融洽的团队氛围,明确每个人的开发任务,大家随着项目的发展一起往前进步。

9. 最后,对其它有志进入手游行业或者在摸索中前行的手游开发者,您能否给一些建议?

虽然很多媒体都在高喊:手游已是一片红海。 但这个市场远没有饱和,移动设备的增量仍然很大。而且区别于端游市场的客户端大作,页游市场的各种网游。手游的游戏类型更加多样化,更加丰富。休闲的,棋牌的,各类网游,都有成功的案例。所以,这个市场更加灵活,更适合小团队创造奇迹,仍然有很多的机会。另外从技术上讲,由于存在Cocos2d-x这种几乎处于垄断地位的引擎, 手游也是一个更加开放的市场。 网上有一大堆的学习资料和游戏源码, 只要你有点计算机基础,入门还是很容易的。重要的是自己能够静下心来多看多写些代码,争取独立发布一款产品。我见过不少人自己做一点东西都没坚持下来,做一半就放弃掉。其实在多坚持下,离成功就近了很多。

如果大型游戏,强烈建议不要使用cocos2d-js

我们目前的几个项目都是cocos2d-js开发的,我打算把这几个项目转egret。有如下几个理由:

1、cocos ide有BUG:断点会崩溃、代码提示很差、内存太高、虚拟机的菜单栏会影响事件(迭代了很多版本,这菜单栏BUG都没修复)

2、studio的工作流在几个引擎中是最差的,而且有BUG。经常和实际表现不一致。而且内存占用大,会崩溃。不能继承(这个问题最严重,不能继承按钮,那么按下缩放等高级功能就很蛋疼)。

3、

架构太差。写点小功能没事,如果想写大型游戏,这套架构会让你抓狂!比如最简单的按钮事件,我必须在事件方法里面加个触摸类型判断。一个很简单的点击,就

多出很多这种相似的代码!4、UI有好几套,然而每一套都有BUG。CCUI的设计也是很糟糕的!同时也是崩溃的罪魁祸首。

5、引擎BUG问题,

很多BUG会让你欲哭无泪,比如坐标会出现undefined。再比如热更新的BUG,XCODE编出的包默认是js而不是jsc,当这个包发布商店就会

出现不能热更新的问题,同时也进不去游戏,卡在了热更新界面。(这个问题导致我们流失了3个月的用户,知道苹果商店通过审核位置),再比如

java/objectc和js的交互,这个都有问题!再比如:ios第三方输入法会导致崩溃!

6、工作流问题,IDE的断点的观察变量很不友好、studio导出的配置很大、studio扩展性很差。在IDE 1.2版本出来之前,我们团队甚至无法断点,只能打印日志来debug。

7、工作效率问题,代码提示先不谈。我实现一个简单的列表都能折腾很久,那ccui的list真是太不好用!除此之外,裁剪、遮罩这些只需要一行的代码,在cocos下面需要无数行!

8、

引擎升级问题:cocos大概一个月1个升级,egret是2周。然而cocos升级会带来大量的新BUG,而且兼容性很差。导致我们现在还用3.0版

本。最蛋疼的是,官方的3.6版本又不能断点了!3.0升级到3.6还会导致布局混乱、九宫失效、崩溃闪退(绝对不是代码问题这个解释了)!基本上

cocos每加个新功能都会带来无数新BUG,老BUG修复量也少,我论坛反馈的问题经常需要迭代2到3个版本才修复,下个版本修复兼职是不可能。而

egret不仅迭代快,BUG修复也勤快!也很少有一些导致产品质量的验证BUG。

9、官方人员态度问题:我在cocos论坛发的BUG反馈,过了7天才有人来回复。地址(从3.0到3.1和3.2的BUG,官方帮忙看下),再看下egret我发的BUG反馈,当时是下班时间,然而第二天一早就回复我了。地址(Egret社区-BUG列表)

10、API问题:cocos经历了3个大版本,官方API文档也有的API,实际尽然是没有的,官方回复是还没加入js绑定。

11、跨平台问题:cocos2d-js经常是HTML5和JSB表现不一致。导致我们现在只能专注JSB而放弃HTML5版本。egret很少有这个问题。

12、

性能问题:先抛开runtime。如果你用了ccui,那么我100%保证你的cocos2d-js的性能会被egret秒杀。再来说下native下面

的性能对比,cocos的人说egret是js写的逻辑,而他们是绑定。那么问题来了,在现在,js的逻辑产生的性能压力一点都不是问题(参考

node.js,能用js写服务器了都)。主要的性能压力其实是在渲染上面,而他们2个都是opengl作为渲染的。如果用了ccui,那么还是被

egret秒杀。那ccui带来的drawCall真是太!!再来谈runtime,egret现在很多浏览器都集成了runtime(可以opengl

渲染代替canvas渲染),而cocos-js只是说在合作,已经慢了一步。

13、产品路线图问题:cocos的几个产品一心在弄3D,egret都已经自己搞了一个IDE了。开发基本的生活cocos都没保障好,就去想和u3d打架!

14、内部问题:cocos估计内部很不和谐,ide据说是1个人在开发,studio是30个人(30个人整出这东西),而且studio是用的.NET搞的,跨平台最呵呵的技术!QT、AIR那些那么多高效率,扩展性强的技术不用,选了个.NET。。。。

---------------------------------------------------------------------------------------------------------------------------------

外话:说了那么多cocos的不是,我也曾试着爱过它,我甚至开发了一个和egret

wing一样的UI编辑器,写了个和Flash/Flex一样的API(egret用的这套,这种架构很好用,简单明了)。其中UI编辑器还加上了

unity3d那种绑定脚本的功能。然而因为cocos底层的一些令人发狂的BUG,我最终是放弃了。有egret这个车子在,我还造什么轮子?我打算把

手里头的这套cocos的东西开源。然后去整egret去!

---------------------------------------------------------------------------------------------------------------------------------

再来个题外话:

游戏引擎cocos2d-js和egret 对比

个是百度搜索第一的对比,里面说cocos2d的工具比egret多,我不否认,但是能用的基本没有。而egret的工具很稳定。就拿最简单的骨骼动

画,cocos连龙骨都不支持,studio里面的骨骼设计也是坑的不行,egret的骨骼设计工具从界面和实用性都已经完爆studio了!

再来说上面的地址里面的成功产品:捕鱼达人、DOTA传奇、我叫MT那都是cocos2dx写的,和js版本一点关系都没有!请问你有见过网页版的刀塔传奇么?

上面的开发语言对比,大项目来说,ts真的是完爆js!js那不小心就会出错真心不适合大项目,不然微软不会造这个轮子。

上面的参考资料对比,cocos2d-js的文档连参数的注释都没,和c++文档作参考也不行,很多参数是不一致的!而egret在开发工具里面就继承了中文的帮助。

从目前状况看,今年绝对是egret产品井喷的一年,不信走着瞧!cocos真是把我坑惨了!

---------------------------------------------------------------------------------------------------------------------------------

次申明,请拿cocos2d-js或者JSB的大作出来,不用拿2dx的东西。说到2dx,你们再去了解下,榜单上,有几个人是没改过引擎源码的,有几个

游戏能随着cocos引擎升级而升级。用studio的又有几个。并不想和王哲斯逼,只是希望你们能正视BUG,提高体验。如果好,我们团队会考虑

cocos技术的,否则只能用egret和unity3d了。我说cocos这么多不是,也是希望他成长,能给开发者带来更多利益,带来更多方便,而不是

各种无厘头的问题,各种蹩脚的手段去开发。还有,我说的这几点,@王哲

你接招,如果我不说出这些BUG,这些问题,那么估计还不一定改。egret同样有个人叫王泽,然而他的理念完全当我们开发者是用户,提高开发体验,这个

很重要的。

一、3D游戏(包含2.5D)

只能:Unity3D

作品:职业棒球、星际陆战队等

分布:欧美国家用Unity3D的较多。商业化引擎中,3D游戏占比最高

原因:

就像 @朱云所说。Cocos2d-x目前还不支持3D。相比而言,U3D就是你唯一的选择了。

二、大型2D游戏(可以指安装包上百兆的)

推荐:Unity3D

作品:捣蛋猪、冰雪奇缘、天天飞车、绝代双骄等

分布:欧美国家用Unity3D的较多,国内用Cocos2D-X的多

原因:

1、游戏这东西,就是要跟“直觉”打交道的

我的想法有点极端,我感觉在游戏世界里,代码似乎更像是“妥协”的产物。

如果能做到“所见即所玩”,那真的是一个非常惬意的事。到时候,或许一个8岁小孩就能独立自主的开发一款游戏。

而这一点,Unity3D的王者地位,当之无愧!

2、Unity3D提供了超赞的设计工具,让你感觉像是在用3DMax和Flash来做游戏

3、适合大型团队,美工、动画更容易上手

U3D可以让美工、动画、码农在同一个平台上各司其职。这点从目前来看,Cocos2D-X望尘莫及。

三、中小型2D游戏(百兆以内的)

推荐:Cocos2D-X

作品:捕鱼达人、我叫MT、2048等

分布:东亚游戏多出自Cocos2D-X,尤其中国。但大多为小型游戏

原因:

1、Unity3D比Cocos2D-X的APK包要大了近十倍

仅以Android手机为例,同样的一个2D版HelloWorld,两者的安装包大小:

Unity3D:约为9.27M

Cocos2D-x:约为1.67M

解开包后发现,里面除了两个一共占据近12M的SO库(libmono.so和libunity.so),还有一票的DLL文件。其中System.dll、Assembly-CSharp.dll和mscorlib.dll这三个核心文件就占了5M。虽然它们压缩比约为50%,但仅这些文件就占了这么多。心疼啊。

而这,在“寸土寸金”的中小型游戏面前是多么可怕的数字。

2、Cocos2D-X比Unity3D快很多

即使不用测试工具,也可以轻易的发现这一点。

主要因为Unity3D用了Mono架构,它移植自微软的.Net。每次启动都会加载Mono框架和Unity3D引擎,再加载.Net Assembly(一堆DLL文件),这可比Cocos2D-x这种纯C++(包括Lua和JS)实现要慢很多。

3、独立开发者更喜欢“码”游戏

独立开发者大多是“技术达人”(不然怎么开发游戏)。U3D会让他们有“无所适从”感,从而影响了对U3D的灵活运用。对这些人而言,这是赤裸裸的时间成本。在游戏开发中,这点尤为重要。还是Cocos2D-X让他们更感到“亲切”,更有成就感。

也许你会问:“你怎么知道?”

因为我就是搞技术的。

4、中国游戏多出自Cocos2D-X

Cocos2D-X是正宗国产货,又是优秀的开源项目,国外用户群也不少。

也正是因为这个原因,C2D天生就对中国用户很“偏爱”。比如社区,我在上面问了两个问题,基本上当天问当天答,而且非常热心。从这一点我就对C2D产生了不错的好感。

5、Unity3D要收费

对大型2D游戏团队来说或许还不算什么。

初步算一下,Pro要1500$,手游怎么至少也得兼容iOS和Android吧,各自1500$,再加个Team套装,加一块儿,5000$,两万多银子。

Cocos2D-X免费、开源。遇到问题可以研究源码或向社区求救。

四、微型游戏(指争取安装包在1M以内的)

推荐:AndEngine、Cocos2D-iPhone

作品:Flappy Bird、小球快跑、五子棋等

分布:不需要跨平台的超小游戏用的多。

原因:

如果只想在一个平台上开发游戏,无疑上述两种是最好的选择

其中AndEngine开发出来的游戏最小才400多KB,大名鼎鼎的Flappy Bird就是用它做出来的。

另外,iPhone的Cocos2D划到这里似乎不太合适,但仔细想想,现在有更成熟的Cocos2d-x方案,Cocos2D划到微型游戏一列,相信是早晚的事(个人看法,轻拍)。

五、总结

1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。

2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。

3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。

最后。俗话说:没有最好的,只有最适合自己的。我想这句话同样适用于开发游戏。

转载自知乎张炅轩。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11719412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存