cocos2dx塔防游戏源码_cocos creator塔防游戏
今天,我将与大家共同探讨cocos2dx塔防游戏源码的今日更新,希望我的介绍能为有需要的朋友提供一些参考和建议。
1.web前端转cocos2dx怎么样
2.egret 和cocos2d-x-js哪个目前更稳定更好用
3.老师说cocos2dx过两年就会被淘汰,unity3D才是正道,各位怎么看
4.Cocos2dx游戏引擎都运用了哪些设计模式
5.怎么删除动作 cocos2dx
6.Quick cocos2dx与cocos2dx有什么区别
web前端转cocos2dx怎么样
风险肯定是有的~转过来又俩问题,一个是没做过游戏~整个游戏逻辑可能有问题~另一个是c++不熟悉,工程项目稍微大一点的话怕内存泄露~cocos2d-x肯定是用来做手机游戏的~万一有泄露可能整个程序直接崩了~主要怕这个
egret 和cocos2d-x-js哪个目前更稳定更好用
UNITY3D和 COCOS2D-X都是跨平台的游戏开发引擎,COCOS2D是专门做IPHONE游戏的2D游戏引擎。
下面就从多个方面来对比阐述一下:
1)是否开源
COCOS2D开源,有文档支持,论坛资料庞杂博大;
UNITY3D闭源,有强大的文档支持,论坛资料一样的庞杂博大。
开源对COCOS2D来说,意味着可以进行随心所欲的改造,可以更深入的了解各种游戏需求的底层实现原理,更可以订制出更符合自己要求的类库。
相对的,它的麻烦也不小,因为开源,所以可以随便改,因为可以随便改,所以很容易改错,而且调试维护的成本也会倍增,因为更接近底层,所以往往实现一个功能的时候或者自己要更费周折。
闭源对于UNITY3D来说,意味着更能方便的使用,更有质量保证,同时意味着偶尔有使用者看不到的想看的内容,想接近底层会花费巨大的代价,想订制一种自己的数据结构或者功能来添加进去的时候很难下手。
2)是否免费
COCOS2D免费,免费意味着,服务差,很多程序员不想看到的现象会莫名其妙的出现,偶尔作者不小心出点意外什么的没有什么可以控制的方法…例如,作者一不小心使用了一种非常危险的方法来写代码,这个时候基本上使用者欲哭无泪,查起错误异常艰难,但是总能查出来.免费的好处是,有一天如果用COCOS2D做了一个很牛逼的游戏,可以正当光明的说,这个游戏是我们做的,游戏质量很好,而且不用恐惧有人冲过来收钱。
UNITY3D收费,收费意味着…服务真心是不错诶,U3D小组力求把麻烦留给自己,方便留给程序员,所以用着还真是爽,很多麻烦都被U3D消灭在萌芽阶段,真心好,但是,要钱的。
3)跨平台能力
两者都能跨平台。
COCOS2D的跨平台,需要大量重写代码,面对各种平台的各种细节麻烦.所以当使用COCOS2D的时候,很多麻烦来了,于是再面对平台特定的更麻烦的问题的时候,程序员基础好很多,更容易搞定
UNITY3D的跨平台,程序员只需要选选按钮就淡定许多的搞定了,但是当面对U3D团队没有想到的平台特定的更麻烦的问题的时候,这个时候的程序员,需要使劲的“吃”键盘来克制自己内心的焦虑吧…
4)团队开发
cocos2d压根就没往团队方面想,所以团队配合方面的工具,程序员基本自理,细节问题自理,麻烦问题自理,UNITY3D想了一些,做了很多,但是也有纠结的地方,程序员在没有完全理解的基础上使用会变得很难接受.值得一提的是,UNITY有强大的所见即所得能力,动态解释,现场执行,COCOS2D一直在向着这个方向努力,或许在未来某一天两者也会不相伯仲
5)周边工具
COCOS2D是集体智慧,各路人马都提供了各种各样的工具,COCOS2D将他们整合到了一起,各种工具都有各种麻烦,也有各种好处,总的来说,花点精力还是有好结果的。
UNITY3D自家解决了很多麻烦问题,周边工具也有很多人做,但是,不开源,而且要钱,服务好很多。
6)可定制性
COCOS2D拥有令人发指的可定制性,因为从C++写起,所以程序员可以为所欲为,为所欲为的代价就是,所有细节都要照顾,所有麻烦都要生顶(例如,写出的工具不跨平台,订制的数据结构无法通用,序列化一个类到其他平台之后无法反序列化等等)。
UNITY3D有一个专门为订制而写的类库,没怎么用过,但是可以确定的是,这个类库是跨平台的,这个优势很伟大。
7)3D
这个U3D确实完爆COCOS2D,不过,要是不想做3D游戏呢?那多余的3D功能也会很累赘。
总而言之,两家都是游戏引擎的大家,两者都能适应不同的需要,各具特色各有特点,估计谁也灭不了谁。
老师说cocos2dx过两年就会被淘汰,unity3D才是正道,各位怎么看
如果大型游戏,强烈建议不要使用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同样有个人叫王泽,然而他的理念完全当我们开发者是用户,提高开发体验,这个
很重要的。
Cocos2dx游戏引擎都运用了哪些设计模式
刚好我现在同时在开发两个2D游戏,一个是用Cocos2d-x,一个是用Unity3d。
对于“学习”而言,
Cocos2d-x是比较好理解的。它是传统的OOP结构,对于有编程经验的人来说,是最好不过了。就连Unity3d上,也有一个很火的2D框架,Futile,是模仿Cocos2d-x的架构和代码风格。从Cocos2d-x上手接触一下游戏引擎,是一个不错的选择。
而Unity3d是Component-Based结构,对于OOP背景的程序员来说,一开始会觉得别扭。而且Unity3d有很多针对3d模型、3d动画、优化等等的商用功能,对于初学者来说会有点overwhelming的感觉。而且无论如何使用Unity3d,总需要在editor里进行大量操作,对理解游戏引擎和代码架构来说,并不是一个很好的方式。
然而,从“开发”的角度来说,
Cocos2d-x正如 @周华 所说,是一个“纯正”的引擎——仅仅只是代码库。虽然可以利用CocosBuilder和其他一些工具进行图形化操作,但效率始终不够Unity3d高。而且暴露过多的底层代码,对于研究是一件大大的好事,但是对于创作而言,未必是福音。
而Unity3d则是一个高效的IDE+代码库。它很好地封装了底层代码,提供许多简便的图形操作,还有商业级的高级功能。对于开发而言,我认为是更好地选择。之前大多数开发者对Unity3d的认识还停留在3D开发,但2013年末的2D支持让更多人选择Unity3d进行2D开发。
所以我的结论是,通过Cocos2d-x或者是Unity3d上的Futile框架来入门,熟悉之后再过渡到Unity3d进行开发。:)
怎么删除动作 cocos2dx
cocos2dx的几种常见设计模式设计模式——工厂模式
顾名思义就是用来产生产品的,工厂就是用来创建其他类对象的类;
设计模式——管理者模式
管理类是用来管理一组相关对象的类,提供了访问对象的接口。
设计模式——外观模式
一个复杂的系统包含很多子系统,为了使用这个复杂的系统,定义一个统一的接口来使用这个复杂的系统。
Quick cocos2dx与cocos2dx有什么区别
Cocos2Dx提供了调度器。结合调度器,我们可以不断地修改节点的属性,从而实现丰富的动态效果。但是这样做过于麻烦。举个例子,我们需要把一个精灵从一个位置移动到另外一个位置。从我们前面提到的内容来思考一个可行的方案:在父节点的update中,将它的位置移动镇间隔时间移动的距离。假定目标位置到初始距离为d,移动时间指定为t秒,帧间隔时间1/60秒,那么每个update我们需要往目标位置移动d/60t。这还是匀速地移动,如果要求加速移动的效果,或者减速移动的效果,情况就变得更加复杂一些了。
为了简化节点的动作执行,一般是CCSprite,Cocos2Dx提供了CAction来支持动作。动作可以简单地分为两类,一是瞬时动作,即立即完成的动作;二是持续性动作,即动作的执行需要持续一段时间。另外,我们还需要有能够组合各种动作的能力,称之为复合动作。下面我们,先看看动作的分类。
瞬时动作。瞬时动作就是下一帧就要完成的动作,比如定位、缩放。其实这样的动作不需要定时机制,修改节点的属性即可,但还是封装为一个动作,目的是方便进行做动作的组合。瞬时动作包括:
CCPlace:将节点放置到某个指定位置,其作用与修改节点的Position属性相同。
CCFlipX和CCFlipY:用于将精灵沿X和Y轴反向显示,其作用与设置精灵的FlipX和FlipY属性相同。
CCShow和CCHide:用于显示和隐藏节点,其作用与设置节点的Visible属性的作用一样。
CCCallFunc:CCCallFunc系列动作包括CCCallFunc、CCCallFuncN、CCCallFuncND,以及CCCall- FuncO四个动作,用来在动作中进行类的实例方法的调用。
持续性动作。持续性动作,以为着动作的执行需要持续一段时间。所以,这些都做都需要指定动作执行的时间:duration。持续性动作还可以根据产生的效果不同进一步细分。
位置变化动作:针对位置(position)属性。
CCMoveTo和CCMoveBy:用于使节点做直线运动。
CCJumpTo和CCJumpBy:使节点以一定的轨迹跳跃到指定位置。
CCBezierTo和CCBezierBy:使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。
by是相对于节点的位置;to是绝对位置。
属性变化动作:通过属性值的逐渐变化来实现动画效果。
CCScaleTo和CCScaleBy:产生缩放效果,使节点的缩放系数随时间线性变化。
CCRotateTo和CCRotateBy:产生旋转效果。
CCFadeIn和CCFadeOut:产生淡入淡出效果,其中前者实现了淡入效果,后者实现了淡出效果。
CCFadeTo:用于设置一段时间内透明度的变化效果。
CCTintTo和CCTintBy:设置色调变化。可以理解为RGB颜色中的某一种颜色值变化了。
视觉特效动作:一些特殊的视觉效果。
CCBlink:使目标节点闪烁。
CCAnimation:播放帧动画,用帧动画的形式实现动画效果。
控制动作:对一些列动作进行精细控制。
CCDelayTime:将动作延时一定的时间才执行。
CCRepeat:把现有的动作重复一定次数。
CCRepeatForever:现有动作一直执行下去。
复合动作。复合动作是由一些基本动作一起组合成的新动作。可以满足游戏需要的复杂动作需求。
CCSpawn:允许一批动作同时执行。
CCSequence:顺序执行一系列动作。
CCSpeed:改变动作执行的速度。
CCActionEase:是一类动作,不同于CCSpeed的匀速执行,CCActionEase允许多样化地控制速度。
CCEaseRateAction
CCEaseIn
CCEaseOut
CCEaseInOut
CCEaseExponentialIn
CCEaseExponentialIn
CCEaseExponentialInOut
CCEaseSineIn
CCEaseSineOut
CCEaseSineInOut
CCEaseElastic
CCEaseElasticIn
CCEaseElasticOut
CCEaseElasticInOut
CCEaseBounce
CCEaseBounceIn
CCEaseBounceOut
CCEaseBounceInOut
CCEaseBackIn
CCEaseBackOut
CCEaseBackInOut
U3D的特效能用在COCOS2DX做的游戏里吗
那 quick 与 cocos2d-x 相比到底有什么区别,又有什么加强呢?这篇文章就是答案:
为什么会有 quick
quick 和 cocos2d-x 的差别
quick 由哪些部分组成
应该选择 Lua 还是 JavaScript
怎么入门 quick
为什么会有 quick
cocos2d-x 是一个用 C++ 开发的游戏引擎,其架构设计和 API 基本上是照搬的 cocos2d-iphone(一个用 Objective-C 的 iOS 游戏开发引擎)。
由于 C++ 对开发人员要求较高,所以网龙科技利用 tolua++ 这个工具,将 cocos2d-x 的 C++ 接口转为了 Lua 接口(这种将 C++ 接口导出为 Lua 接口的库通常称为 luabinding)。让开发者可以使用 Lua 这种简单易懂的脚本语言来编写游戏,从而大大提高开发效率。
大概在 2012 年上半年,我们公司开始使用 cocos2d-x + Lua 来开发游戏。但是发现当时 cocos2d-x 对 Lua 的支持还存在相当多不完善的地方。所以我重写了整个 luabinding 的支持代码,解决了内存泄露、只能使用全局函数做回调等问题。
在 cocos2d-x 2.0 发布后,luabinding 又进行了不少改进和完善。截止到 cocos2d-x 2.1.4,整个 luabinding 已经可以说是相当稳定了。所以《我是 MT》、《大掌门》这些赚钱像印钱的游戏,就纷纷采用 cocos2d-x + Lua 的解决方案了。
可惜 cocos2d-x 团队从 2012 年以来一直在强力推广 cocos2d-x 的 JavaScript 解决方案,所以在 Lua 支持上基本上就没有什么大动作了。而从我们使用 Lua 解决方案的开发商看来,需要 luabinding 具备更强大的功能,因此这就是我们开发 quick 的最初原因。
quick 的目标:
降低学习曲线
提高易用性
创建一个精简、但更容易扩展的架构
quick 和 cocos2d-x 的差别
虽然 cocos2d-x luabinding 已经很完善了,但是要开发一个游戏,我们还需要做许多基础工作。
将 luabinding 导出的 C++ 接口重新封装成 Lua 风格的接口是最基本的工作。重新封装后的接口应该更容易学习和使用,并且一些 C++ 和 Lua 之间数据格式转换也应该隐藏起来。而这就是 quick 里首先实现的目标。
同感。可惜不能。
cocos2d-x里面的粒子只有二维坐标。而U3D是三维的。
虽然可以解析粒子的配置文件(Prefab可以明文看),但是工作量等于重写一套牛x的粒子系统。估计没有几个人有这样的能力和时间。
今天的讨论已经涵盖了“cocos2dx塔防游戏源码”的各个方面。我希望您能够从中获得所需的信息,并利用这些知识在将来的学习和生活中取得更好的成果。如果您有任何问题或需要进一步的讨论,请随时告诉我。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。