要cocos2d-x斜45度里面怎么样做聊天界面

&&&&Cocos2d-x 手游聊天系统Demo
Cocos2d-x 手游聊天系统Demo
本篇博客给大家分享的是一个手游聊天系统,笔者也是第一次使用Cocos2d-x来实现这样一个模块,其中有很多不清楚不明白的地方都是通过自己不断摸索实现的,前面笔者对聊天系统做的简单的需求分析,只是对聊天的一些元素进行的说明还不太够专业。本篇博客会给大家介绍如何实现一个手游聊天Demo,会从代码层面上给大家做相关的说明,如有不对或者错漏的地方请各位明确指出并纠正。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
免积分&&极速下载60元/年(1200次)
您可能还需要
博客对应源码
移动开发下载排行cocos2d-x代码质量如何?
在问题有前辈提到Cocos2d-x的代码质量不好。究竟是那方面需要改进呢?
按投票排序
1. API兼容问题1.x和2.x:早期版本的cocos2d-x API是跟随cocos2d-iphone同步的。也就是说,当时目标方便已有的cocos2d-iphone游戏移植出cocos2d-x版本,把cocos2d-iphone用户转化到cocos2d-x上面来。很多人反馈引擎里大量使用宏的问题,也是在这个阶段发生的,因为需要大量去模拟Objective-C的语言特性。但是从2.x最后的结果来看,这个阶段的目标达成了。3.x:如前面网友所说,招募了Ricardo Quesada加入触控之后,为了提高逼格,对绝大多数API重新设计,使之符合英文语法习惯。当时有两种策略,第一种是每次改一点,第二种是一次修改到位,然后很长时间不需要再改。最后我决定采用第二种方案,长痛不如短痛。3.0的大规模修改之后,虽然被老用户大量吐槽,但cocos2d-x在海外的市场占有率的确大大提升了。另外, 从3.x开始和cocos2d-iphone断开同步,并进行超越。从目前来看,达成了这个目标,cocos2d-x已经成为cocos2d系列里面的主干。4.x及未来:我承诺,在API、namespace、以及文件目录结构方面,未来版本会在3.x基础不会再做大规模的改动。因为需要改的,在3.0里面已经修改完成。2. 开发效率问题触控内部也知道studio虽然有很多公司正在使用,但并不算成功。但很抱歉,上个月发布的Cocos Studio 2.0总算比1.x要好一些了,但具体反馈情况还需继续观察。我的策略是,类似于Flash的工作流,Flash Pro -& Flash Develop -& Package,把cocos的工作流设计为 Studio -& Code IDE -& AnySDK (optional) -& Package的过程3. 3D支持大家可以到Github上看一下我们新开源的3D游戏 ,采用Lua开发。4. 质量代码质量方面,我们在两年前就开始用持续集成测试了。大家如果到
上面看,但凡issue后面打个绿勾的,就是这个pull request代码改动在持续集成编译(ios, android, windows, linux, mac)上编译通过,而打红叉的就是编译失败不会被merge到主仓库。发布版质量方面,随着代码规模增加,即使同样的bug率,对大家而言直接感受就是bug数量增多了。这问题在上个月开始已经建立了QA团队来解决。以前都是引擎开发团队自己写自己写单元测试例来测的,但以现在的团队规模,没有专职的QA组就搞不定了5. 开发者大会一方面,如果从触控商业和投资者关系的角度来看,自然会理解为什么在开发者大会上需要找一堆使用了cocos2d-x做出top10游戏的知名游戏公司,以及全球巨头合作伙伴来了,没有众多合作伙伴、没有触控,cocos2d-x就不可能一直开源发展到今天,为无数公司提高效率降低成本;另一方面,多数听众的确需要从知名游戏公司身上学习到人家的游戏开发设计经验。我们邀请了cocos2d-x上的知名游戏开发商如刀塔传奇、Line、Square Enix、Aiming等来分享经验,人家也不是来刷脸空谈的。楼上有的朋友说who care,真正who care的只有下午的合伙伙伴场,但游戏场和技术场就挤到爆,游戏场我自己进去后都只能站最后面,到技术场一开门就被堵在外面,好不容易挤进去只能坐地上。如果各位虚心听的话,有很多可学习取经的内容。6. 技术支持对于处于中长尾的多数游戏开发者而言,cocos的技术支持力量已经捉襟见肘了。最早的时候都是我、小明、林顺直接在论坛和微博上做技术支持,那时候大家还算满意。但现在我们已经完全忙不过来了,多项目管理、内部流程、商业合作,就把引擎的几个创始人的精力全部拖进去。Q4我会重新梳理技术支持组的人员和目标,增加技术支持人员,在中英文论坛上给大家提供更好的技术支持服务。7. 其他首先,今天国内排行榜首的的手机游戏有60%~70%,日本和韩国30%~40,微信游戏56%是用cocos2d-x开发的。所以cocos2d-x的质量不是绝对完美,但能保证相对较高。其次,我做了很大的努力,尝试平衡开源和商业之间的关系,在对开发者完全免费,免费框架、免费工具、免费技术支持、让大家满意的情况下,同时:- 必须投资人还有个交代,- 必须面对国外10多年公司历史的竞争对手(cocos2d-x的历史只有4年),- 必须面对网络上的冷嘲热讽,我必须要面对这些么?其实我出去随便拿点投资自己做个游戏,赚得不会比现在差,也省得现在晚上7点半了还没吃晚饭,饿着肚子在这里回知乎的帖子。我努力达成的愿景是:- 做出国内最好的开源项目(达成)- 做出世界一流的开源项目(达成,github c++类项目长期全球前十)- 对开发者真正永久免费 (达成,对未来也比较自信)- 对上游服务如广告、支付、统计、云服务、推送等进行收费或分成,回报投资者(已接近,未达成)希望大家能给予理解和支持。不管有多少人嘲笑,我们仍然会一步一步把2D功能做完善,把3D功能和3D编辑器落地实现了。李书福做吉利汽车的时候不也是无数人嘲笑么,华为海思刚开始作芯片也被人嘲笑,技术落后并不可怕,可怕的是已经没有了挑战和超越的信心。
从cocos2dx 1.x开始接触这个引擎,已经用了两年。当前的项目基于cocos2dx 2.0beta。很多同学提到的内容已经不属于代码质量问题了,因此我的观点也分为两部分,先说代码部分问题,后说引擎本身相关问题。————————————————————————————————首先是代码相关的问题:API改动:从2.x到3.x,几乎所有东西都改了,但名字还叫cocos2dx。这是所有cocos2dx老用户心中的痛。可能是官方在招募了cocos2d作者后为了短时间内提升逼格而这么做的,好处是3.x逼格确实提升了,坏处就是2.x升级到3.x非常困难。看看其他童鞋的回答就知道了,大家的怨念有多深。对了,出版cocos2dx相关教程书籍的也都哭了。因此如果你想学习cocos2dx,买来的书上面的例子都过时了,不要奇怪。各种奇怪的错误:是的什么引擎都会有奇怪的问题,但是cocos2dx的问题明显多很多,而且官方解决问题的态度明显更不负责。cocos2dx没事就会更新个版本,alpha0,1, beta0,1 , rc0, 1像模像样的。我有收集癖,每个版本我都会下载下来编译,甚至发布到手机试试。但是这些大部分跑都跑不起来,经常上个版本是对的,这个版本又错了,beta版还是对的,正式版又错了。。。关于 plist:从3.x代码及相关工具来看,官方是准备废弃 plist 的,改用 json.返回常量引用问题:这一点在3.x基本都改了。各种奇怪的宏:这一点确实影响阅读,但时间久了也还算能习惯,不算太大的问题。————————————————————————————之后的部分为引擎本身的问题,想使用cocos2dx开发游戏的同学可以看下。周边工具不完善:这一点是该引擎的硬伤,官方在不断推CocoStudio, CocosIDE,但这两个东西BUG多的感人。昨天出了cocos引擎,说是整合了,我开开心心去下载,700多M的安装包,我心想难道做成Unity编辑器或者Unreal Editor了?安装后一看,桌面上多了几个快捷方式,包括CocoStudio和CocosIDE。。。敢情是这么个整合法。。。——————————————————————————————好吧,这个问题已经完全变成对cocos引擎的评价了,而非代码质量评价。我删除了对代码质量的总评,毕竟这是个主观的内容。个人当然是希望cocos走的更好,但仅靠希望是没有用的。cocos目前的形势已经非常严峻了,尤其是畅销榜新秀都是3D游戏。选择更好的2D还是加强对3D的支持,我才疏学浅,不好定论,但就目前来说,3D方面Unity是碾压cocos的。希望作者多体会下开发者的需求,仅凭脑残粉们的高潮是不够的。已为作者点赞,任重道远。——————————————————————————————————日更新已跳槽,还是用cocos2dx,我才是真爱
讲几个槽点吧.....API兼容问题我曾经尝试过把某大型手游项目从1.x升级到2.x,发现大部分API都改了。最要命的是某些API不仅仅是命名改了,连调用方式都变了......然后我大概花了两个多月才折腾出一个稳定版本......然后3.x出了,我看了下源代码后,惊喜地发现除非重写,否则不可能升级到3.x......跨平台编译问题某个2.x的项目需要在windows phone平台上面编译,我照着编译文档又折腾了一下,结果VS报了一万多个错误。当时我就跪了......另外也尝试过安卓下编译。因为我们需要一些第三方库加入到游戏中,然后就发现从1.x到3.x,基本上每个大版本的更新都会改项目结构,原来那些编译参数和makefile都得重新搞一次......对以上两个问题,官方的态度是:老游戏请尽量不要升级旧版本引擎。好吧........开发效率问题前面两个问题虽然也不小,但毕竟也不是天天会遇到的。开发效率问题才是真正的硬伤。Cocos2D始终缺乏一个好用的编辑器和开发IDE。当然他们确实意识到了这个问题,也推出了好几套工具比如说CocosBuilder,CocosIDE等等工具,但是这些工具到目前为止还是处于碎片化的状态,缺乏有效整合。反观Unity3D,从一开始就把他们的引擎打造成编辑器+IDE集成的形式,开发效率可以说已经全面超越Cocos2D了。(虽然他们也bug一堆)3D支持太少随着手机硬件的进步,游戏3D化是未来的趋势。不得不说,Cocos2D目前还没有把自己当成一个3D引擎来发展。但是看一下PC上游戏的发展史就知道,即便是2D游戏也会逐渐引入一些3D的建模和效果,长此以往,Cocos2D有被边缘化的危险。其实边缘化的趋势早就已经开始了:据前一段时间的统计,世界范围内cocos2d的市场份额正在不断下跌。中国范围内cocos2d虽然还保持在50%-60%左右,但从长期的角度来看也是无法扭转下跌趋势的。这一段具体的出处我就不贴了,各位google一下就知道。利益相关:某MMO手机游戏主程,cocos2D三年用户,提交过一些代码,目前退坑保平安。因为都是一个圈子里面的,抬头不见低头见,有的话实在不好意思说,就匿了,大家理解下。觉得我说得有道理,麻烦点个赞就成。Update: 刚刚看了Cocos引擎的发布会,感觉触控的这帮家伙们终于把资源投到正确的地方了....前面黑了他们这么多总算可以说几句好话了(笑)。把Cocos2D改成Cocos引擎,看起来的确要学U3D了,至少从目前得到的资料看起来他们的确正在尝试解决我提出的后两个问题。具体效果如何,还没用过新引擎暂时不作评论。不过这么一来商业化看起来也是不可避免的趋势。当然这不是坏事,大家都要吃饭的嘛。如果有好用的引擎能大大节省开发者的时间,为此掏点钱也无妨。最后还是希望触控的大大们多完善些功能,少改点API....如果实在要改麻烦还是能给一个向前兼容的方案比较好.....跪谢了......Update 2:今天试用了cocos引擎......用一句话概括就是,设计逻辑上先天不足,只照顾到了程序员而没有照顾到不懂程序的策划和美术,没有js支持是硬伤,前景堪忧。还有很长的路要走啊。
记得云大在skynet群里说粒子那部分,他用300行代码就搞定了,可是cocos2dx写了上千行。。。。//当初看他们聊的本菜鸟,还特地复制了下聊天记录,不是截图。部分内容有删节,大家看看就好//我不知道这样贴聊天记录是不是合适 @ 你要的出处~
云风 国内另外几个山寨的也是用
cocos 抄的, fps 更低 香蕉周刊
20:20:30 cc 为了降低门槛 做了很多很sb的东西
20:20:38 粒子多了不流畅
20:20:51 云凤 你们e2d有粒子系统嘛
20:21:05 这种东西一个下午就做了
20:21:08 需要自己做
300 行代码而已
20:22:38 一个下午做不完吗?
其实就是翻译的 cocos 里的
不是优化版,是重新用 C 实现了一遍而已
20:25:40  321 行
完全一致的
20:26:03 这个设计的很糟糕
20:26:19 不应该这么做粒子系统的, 我们只是为了兼容而已
粒子不应该用 sin cos 这些三角函数做 香蕉周刊
20:27:43 为什么
20:27:46 这是初中数学水平设计的 广州-牧
20:27:56 那应该用啥 广州-clear
20:27:57 上过大学的都知道用矩阵
20:28:17 2d 3d 只是矩阵的维度不同而已,算法是一致的
20:30:00 而且 cocos 那个里面还用角度, 然后每次算的时候都转成弧度, 算完再转成角度
当时我都看得无力吐槽
我是从2.0开始用的,精灵渲染的各种混合错误就不说了,各种奇葩的所谓设计模式更是让人抓狂。3.0正式版发布后,通过vld发现引擎卸载时有内存泄露,已经删掉的配置系统单件实例在其他模块卸载时又被重新new出来。当面问过@王哲,说在ios下没有泄露,即便有,操作系统在退出时也会释放,超级无语。一个跨平台引擎,编辑器框架居然使用了超级冷门的微软的wpf。现在已经全面转向u3d,心情好多了
我觉得所有在回答里吐槽的同学,真不如去github上push几个request来的更痛快。—————————————我是华丽的分割线——————————————开源项目本身就是一个开放的社区,创始群体的本意是希望大家共同来建设和维护。如果觉得有改进的空间,fork出来一个版本,push一些你觉得不爽的request就好了。而不是继续当伸手党在那里无责任吐槽。而这些吐槽的本意在我看来更像是,“啊啊啊,这个开源项目我用的好不爽啊,谁来帮忙改一下啊!”,请自行脑补那种爱吐槽自己团队工作的奇葩。其实这个问题还可以延伸到:linux的代码质量如何,openssl的代码质量如何等各类问题。任何开源项目局部的代码质量肯定不是尽善尽美,肯定都有其修改的空间,而这个不断完善的过程也是社区发展的动力与基石。openssl还爆过心脏出血这么坑爹的安全性bug,也没见几个彻底抛弃了openssl的,有问题修复了,继续前进就好,没有必要纠结在那里停滞不前。看到答案里有转云风同学吐槽的文章的,我觉得云风同学在微博等地方持续吐槽cocos2dx的这种情况,只能让我联想到郭德纲相声里常说的一句话"同行是冤家",而程序员这个热爱分享与自由的群体本不应该是这个样子,云风大大完全可以用他多年的积累帮忙完善这个社区,比如他写的那个粒子部分的代码,我觉得依然有优化的空间,但是又能怎样呢?还专门建个分支以挑衅式的证明自己的牛逼,我觉得这个态度挺low的,push一下就知道问题不只是这1个cpp就能解决的,很多时候需要融合在引擎里,兼容性没有问题才算最好。从我参与过的和观察过的开源项目来看,一个开源社区想做大,非常非常不容易,创始群体不仅要孜孜不倦的维护,也一定走过了一条非常孤寂的道路才能把社区做到如此水平,我在写一些开源项目的时候,经常会遇到如下对话。同事:“你老写这玩意儿图啥啊?”我:
“给大家搭建一个更好的平台啊”同事:“平台搭好了,你落着啥好处了?”我:
“呵呵,诶,对面新开了家面馆听说不错,你可以去试试~。”这就是做开源的同学,在天朝经常遇到窘境。cocos2dx开源项目本身提高了所有开发者或者说游戏程序员的附加值。更重要的是降低了手机游戏开发的制作门槛。从资本层面讲,资本更希望项目是闭源的,这样才能提高进入门槛,让自己的收益最大化(参考Intel和AMD)。而开源项目则是很多混迹于闭源大公司的程序员同学为了提高自己的附加值,搞出来的项目。这刚好是程序员群体追求分享精神,追求自由的一种表现。所以我欣赏 Stallman,欣赏 linus,也欣赏王哲。对于题主的答案我觉得cocos2dx无论代码质量如何,至少是社区规模较大,且持续更新频率最高且开源的项目,我觉得从这几点来看,如果想搞手机游戏开发,都值得一看。游戏引擎,如果是闭源的,我觉得那才是有点儿坑,unity的loading的底层加载方式你只能通过开大会给你透露的一点点信息来获取,想优化都无从下手。虽然他出demo飞快,但是游戏开发中的优化移植或者加个新feature如果能自己掌控,那对于开发者来说效果会更好,而不是我向引擎方提反馈,引擎方根据自己的时间来安排修改。这一点unreal做的不错,至少给全代码。利益相关:cocos2dx使用中,unity,unreal各类引擎研究爱好者。
只说用的比较广泛的2.x,从代码质量上只有吐槽的份了:1 到处是莫名其妙的宏2 各种未定义行为,感觉稍微正规点高校出来的学生都不会出现这种问题3 使用c++但是没用任何模板,给对象绑定函数也没法使用任何函数对象个人看法基本上就是一个打着C++幌子,使用C编写的模仿OC的东西
我是来感谢 触控团队 和 cocos2d-x 引擎的,没有触控在这个开源引擎上的投入的话,我和许多我所认识的小公司将会举步维艰。我是在14年初开始使用cocos2d-x,在次之前使用 Adobe AIR 做手游的开发, Adobe AIR 的全封闭环境和堆积如山的 jira bug list 让我们团队实在无力吐槽。更要命的是没有完善的适合手机的UI系统(Starling是一个真坑),当时项目开发的速度非常缓慢,许多基础的渲染实现都需要手敲AGAL(敲到每天吐血三升)。我们把当时的项目运维结束之后,果断决定迁移框架和工具链。同时看了Unity3D 和 Cocos2d-x。由于进入的时间关系,我是从 Cocos2d-x v3.0 beta 开始接触 Cocos的,所以这可能就是在我眼中 Cocos2d-x满满都是美好的原因。U3D 和 cc2d-x 想比之下,开发效率相差不是一点半点。 cc2d-x 的真正魅力在于 lua-binding + 完整的命令行工具链。我们现在的项目,采用 cc2d-x 作虚拟机,moonscript 做代码编写环境,lua 做代码执行环境, busted 做单元测试环境,加上自动化的编译链 和 测试链。开发效率有了本质的飞跃。从而使我们能够把主要的精力倾注在产品的体验上。游戏啊游戏,失去了可玩性的话,还算什么游戏呢?在12年的时候,我也尝试使用过 cc2d-x,但是由于图像的加载依赖文件后缀名等一系列不太专业的实现缺陷而没有使用 cc2d-x。 所以一年以后,看到 v3.0 的重构力度时,我真心佩服触控实在下了大血本。 v3 的实现结构给我的感觉就是一个字:“专业”。v3 的可扩展性很强,代码之间的耦合性大幅降低,在遇到需要对cpp的实现进行修改时,我发现修改都可以被控制在一小代码片段中(开心)。 另外,想多嘴说一下对 cocos 的 GUI 工具的看法,我觉得这是一个很大的悖论:一方面没有简单易用的GUI的话,cc2d-x无法快速普及。另一方面要满足做出专业的精品化的游戏产品,触控的GUI团队在这方面缺乏积累(这是U3D的优势)。这样的话会不会导致,在未来可见的几年中,GUI将处于一个玩具的位置呢?若是如此,将会损耗触控的商业模式。那么如果真面临这样的情况的话,是否能够给GUI用户一个可以预期的退出点,让小白用户经历了GUI之后,变得更加专业呢?如果小白用户通过GUI能够升华的话,是否能够把他们引导到云服务器平台上呢?这样对开发者和触控都将是双赢的。
对这个引擎的底层实现研究的不多,所以我这里只是从一个使用者的角度简单说几点吧:1. 资源管理过于简单,缺少资源预先加载和分组管理这些常用功能,引擎的资源管理基本上就是一个文件路径加上一个引用计数;2. 抽象层次混乱,对于使用者来说像sprite这样在抽象层次上已经是较高的了,在里面直接使用底层opengl里的概念设计方法,比如设置Blend Func;3. 类的命名不自然,比如MenuItemFont,第一次接触的时候我差点以为这就是一个Font类;4. 大量的使用了宏,这个应该是因为Object C里很多的语言特性在C++里没有,所以只好用宏模拟了,这些宏的存在很影响阅读。
我是后端的,做了websocket后,cocos2d-x连不上。google之后说是少了origin,就去尝试修改cocos2d-x的代码。看了cocos2d-x的websocket部分的代码,感觉很一般。不过也可能websocket是外围,开发就写的比较粗糙。
一般代码质量不太好也不会去作死,但是cocos2dx作的一手好死,2.x到3.x,一堆api和函数名全变个底朝天。怎么个变法?就是你上网上找的例子代码90%都是2.x的,你用3.x绝对报一堆的错误,然后你要去找新的名字是什么,一点点代码还好,但是如果是已经完工的项目想升级版本,呵呵呵呵呵呵呵呵呵呵。代码里面各种蛋疼的地方我就不详细吐槽了,但是物理引擎封装的我简直要吐血身亡。本来别人有的比较核心的功能非要去屏蔽掉,结果想用都用不了,摔!一个有追求的程序员应该对自己的产出有着近乎完美的追求,就算不那么苛刻,能不能发布版本的时候认真一点!3.2的正式版本居然生成的工程文件里面把android工程的build path写错路径了!我还郁闷了好久为什么空白的项目都有配置错误。我觉得一个东西的用心程度可见一斑。
其实不反对COCOS去追求3D,但实际上我觉得更应该把握好2D市场份额。简单来说,目前的2D引擎在API的可用性方面还有较大的提高空间的情况下,就贸然的去做3D相关内容是一个错误的选择。开发过3D游戏的同学都清楚,实际上不是写一套解析3D数据格式,将3D对象渲染出来就是3D引擎了。它最核心的内容是一个编辑器。就跟unity与虚幻做的一样。这不是一蹴而就的。这需要丰富的产品经验与解决方案,你现在就想去抢占他的市场份额是不现实的。而单单从做出来的studio我就可以发现,实际上cocos团队并无更深层次这方面经验可谈。实际并没有了解到一个开发人员的真正需求所在。一个简单的例子,早期我在选择ui编辑器的时候是考虑过studio的,但是后来我发现她并不支持我自己自定义的plist。也就是说我无法自由的选择我的材质合成规则。这是我无法忍受的。所以我个人认为cocos团队更应该做好的是2D方向的接口设计与功能完善(嘈点太多,我实在无力吐槽)。就我个人而言已经在考虑放弃cocos的边缘了。因为unity已经开始大范围的支持2d部分(虽然他不是免费的,也不是开源的)。但是一个公司的策略并不是一层不变的。我相信当有一天它(unity)改变了他的商业策略后,对cocos的冲击将是明显的。
代码组织不规范 以后细说, 各个时期代码都有,先占坑。目前使用版本 const char* cocos2dVersion(){
return "2.2.3";}获取控件尺寸,不同控件有不同写法 getContentSize, getDimensions,getSize,getTextureRect(). 很不爽代码功耗是否太大有待证实,设备的发热量很大。
这真是个奇怪的现象,大家普遍都觉得cc2dx的代码不好,但他却是发展最快的开源引擎,而且大家也只是边骂边用,没有自己花心思去再度开发新引擎,这恐怕这还是和急功近利的手游市场脱不了关系。
仔细读过了Cocos2dx大部分的代码,感觉维护引擎的人的水平参差不齐印象比较深刻的就是CCTableView的初期版本,一开始以为是福音,打开代码一看各种问题UI方面,没有一个统一的框架,CC系列UI Widget系列UI External系列UI共存,该删的代码还是要删如果说外围的东西写的不是很用心的话,咱看看核心的代码,一个是消息机制,EventDispatcher,职责实在太多,耦合性挺高的,并不是一个简简单单的消息机制,再往前推,CCNotificationCenter,这个里面的代码把我吓尿了,每次触发一个消息,create一个数组把整个监听者列表拷贝一份,然后让它自动delete,就为了解决触发消息时动态增删监听者这么一个异常,EventDispatcher虽然这方面没这么笨,但这代码看上去也是怪冗余的再说一个CCNode,3.0之后往里面添加了物理的功能,这显然并不合理,一大堆预处理把代码的可读性降到最低,虽然说CCNode中的物理需要设置才会生效,但从面向对象的角度看,不应该在Node中,这样强迫所有的Item,Scene,Sprite等等全部拥有这个物理属性,但实际上游戏中需要物理属性的对象,非常少。然后其他各种影响效率的,不是最佳写法的小细节,还有冗余,也蛮多的,就点到为止吧
我之前是写flash3d引擎的。想学习一下opengl。然后我就看了一下cocos2d-x的源码。关于c++语法的问题我就不说了,因为我自己本身也不会。只说引擎方面,现在我记得住的。1、批处理那里,不应该更新所有的,顶点数据是支持更新一部分。2、矩阵应该用四维矩阵,位移、旋转、缩放都应该是基于矩阵的,而不是用三角函数转换然后填充到一个三维矩阵,再由三维矩阵转换成四维矩阵上传到显卡。3、个人觉得整个render就是多余的。4、还有一些其它七七八八,记不清了,当时看的时候给我的感觉就是引擎不应该这么写。有些地方性能损耗其实挺大的。
如果cocos按Entity,Component,System这样流行的游戏开发方式来做就好了。不过如果这样做,cocos可能就不是一个小白的工具了,也许就不会这么流行了。不过cocos经常在不同实现方案中选择较差的方案,应该是历史问题或者其他问题。
我们使用cocos2d-x结合titanium做跨平台的行情图(股票)。有点大炮打鸟打鸟的感觉。坑真的遇到不少,因为3.x概念变了,我们没法升级到3.x。最想说的是,因为是单例模式,没法在两个glview上画两个行情图。说到代码质量,还是不错的。而且通过自己的努力,2.x可以通过arm64编译。
哈哈,楼上都把我想吐槽的吐的差不多了...
我来吐槽下cocos code ide。一个字:卡(间歇性的卡,抓狂...),两个字:奔溃(一直开1、2个小时就会挂掉)!一个高逼格的开发工具真不能和这两点沾边!!这种直接影响用户体验的问题为何一直没有相关领导 重视,如果连这种问题都解决不了的话,那这个ide就没有存在的必要了!!!
已有帐号?
社交帐号登录
无法登录?
社交帐号登录

我要回帖

更多关于 cocos2d-x 的文章

 

随机推荐