首页 > 代码库 > 漫话Unity3D(一)
漫话Unity3D(一)
前言
使用Unity已经有将近半年时间了,虽然项目还只是个半成品,但是Unity差不多玩熟了。这里把使用过程中碰到的问题梳理一遍。不会涉及到太过具体的功能和代码,但是如果开发一个网游又都会涉及到这些知识点,而这种直击“本质”的“答案”是很多教学书籍所不具备的。
一、背景介绍:什么是Unity
2013年手游如火如荼,开发了端游页游之外的第三战场。而随着手游品质的逐渐提高(越来越多的大公司开始介入手游领域,手游无论从画面还是内容都直逼端游),Unity开始为越来越多的人所熟悉和认可。 而越来也多的使用Unity开发的游戏创造了收入传奇,Unity 的身价也不断提高。就像Cocos2d-x一样,既是Cocos2d-x成就了大批畅销游戏,也是畅销游戏成就了Cocos2d-x,这是双赢。
Unity是一个3D游戏引擎。在几年之前,人们提到3D游戏引擎基本上是三个阵营:
第一阵营以Unreal、CryEngine、BigWorld为代表,是最高端的商业游戏引擎,特征是高品质、高授权费和高门槛,这种游戏引擎一般人买不起,买了(或者是下载了破解版本)也不会用。网上的教程少之又少,除非你在买了这种游戏引擎的公司,跟着牛x的主程学习一段时间,否则入门都是一件非常困难的事情,更不要说玩转它用来做游戏了。
第二阵营是以Ogre、Irrlicht为代表的开源3D引擎。特征是免费、开源、良莠不齐。他们是免费的,这意味着可以省掉相当大一部分投资,他们是开源的,这意味着你哪里看着不爽就可以直接改。开源3D引擎中Ogre应该算是最出名的,因为造就了搜狐畅游的天龙八部。但是不得不说,开源游戏引擎的地位相当尴尬。可以这么说如果你是武林高手的话,那么草木皆可为剑,只要你足够牛x,那么哪个开源引擎你都可以拿来做一个同样牛x的游戏,但是如果你不够牛,或者你的公司里没有足够牛的人(这在创业团队里并不少见),那么还是不要想着拿它们来做游戏了,甚至不要想着做3D游戏。
第三阵营是个大公司自主研发的游戏引擎。游戏引擎决定了游戏公司的生产方式。大公司有钱有时间,可以花费大量的时间和金钱来等待一个必然失败的结果。小公司和创业团队不要想着凑热闹了。
Unity是不同于上面三个阵营的独立阵营。它具备商业引擎的品质,但是授权费相当低廉,个人都可以买的起,更不要说公司了(而且网上还有大把破解资源,你甚至在赚到足够多的钱之前都不需要购买)。它的入门门槛很低,经常有新闻说8岁的孩子拿这个引擎来写了一个游戏,还赚了不少钱,虽然是噱头,但是也可以说明一些问题。 网上教程和书籍都有很多,可以很方便的获取到学习资料。 Unity还创新的创建了Assets Store(资源商店),你可以花费很便宜的价格(相对国外收入来说,动不动100美元的价格对国人来说还是贵了些,如果DF GUI的价格是90人民币,那我肯定购买,但是90美元我就望而却步了),购买到丰富的插件和资源(比如GUI插件、AI插件、特效集合、动画、模型等等)。
二、引擎的争论,为什么要选择Unity
经常看到有人问我该用Cocos2d-x还是Unity?或者我该学习Cocosd-x还是Unity? 这些问题并没有一个统一的答案,而我有我自己的看法。
诚然,关于引擎的争论是幼稚而可笑的。牛x 的人用什么引擎都可以做出好游戏,菜鸟用什么引擎都只能写个“Hello world”。但是游戏引擎决定了部门的生成方式,决定了资源和创意的限制,决定开发语言的选择,决定了后面要招什么样的人,它决定了太多的东西,所以一些思考还是非常有必要的。我一直有这样的看法,游戏开发的方向走对了,即便一开始走的慢些,但是会越走越快,并且可以避免走弯路、走死路。
2012年初,我第一个公司(网龙)的MMO RPG游戏《征服》就移植到iPad版本,这得力于公司牛b的引擎开发人员,他们在很短的时间内就把C3引擎移植到iOS、android甚至是WP8、html5、flash上了。那个时候就算联网的手游都很少见,更不要说mmo了。虽然收入还满意,但是没有大红大紫。手机版本和中文版本一直没有放出来。2012年底的时候,我到了第二家公司(天盟),进来没多久我就跟总监说,我们可以把公司的3D MMO移植到手机和平板上面,不会花很多人力,不管能不能赚钱,我们就算赚吆喝也不亏,把手游mmo rpg的市场先给占了。但是得到的答复是,我们引擎不支持手机,3D MMO对手机性能要求太高,所以这个不是当下需要考虑的。2014年的今天,mmo rpg和arpg如火如荼......
回过头来再说方向的选择,举个例子,如果一开始选择的是Unity,那么就不会碰到移植的困难。如果一开始开发语言选择的是lua,那么你要招募一个合格的小弟要容易很多。我们写c++写的熟悉了,感觉哪个语言都差不多,甚至lua因为没有编译报错,反而会碰到很多不爽的问题。但是不得不说,c++需要注意的细节很多,写好一个lua 的逻辑要比写好同样的c++逻辑容易太多了。
对于初出茅庐的人来说,应该学习哪个游戏引擎可以更好的找到工作?我个人的观点是学习cocos2d-x,因为现在大多数国内公司还是使用cocos2d-x来开发2d或者2.5d游戏。Unity3D是着眼于不久的将来。 第二个原因是,相比于Unity,cocos2d-x实在是太简单的,学习cocos2d-x你可以更加容易的了解到什么是游戏引擎,游戏引擎在做什么,这种学习提高是大大优于Unity中的托托拽拽的。
开发游戏跟学习游戏引擎又有点不太一样。现在通常的观点是,开发2D游戏使用cocos2d-x+lua的方式,开发3D游戏使用Unity。大多数情况下,这么说是合理的。这两种组合都有非常多的成功案例。我现在已经熟悉Unity了,并且我想做的游戏是一个3D ARPG,那么毫无疑问我会使用Unity来开发。这个时候即便公司突然说要开发一个2D游戏,我也会使用Unity,因为Unity有很多专业水准的2d插件,它的资源管理和编辑器功能无比强大。
(第一部分结束了,废话超乎想象的多。之所以在这里结束第一部分是因为第一部分有太多“口水”的东西,虽然我个人挺喜欢看这种八卦的东西,但是不得不说,缺少料啊,好了第二部分,猛料来了)