博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (一)
阅读量:4165 次
发布时间:2019-05-26

本文共 3006 字,大约阅读时间需要 10 分钟。

我推荐cocos2d-x 现在手机游戏市场前10位有7位都是cocos2d-x开发,开源、跨平台、MIT许可等等,当然适合2d游戏,3d游戏还是用unity。

cocos2d-x和unity3d要真的在技术选型的时候比较, 其他还真是各有千秋, 我觉得主要还是根据团队的性质和要开发游戏的类型吧. 一般情况下, 我感觉是倾向于unity3d, 特别是在最近的unity3d中, 已经有了官方的2d模块, 开发起来会更爽, 开发工具的配合也更加强大, 开发效率也更高一些.

但是cocos2d-x这种开源的引擎也仍然还是有前途, 毕竟源代码都在自己手中, 虽然各类工具的组合, 选择可能会挺麻烦的, 但是假如游戏本身是一个比较奇特的类型, 想要更多的定制, 或者游戏本身想更进一步的压榨平台的性能或者非常强化的利用某个平台的新特性, 这个时候cocos2d-x几乎是唯一的选择。

 

对于“学习”而言,

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进行开发。

 

unity更好学。有集成开发环境,脚本写代码。

cocos2d-x没有集成开发环境,需要自己寻找各种编辑器。

cocos2d-x的优势是支持跨平台,并且是开源的。至于做游戏开发,什么工具都是其次的,重点是自己要学会游戏设计。你看别人用flash开发游戏作品不也很优秀么。

 

                                            =========================================================================

一般来说选择一个技术学习和投入,需要考虑清楚这几个问题:

1. 技术的适用范围(别到时候有了新的需求,解决不了)
2. 学习曲线
3. 技术支持怎么样?社区是否活跃?
4. 目前发展态势怎么样?(开源项目别今后没人管,商业产品公司不能倒闭了)
5. 扩展性如何?是否利于团队合作?(有的技术入门简单但拿来做大项目就是个灾难)
在这几个方面,虽然技术层面unity和cocos2d是完全不同的东西,但是作为目前开发手游采用最为普遍的两种技术方案,是具有可比性的。
适用范围
这个很多之前的回答都已经说了,主要区别是unity是一个完全的的解决方案,cocos2d是一个类库。适用领域unity要广很多。cocos2d就是为手机游戏而生的。而unity除了开发2D,3D游戏,能发布到WP,Mac, Console等cocos2d不涉及的平台,unity还被广泛才用于虚拟现实项目。在我最开始接触unity还是1.x版本的时候,QQ群里面几乎全是讨论虚拟现实项目的。甚至即便到现在我感觉身边(重庆)用unity做教育软件和3D漫游的都远多于做游戏的。也就是说如果你将来不开发手游,cocos2d就用不上了,unity还能搞点其他的。
学习难度
上手当然unity更简单。如果更极端一点,不会编程,借助一些可视化编程中间件,设计师都可以完成unity游戏开发。前阵子网上有cocos2d一天复制flappy bird的教材,如果换unity+playmaker来做估计花不了我一个小时。当然如果面向本来就会c++的开发人员,cocos2d入门可能更加直观,不会要接触新的开发工具。不过对于普通人来说还是unity的方式更加容易入门,连代码都不用写。
技术支持和社区
这方面cocos2d胜出,国内社区的情况unity方面掌握都还比较初级,有深度的技术问题基本上都要去官方论坛交流。当然如果你英文读写无障碍,这个情况就倒过来了。
发展态势
cocos2d目前在“开源的2D手游开发框架”领域基本上是没有什么竞争,这也注定了开源社区也不会有什么动力扩展到新的领域。而unity则是一直开扩展其开发覆盖面,unity就是“一统浆糊”的意思嘛。最开始是作为一个“让人人都能开发游戏”进入人们视野的引擎,而最近的新版本一直在强调AAA游戏开发,将出的5.0版本基本上都是面向画质上面的提升。实际上也对UE,CE等造成了一定压力,现在UE对个人的授权费比unity还便宜了。但是unity对于一些普遍认为烂得不行的功能却一直没有什么动力修改,比如GUI系统和内置网络部分,一般也是要借助第三方完成开发,这点初学者需谨慎,不要学习这些没用的东西。
扩展性方面的问题
这点cocos2d胜出。由于unity采用了易于新手和无编程人员的组件模式,在开发大型项目时候非常容易进入架构上的陷阱。开发太容易了,犯错也容易。而cocos2d不是说就不会犯这些架构问题了,而是本身基于cocoa框架,能够开发的人本身已经具有了一定的编程规范,开发app所用到的软件架构仍然适用。而且unity就是另外一套体系了,初学者开发了一些简单项目以后一定要有有经验的人带,了解一套MVC这样的架构体系以后再开发商业项目,否则只会在组件化模式的歧途上越走越远。
在扩展性方面,unity的其他问题也还有很多:假设苹果出了一个新的设备iTV, 用cocos2D的话你可以在beta版本放出的时候就开始根据官方的文档开发集成,在正式设备发布的时候就第一时间支持,使用unity的话恐怕必须等unity发补丁更新;需要两次编译,令人头大的JIT错误;很多国内广告和支付平台都不支持unity,SDK集成需要自己做插件等等。
总结一下:
1. 如果你编程基础一般,想快速做出一款游戏而不纠结于技术,选unity
2. 开发app或者其他软件已经有一定经验,希望转到手游领域做一款商业化产品,同时个人或者团队的资金实力一般,选cocos2d
3. 想学习业界主流的游戏开发流程,不想局限于某个游戏平台或者2D还是3D,选unity
4. 不属于上面3种情况的,建议都上手试验再做判断
关于2D和3D游戏前景的问题,我的看法是在手游领域3年内2D游戏都一定是主流,占据多的份额。

转载地址:http://pflxi.baihongyu.com/

你可能感兴趣的文章
本地socket与网络socket实现
查看>>
linux中的find命令——查找文件名
查看>>
linux系统下 CP命令(备注:替换正在运行的进程,用FTP工具是从本地传是不行的,需要用cp -rf ../update/zb_terminal ./zb_terminal)
查看>>
linux进程运行的相关shell命令 fg、bg、jobs、&、ctrl + z(后台、前台等等)
查看>>
linux ls命令ls /dev | grep sda 什么意思(以及grep连接符|怎么用)
查看>>
system()、popen()
查看>>
linux mount (挂载命令)、umount (卸载命令)详解
查看>>
chmod命令详解使用格式和方法
查看>>
linux中的access函数
查看>>
chdir改变当前目录以及理解守护进程为何fork()两次?
查看>>
创建守护进程以及为什么fork两次
查看>>
open/close函数的使用
查看>>
C语言中lseek()函数和fseek()函数的使用详解
查看>>
linux 中 open和fopen的区别
查看>>
LINUX共享内存使用常见陷阱与分析
查看>>
Linux编程gcc编译器禁止所有警告和显示所有警告
查看>>
共享内存理解:shmget()函数、shmat()、IPC_CREAT | IPC_EXCL
查看>>
ctime函数--把日期和时间转换为字符串(打印时间时常用-LINUX系统)
查看>>
查看linux内核命令 ls /etc/rc.d -l
查看>>
Linux下的函数执行时间的统计方法(测试某个函数的执行时间)
查看>>