首页 > 代码库 > 使用Unity3D是创业团队失败的原因吗?
使用Unity3D是创业团队失败的原因吗?
第一个项目虽然失败了,但是最起码成功上线,并且获得了一定的收入(虽然杯水车薪),也因为第一个项目拉来了投资。但是第二个项目就彻彻底底的胎死腹中了。
没有检讨、没有总结,大家自然而然而又兴高采烈的开启了第三个项目。
我感到有些悲哀。如果我们都不知道自己的弱点在哪里,不明白自己的优势在哪里,如何能够扬长避短?一个创业团队难道靠硬推能推出一款游戏吗?
第二个项目是打算山寨《公主篷特2》,是一款《愤怒小鸟》玩法的带rpg元素的手游。《公主》就是拿Unity做的,并且有一定的3D元素。美术之前有说过,我们没有人物原画设计师,所以我们不适合做2D游戏。当时我就想你们不适合做2D游戏,那我就学Unity3D,策划也认为如果使用3D会有更好的效果(物理和细节表现)。
但是遗憾的是项目失败了,而Unity也成为领导和主美口诛笔伐的对象。按照主美的说法,我们对Unity掌握的不成熟,所以画面丑不是因为我们做的不好,而是Unity表现的不好。再加上我们的做模型的人是做高模的,然后学做低模效果肯定差了很多。总之一句话,我们的画面表现不好是由原因的,而且主要原因还是客观的,不是水平问题。
同时策划也有表达过,因为我们使用了不熟悉的游戏引擎,所以花了很长的时间来摸索它,耽误了开发进度。所以失败的第二个原因是功能完成度不高,比如原计划要配置300个关卡的,但是最后一个版本为止只有3个关卡,而且人物的数值什么的都没有做。这个进度慢是因为程序一开始耽误了很多时间,并且没有招到数值策划。总之一句话,项目进度慢不是规划的不好,也不是策划水平问题,而是因为一些客观原因。
如果这就是我们失败的原因的话,那我敢打赌,第三个项目还会失败。我们为了做项目而做项目,从来没有一个游戏是我们一开始想就非常兴奋----这个游戏做好了绝对会火,从来做的时候都是束手束脚的感觉,而且做的时候从来没有感到我们在完成一个非常好玩非常酷的游戏,只是感觉越做越不喜欢,越做越没有希望。
我有没有尝试过改变现状呢,尝试过,失败了。后来我无意看了下我的职位(团队独立成一个公司后,职务有一定调整),原来我只是个客户端程序员。怪不得我提的很多意见都不了了之,因为我不是主程、不是领导、不是项目经理,我只是个客户端程序员。即便代码都是我写的,我也只是个客户端程序员。有点像在某个黑暗的王朝中,看着皇帝和大臣做了一个又一个荒唐的决定,看着王朝一步步走向末路,却无力改变。空有报国之志,却无报国之门。
说了很多废话,我们回过头来说Unity。无论别人怎么看,我坚定不移的钟情于Unity。曾几何时我也想自己写一个游戏引擎,然后如臂使指的控制它,来完成一个酷炫的游戏。不过后来cocos2d-x做的越来越好也就打消了这个念头,再后来接触Unity后就更加不会想着自己来做游戏引擎了。因为我要的功能它都有,即便因为一些想法的出入,某些功能实现起来有些别扭,但是没有功能的短板。那么多人,那么多团队使用Unity做出了成功的游戏,这里面有大型的3D MMO,也有像《忍着必须死2》这样的轻量级手游,也有像《影之刃》《王者之剑》这样的2d aprg。各种类型的手游Unity都有成功的参考案例,这个时候一切失败的因素都不在引擎上面,而在使用者上面。
选定一个游戏引擎,然后坚定不移的使用它,不断的积累和完善相关功能。这个是程序的积累,也是团队的积累。今天用cocos2d-x明天用Unity后天又换回cocos2d-x,我们的时间都消耗在研究、思考、学习上面了。对于创业团队来说,我们有多少次失败的机会?有多少可以浪费的时间?理想中的情况是,第一个项目我们用6个月时间来做,第二个项目4个月,第三个项目2个月换个皮就可以了。但是我们的情况呢?第二个项目我研究了一个月的Unity,又因为代码的重构浪费了一个月的时间。第三个项目是其他人负责的,断断续续研究了三个月时间,现在刚刚开始写功能。我们的积累在哪里呢?如果每次我们都重新开始,那程序是不是很失败?
我之前有写文章表达过这样的思想,我无论做2D游戏还是3D游戏都倾向于使用Unity。倒不是说Unity做2D游戏会比cocos2d-x方便多少,毕竟不同的思路,不同的表现形式,而且说实话2D游戏本身就没有什么技术难点,更多的体现在细节表现和功能逻辑上面。但是Unity做游戏有这么几个优势:
1、方便的跨平台,平台相关的功能Unity都已经帮你实现好了。即便有些Unity没有实现,也有插件帮你实现。
2、基于Unity的酷炫的粒子光效编辑。Unity本身就是一个功能强大的粒子编辑器。 之前我还认为cocos2d-x的粒子系统的功能足够了,但是跟专业的编辑器比起来,远远不够。粒子系统要跟粒子特效编辑器配合起来,其功能远远不是之配置一个粒子系统的几个参数就可以的。cocos2d-x本身的粒子系统是很鸡肋的功能,只能拿来做一些简单的光效,不可能用来做复杂的技能特效。
3、由于框架和架构的优势,Unity的游戏可以极大程度避免崩溃和闪退。由于代码都是c#写的,并且是组件结构,所以即便出了错误也只是个异常而已,而不会影响到系统流程。
4、强大的性能分析工具,可以轻易的找到内存和cpu的瓶颈。支持Android和iOS的真机运行分析。
5、编辑器可以方便的进行扩展,不需要像传统游戏公司一样,有一个专门写编辑器的部门。无论是场景编辑器还是技能编辑器都可以轻松搞定。如果想玩高科技的话,还可以把技能编辑器做成可拖拽的模块化结构,策划可以像搭积木一样来编辑技能。最重要的是,这些都是所见即所得的。
6、方便的资源管理系统。使用Unity,你不用特意维护几份资源(比如原始资源、打包后的资源、iOS版本资源、Android版本资源等等),只要一份资源,然后Unity里面可以设置它的具体参数,比如使用纹理压缩、最大限制在512x512大小等等。Unity发布游戏的时候会自动根据平台相关的导出选项导出正确的资源。
7、丰富的插件。有大量的功能我无论拿cocos2d-x还是Unity都不知道怎么实现。比如一些shader特效、物件碎裂的特效、场景破坏和变形的特效等等,这些在Unity插件中都可以找到对应的实现。而且很多Unity的游戏都可以反编译,无形中又可以学到很多东西。
8、熟悉之后确实感觉Unity很简单。很多功能都是成体系的自然而然的。比如物理、碰撞检测、导航寻路、场景管理、场景烘焙。这些无论拿哪个出来都是相当有技术的功能,但是在Unity中几个按钮、几步操作就可以实现对应的功能。
至于缺点也有一些:
1、最主要的,无论是Unity还是插件都是要收费的。(破解版,等赚钱了再考虑回馈)
2、由于iOS平台的一些限制,Unity很难做动态代码更新。而cocos2d-x有lua这个比较成熟的方案。(如果程序稳定了,需要频繁更新代码的机会不多,更多的是更新配置和资源)
3、可能有些人不熟悉Unity,从而选择了开源的cocos2d-x。适应Unity的框架、工作方式需要一定的时间。(相信我,不会很长,要知道一个8岁的孩子都能拿Unity来做游戏,并且上架,如果有程序员说搞不定Unity,那干脆转行卖烧饼吧)
4、对应上面的第6点,由于Unity中资源对应的配置有很大的重要性,所以一个Unity功能就是资源+代码的整合,你很难分出一个资源包。这样你的Unity项目可能很大。(使用AssetsBundle打包后可能避免这个问题,但是项目初期资源变动大,经常打包很不方便)
5、Unity很多设计都是为可视化编辑考虑的,举个例子,2D的动画可以方便的拖几张图片就可以搞定。但是如果我每张图片都有一定的偏移,那就麻烦了,需要自己重新实现帧动画功能,自己加载配置文件来实现。(这个严格说来不是引擎的问题,毕竟引擎不是为了一家游戏公司设计的,大众化的简易的操作方式是唯一需要考虑的。但是很多时候确实感觉有些不爽)
以上是我对半年Unity使用的总结。基本上说是偏爱Unity的。但是不得不说,某些团队不适合做3D游戏,那么认清自己的短处,3D这块儿就不要碰,即便只是简单的3D模型渲染都不要,因为根本就做不好。 如果只限于2D游戏的话,更多的还是看个人喜恶,我就是习惯用cocos2d-x,那么我说多少遍Unity的好话都没有用。能快速的开发出游戏才是硬道理。