cocos2dx官网是完全免费的吗,还是想像虚幻4一样用于商业就要收费

Cocos2dx的作者王哲来到公司给大家做了一场技术答疑会 以下是我及我们项目组的一些Q&A 1. Cocos2dx 3.0版本在引擎退出时, 会有内存泄露 我:本来以为这个在rc1版本中发现的问题会在final版本中解决, 但实际上还是没有解决. 本人使用的是Windows下的VLD的内存泄露检测, 多年来这东西一直没有误报过, 虽然这个泄露不是很大, 但会干扰在这引擎上开发的逻辑的内存泄露查找
王哲:Cocos2dx的内存泄露测试是在XCode下进行的, 借助mac平台的工具来做的, 他说, 虽然操作系统会在进程结束时会自动回收, 但还是会在patch版本解决这个问题. 2. Cocos2dx 3.0 中的getInstance设计问题 我:3.0中的singleton是使用自动new的方式来实现的, 对象都是分配在堆上, 而不是栈上. 这种方式的特点就是在singleton为空时, 自动new出来, 从而让上层保证使用简单. 但是弊端就是前一个问题说过的, 如果处理不当的话, 会导致内存泄露. 3.0中的Director在析构时, 会先删除Configurator的一个配置类, 但是, Renderer在析构时, 又会使用到这个配置类, 调用配置类的单件, 从而导致配置类重新实例化. 之后, 就没有管理配置类的析构, 所以发生内存泄露. 我尝试修复这个问题. 但是因为getInstance本身的设计弊端,导致拆东墙补西墙, 东墙又倒掉的问题. 王哲: 已经发现这个问题, 会在未来版本加以修正 3. 为什么不自带更新系统 王哲: Cocos2dx引擎一开始设计是偏重于渲染器, 所以包括网络及其他部分都是属于附属. 现在开发团队只有10个人, 所以精力也是有限的 另外, 每个公司和个人对更新系统的需求都不是一样的. 不过引擎会在以后版本中的ResourceManager提供一些类似的功能 4. 帧率控制器 我: 游戏一般分为固定帧率和可变帧率两种更新方式. 前者在早期的日本游戏中常见, 后者是3D游戏及后期的游戏中用的比较多. 在U3D中分别使用FixedUpdate和Update两种方法来实现类似的功能. 但是在Cocos2dx中没有实现类似的功能. 王哲: Cocos2dx里因为要处理一些复杂的情况, 比如接听电话之类的, 所以这里仍然使用可变帧率来做. 我: 虚幻里有一套更新算法, 在帧率足时, 击中处理一些垃圾回收, 内存释放等耗时操作. 但是超过预设的阀值后, 停止占用帧更新时间, 留给逻辑足够的更新时间. 但是没看到Cocos2dx内使用这种算法 (其实王哲应该没听懂我说的意思) 王哲: 我尝试在3.0的渲染器中支持多线程, 但是在某些情况会出现crash, 而且这种技术的加入会提高引擎的门槛, 所以未来会根据实际需要加入. 5. 为什么不统一setResourceRootPath/setResourceDirectory 的接口? 这是我们项目的一个兄弟做下载更新时, 碰到的2.0中的一个问题. 王哲表示3.0已经做了1年半, 2.0的东西都忘记了, 但是在3.0中是统一的接口. 6. 如何看待云风喷cocos2dx? 这是我们项目的一知乎粉提的问题. 王哲说, 云风对C++很反感, 所以自己的代码及项目大部分都是C. 因此对cocos2dx这种C++引擎肯定会有些反感. 但是cocos2dx的使用率很高, 不能因为一两个大佬的意见而改变cocos2dx本身的一些优势 7. SpriteFrame和纹理的释放问题, 为什么不使用智能指针? 王哲: 我做过一个测试, 智能指针在移动设备上跑的速度肯定是要慢于retain/release这种手动方式, 所以依然在3.0中采用retain/release方式.
我: 我们有某些资源需要常驻内存, 但是全局方式的SpriteFrameCache和TextureCache会导致这个问题很难解决. 能否提供分组资源管理概念 王哲: 这个修改其实没什么难度, 论坛里也有很多建议, 我们会考虑在新版本支持这些功能 8. Scene的接口不统一, 用错还会crash 王哲: 这个问题确实存在, 我们会加以修正 9. 为什么要对STL进行一些包装, 而不是直接使用? 王哲: 因为要适用于retain/release模式( 此时, 我终于发现我们为什么会出现第七个问题了) 10. string为什么需要一种垃圾回收机制来进行回收, 而不是直接用string? 王哲: 这是一个历史遗留问题, 为了兼容objc版本的移植及风格 & 其他的一些信息 CocoStudio是使用WPF写的, 底层使用P/Invoke与C++引擎层进行交互. 有人提出这个编辑器要开源么, 作者表示后期会考虑的, 但是因为代码很乱, 所以一开始没有考虑开源 本人感受, 微软的一切开发工具及代码的东西都是按商业模式做的, 根本不考虑开发者的利益. DX7到DX11, 说好的COM兼容, 最后改的一塌糊涂. MFC那么老掉牙的东西, 到VS2013都还在更新, 这不是祸害群主么. XNA退不起来, Silverlight干不过Flash. 更别说乱的一塌糊涂的WP, WindowsRT, WinPhone. 对于VisualStudio来说, 这是地球上做的最好的编辑器, 保留这个足矣, 但是也别太依赖即可. 拥抱开源, 珍惜生命, 远离微软 WP版的Cocos2dx支持是微软设在西雅图的一个叫OpenTech的公司来做的, 并非王哲团队做的. 而且DirectX现在变成小众API, 因此这公司采用AngleProject来用OpenGL模拟DirectX的接口, 当然性能上肯定有很大的损失 最后附上王哲团队的照片以鉴真伪
阅读排行榜cocos2dx3.0声音的使用 - cocos2dx技术 - 泰课在线 - 国内最大的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho
cocos2dx3.0声音的使用
& & & & cocos2dx3.0声音的使用下面做以详细说明
照旧,首先新建一个工程~(啥?怎么建?!。。。,出门,往前找)
首先,要知道,cocos2d-x为音乐,音效等单独成立一个类,直接头文件包含过来即可——SimpleAudioEngine.h
里面的成员函数有:
——关于背景音乐:
//预加载背景音乐
SimpleAudioEngine::sharedEngine()-&preloadBackgroundMusic(music/xxxx.mp3);
//开始播放背景音乐,true表示循环
SimpleAudioEngine::sharedEngine()-&playBackgroundMusic(music/xxxx.mp3,true);
//停止背景音乐,这是一个缺省参数函数,传参表示是否释放音乐文件
SimpleAudioEngine::sharedEngine()-&stopBackgroundMusic();
//暂停背景音乐
SimpleAudioEngine::sharedEngine()-&pauseBackgroundMusic();
//重头调用背景音乐
SimpleAudioEngine::sharedEngine()-&rewindBackgroundMusic();
//返回布尔型参数,表示是否在放着背景音乐
SimpleAudioEngine::sharedEngine()-&isBackgroundMusicPlaying()
//设置音量0.0-1.0
SimpleAudioEngine::sharedEngine()-&setBackgroundMusicVolume(0.5);
——关于音效
//预加载音效
SimpleAudioEngine::sharedEngine()-&preloadEffect(music/xxxx.mp3);
//开始播放背景音效,false表示不循环
SimpleAudioEngine::sharedEngine()-&playEffect(music/xxxx.mp3,false);
//停止音效,可以选择单独停掉一个音效,这个值是由playEffect返回的
SimpleAudioEngine::sharedEngine()-&stopEffect(m_nSoundId);
//停止全部音效
SimpleAudioEngine::sharedEngine()-&stopAllEffects();
//暂停单个音效
SimpleAudioEngine::sharedEngine()-&pauseEffect(m_nSoundId);
//重新开始音效
SimpleAudioEngine::sharedEngine()-&resumeEffect(m_nSoundId);
//暂停全部音效
SimpleAudioEngine::sharedEngine()-&pauseAllEffects();
//重新开始全部音效
SimpleAudioEngine::sharedEngine()-&resumeAllEffects();
//设置音效音量0.0-1.0
SimpleAudioEngine::sharedEngine()-&setEffectsVolume(0.5);
//卸载音效
SimpleAudioEngine::sharedEngine()-&unloadEffect(music/xxxx.mp3);
其他的,看一看API文档吧
要注意一下,光加了SimpleAudioEngine.h头文件还不管用,在调用函数时,
也要加CocosDenshion命名空间
using namespace CocosD
也可以在每个SimpleAudioEngine前面加 CocosDenshion::
加音乐,先加两个按钮,一个开关按钮,音乐的开与关,一个音效按钮,
本博文使用素材及代码,会在文章末尾给出。
开关按钮,示意(有些简陋,见谅呀~。~):
开关按钮的定义:
// 添加 声音& 的开关按钮
&&&&MenuItemImage *_turnOn,*_turnO
&&&&_turnOn = MenuItemImage::create(
&&&&&&&&button_voi_on.png,
&&&&&&&&button_voi_on.png);
&&&&_turnOff = MenuItemImage::create(
&&&&&&&&button_voi_off.png,
&&&&&&&&button_voi_off.png);
&&&&MenuItemToggle *toggleItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuMusicCallback,this), _turnOn,_turnOff, NULL);
&&&&toggleItem-&setScale(0.3f);
&&&&toggleItem-&setPosition(Point(visibleSize.width/3,visibleSize.height/2));
很简单理解吧,定义两个按钮,按钮两个图片分别是 常规显示和点击时候的显示。
因为是开关按钮,要用MenuItemToggle来关联一下,别忘了在.h中声明回调函数哟。
下面两行,一个是我的图片资源太大了,缩小了一下,第二个就是放置的位置。
还有实现,音效的按钮,这次选的音乐是——经典中的经典 超级玛丽 的音乐,音效是 吃生命蘑菇的那个音效
当然,图片必须的用个大绿蘑菇啦~
添加小蘑菇按钮:
// 添加小蘑菇按钮
&&&auto moguItem = MenuItemImage::create(
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mogu_1.png,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mogu_2.png,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&CC_CALLBACK_1(HelloWorld::menuMoguCallback,this));
&&&moguItem-&setPosition(Point(visibleSize.width*2/3,visibleSize.height/2));
然后,预加载背景音乐和音效:
// 预加载背景音乐和音效
SimpleAudioEngine::sharedEngine()-&preloadBackgroundMusic(music/back_music.mp3);&
SimpleAudioEngine::sharedEngine()-&preloadEffect(music/eat_mogu.mp3);&
其实,这一步不写也行,因为我们内容很少,可以直接去找,费时不多。
但如果以后东西多了,避免卡、慢,就需要预加载一下了。
init里,先播放一下音乐:
// 先默认播放背景音乐
SimpleAudioEngine::sharedEngine()-&playBackgroundMusic(music/back_music.mp3,true);
// bool类型,判断背景音乐是否暂停
这里的isPause是在头文件中定义的,用处是判断音乐是否已暂停。
两个回调函数:
voidHelloWorld::menuMusicCallback( cocos2d::Ref* pSender )
&&&&if( isPause==false)
&&&&&&&&SimpleAudioEngine::sharedEngine()-&pauseBackgroundMusic();
&&&&&&&&isPause=
&&&&&&&&SimpleAudioEngine::sharedEngine()-&resumeBackgroundMusic();
&&&&&&&&isPause=
voidHelloWorld::menuMoguCallback( cocos2d::Ref* pSender )
&&&&SimpleAudioEngine::sharedEngine()-&playEffect(music/eat_mogu.mp3);&
如果,足够细心,会发现,SimpleAudioEngine里有函数来显示,当前背景音乐是否播放:
//返回布尔型参数,表示是否在放着背景音乐
SimpleAudioEngine::sharedEngine()-&isBackgroundMusicPlaying()
为什么,要设置一个变量来管理呢?
这个,我当时在这出了问题,后来往前一直找,发现,
<a href="/kf/656.html#" class="toolbar_item command_hel
后发表看法
Unity VIP会员①群
Unity VIP会员②群
HTML5公开课①群(hot!)
HTML5公开课②群(new!)
Cocos2dx公开课①群(hot!)
Unity公开课①群(2000人群)
Unity公开课②群(2000人群)
Unity公开课③群(2000人群)
Unity公开课④群(2000人群)
泰斗社区求职招聘①群
工作时间: 9:00 - 17:00
北京客服: 010 -
广州客服: 020 -怎样看待越来越多cocos2dx程序员转unity3d,unity是否是大势所趋_百度知道
怎样看待越来越多cocos2dx程序员转unity3d,unity是否是大势所趋
a,java等),其他小团队只能依赖引擎方的.综述,最近这个版本的cocostudio才感觉不卡,估计是不可能,一边借鉴2d插件来开发原生2d功能:虽然不少程序员不太适应组件式的开发思维。所以还是cocos2d-x这个开源的C++引擎做起这些接sdk之类的平台相关的工作比较灵活.x是完全没有这个限制.x只有收费版才能支持和平台语言通信(obj-c,要发布成原生版本还是有许多坑要探索,因为不允许和平台语言互调,触控再用这个知名度去拿一些海外作品的代理间接变现,cocos2d-x想要追赶没那么容易,反观cocos2d-x已然乱了阵脚,程序员专注于游戏逻辑,只需简单的设置,也就是说个人免费版也可以调用java或obj-c写的插件了。配合强大的编辑器。3。然而后面为了追求在财报上直接体现引擎的价值:相比cocos2d-x那种还要打开ide导入工程才能发布跨平台的原始方式,cryengine这些3A领域的霸主.专注2D、人力都充足的中大型团队可以在开源的基础上改造改进,跟平台语言相互调用也方便。而Unity做了好用的编辑器,无论是做更能给资本讲故事的重度游戏。而收费版只是要求一年挣了十万美刀的用户必须买个正版,这期间坑多得让很多人都不想陪着踩一直用着2,又搞web和3d.先说说为什么cocos2d-x之前那么火,万一引擎坑了可以马上改:a.x期间引擎架构改了,能够满足大部分游戏开发者的需求1,许多技术实力强的团队也完成了自己的改造,一边提升3d方面的质量。手游行业现在已经进入了资本垄断大众市场。唯一不足的就是某些平台的发布体积较大。Unity在4,获得独立游戏开发者的青睐是非常有意义的。d,更开发了新的ui系统(这部分还开源了),而5,看国产排行榜上多少个游戏是用我开发的……然而用起来是那么的艰涩,Unity很早就支持了一些平台的一键发布.收费模式。因此当时在手游领域,甚至自己开发定制的插件。b。所以我个人认为,然而Unity 3,不买正版等于没法接各种sdk.cocos2d-iphone的口碑,比虚幻4那种要贡献部分收入的政策简直太良心,一日千里,独立游戏争鸣小众市场的时代,然而配合稳定流畅设计合理的编辑器,除非是技术实力,Unity都能很好提供一整套的成熟的解决方案。c,这也让adobe互联网多媒体的霸主地位开始动摇,稳扎稳打.再说说Unity3d更值得选择的原因。顺便说下像虚幻4。值得一提的是直接发布webgl版本(通过il2cpp将c#字节码编译成c++再用emscripten将c++编译成js),整个战略都十分清晰稳健。反观cocos2d为了兼顾web.x~4.领先的3d和日渐完善的2d支持,想要在手游和独立游戏这里跟Unity争抢一亩三分地:Unity在13年下半年才正式发布2d游戏的原生支持,需要优化。反观cocos2d-x,没法用个人免费版接sdk,还是追求艺术理想的独立游戏.x到3,什么都想做,Unity的3d部分是比较成熟的,节省了宝贵的开发时间,cocos2d-iphone作为iphone上早期的开源项目知名度和开发者数量都挺不错,看我什么功能都有,很多工作可以分配给策划和美术:虽然Unity也能跨平台还是一键发布.开源,也就几千刀而已.强大的编辑器,连新建工程都一个版本一种方式,只是在宣传上下足了功夫。c。2d的支持虽然比较晚出来,结果是花费大量精力去做到js和c++方面api的步调一致,在发布的时候发现即使在web上流畅跑起来。必要时通过资源商店可以购买种类丰富的插件和美术资源,之前作为一个开源的跨平台手游2d引擎打出知名度,这方面的积累还是不够:现在的时代.x。以上拙见仅供参考。2,还有通过建设资源商店以及游戏视频分享平台等等周边服务来维持一个健康的生态,对引擎来说,设计了十分友好的制作和发布流程,目前时髦的浏览器都可以直接运行,什么都没做好,在远景上已然黯淡,Unity是游戏从业者的一个比较好的选择:cocos2d-x本来是前景一片光明的.x的时候还扭扭捏捏,开发2d是比3d更可控,之前必须依靠插件才能比较顺畅的开发2d游戏。d,现在好不容易稳定了。b.x时期,独立游戏是创新的代名词,但是之前的许多优秀2d插件已经证明了Unity可以胜任2d游戏制作,显然已当时的手机性能,去走一条大而全的道路.跨平台,坑是一点点填得差不多了,2d的流程还没做好,无须任何插件.方便的跨平台,以此为根基牢牢把持住3d引擎最大的市场占有率的同时。2,之前的用几十分钟就卡得不行……功能上算是慢慢赶上来了:这也是触控把cocos2d之父从Zynga挖过来做VP的原因之一:经过10年的积累以及近几年的高速发展,然而要达到unity那种随心所欲扩展的境界,已经失了许多人心, 然而cocos2d-x在2,包的大小比较容易控制,cocos2d-x可谓突飞猛进,搞出了cocos2d-js这样的方案:每个CTO都认为开源可以更好的掌控引擎,流程更短
其他类似问题
为您推荐:
大势所趋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么用vs2013开发cocos2dx - cocos2dx技术 - 泰课在线 - 国内最大的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho
怎么用vs2013开发cocos2dx
有的人不知道怎么用vs2013开发cocos2dx,因此我找到了一篇关于怎么用vs2013开发cocos2dx的文章,在这分享给有需要的朋友。
cocos2dx3.0beta
android-ndk-r9
---------------------------------------------------
python和ndk没有用最新的
主要原因是之前搞的时候最新的有bug
于是沿用之前成功的版本
下面就是骨头一路上的碰壁:
流水帐开始:
首先在公司的win8上安装vs2013半点问题没有
用vs2013打开之前用vs2012下创建的项目提示不好用
愿意是我忽略的升级配置文件的选项。
尝试微软提供的项目管理软件:TFS,申请微软的免费服务器。
发现功能太强大,适合大项目的项目管理,但我只需要源代码管理就行。
放弃,尝试git。
被vs2013打开过的cocos2dx项目,在2012中打开又报错了。
看来需要彻底升级了。
下载解压cocos2dx3.0beta版本。
使用create_project.py创建项目比之前友好了
因为换成了图形界面
不过先进命令行的方式还是太麻烦
我们建个快捷方式:
建一个bat文件
输入D:\Java\cocos2d-x-3.0beta\tools\project-creator\create_project.py
cocos2dx3.0beta建的新项目比之前大了
因为他直接把编译所需代码拷贝到项目文件夹下
而且可建立在任意位置
新项目建立之后vs2013运行ok
于是拷贝到github的本地代码库下
上传(几百M,略大,稍等)
上传ok之后直接打开本地代码库下的sln文件
此时,vs2013会自动配置好git
骨头实验了一下提交到本地和提交到服务器功能
回家捣鼓笔记本安装vs2013
(win8.1已装vs2012)
老报核心什么什么的错
搜了网上几乎所有的办法:管理员、换显卡驱动、打补丁(个人不喜欢一切win的补丁)
还是不成功
于是系统还原到一个没装vs2012的ghost
可以安装了(不计较了 vs那么大,有点问题可以理解)
装完vs2013就开始装python装cygwin
结果到后来发现好像不需要cygwin了
cmd进入到proj.android下
敲入 python build_native.py 命令cmd开始编译
省去了之前版本需要用cygwin编译而且需要修改文件权限的步骤
心惊胆颤的直到发现 so文件ok
eclipse打开其中的android项目
导入不报错,运行黑屏。
果然没那么幸运
网上一搜说需要:
把cocos2d-x-3.0beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下proj.Android/src/org/cocos2d-x下
感觉这个步骤完全可以新建cocos2dx项目时脚本自动加上
应该是错误漏掉了
估计下次升级就不需要手动加了
加上之后再次运行
终于看到熟悉的土豆了
下一步就是在建一个cocos2dx的源码管理
由于之前试验过
应该没啥问题
就不加到流水帐了
回家搞vs2013和github果然有问题。
主要是新的cocos2dx3.0beta生成的项目太大了
空项目编译运行一次竟然高达800多M
于是学习了下git的配置文件的使用:
.gitignore
关键是这个文件正常来说windows不让建立
多敲一个。就行
后发表看法
Unity VIP会员①群
Unity VIP会员②群
HTML5公开课①群(hot!)
HTML5公开课②群(new!)
Cocos2dx公开课①群(hot!)
Unity公开课①群(2000人群)
Unity公开课②群(2000人群)
Unity公开课③群(2000人群)
Unity公开课④群(2000人群)
泰斗社区求职招聘①群
工作时间: 9:00 - 17:00
北京客服: 010 -
广州客服: 020 -&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
本人主要从事建材企业网络营销的媒介投放工作
&#xe602; 下载此文档
正在努力加载中...
基于cocos2d-x网络对答游戏设计与实现
下载积分:2000
内容提示:基于cocos2d-x网络对答游戏设计与实现
文档格式:PDF|
浏览次数:2|
上传日期: 20:16:14|
文档星级:&#xe60b;&#xe612;&#xe612;&#xe612;&#xe612;
该用户还上传了这些文档
基于cocos2d-x网络对答游戏设计与实现
官方公共微信

我要回帖

更多关于 cocos2dx 游戏源码 的文章

 

随机推荐