最近两天下载了虚幻4的源代码和编译好的环境,稍微尝试了下。没有深入研究,只是运行了几个Sample,看了看编辑器环境,甚至连c++代码都没有多看。所以并没有资格对这个世界上最先进的游戏引擎品头论足。不过由于不打算继续深入研究了,所以表达一下感想。
虽然对Unity已经比较熟悉了,但是真正接触虚幻4还是感觉力不从心。单单使用Unity的时候,感觉有很多坑,各种不爽,但是换了UE4,反而感觉Unity无论从编辑器界面还是代码框架设计都非常干净精简。从某种程度上说,Unity入门容易,上手快,并不仅仅是一个噱头。
虚幻4的编辑器功能选项很多,菜单中也有各种看得懂和看不懂的功能。有点像是用3DMax一样,熟悉而又陌生,要真正上手估计要一两个月的时间。当然如果是之前接触过UDK或者是有过虚幻引擎开发经验的人或者是真正的大牛,上手会快一些。但是个人感觉,无论如何要比Unity难一些。
我准备业余时间(短期内不会有太多时间)自己开发一个ARPG的,目标就是火炬之光手游版本。所以选择引擎的标准就是3D、酷炫、手游、开发方便。试了试UE4感觉就是,UE4不花一些力气是Hold不住的,而在Unity5已经非常好用的情况下,除非个人兴趣,否则没有必要多花力气去搞定UE4。
下面是我的一些个人感想:
1、虚幻4开放了所有的源代码,只要19美元一个月,就可以随时获得最新代码。网上也可以下到最新的代码和编译好的环境。 开放源代码,这个对于技术向的程序员应该非常有吸引力。因为所有人都会有这样的想法,代码开放了,那我出了问题可以自己修改Bug,并且可以自己随意扩展功能。不过使用Unity后的感受是,如果设计非常漂亮的话,即便不开放源代码也可以自由的扩展引擎功能。虽然有无法扩展或修改的部分(也就是一些很不爽的敌方),但是这个也不是自己能随意改的,因为很多东西牵一发而动全身,结果自己能修改的部分还是一些插件性质的内容。而这些东西Unity没有开放代码也做到了。不知道为什么会有人觉得不开放代码我们就会碰到搞不定的问题,而开放代码后一切都可以搞得定。感觉UE4开放代码更像是一个噱头,或者是自己设计不足时的补救措施。
2、BluePrint
这个东西很强大,简单说就是不写一行代码就可以做出一个游戏。Unity里面也有很多类似的插件,最出名的是PlayMaker。虽然我很赞赏这些工具让策划或者不是很擅长程序的人也可以做出一个漂亮的游戏。但是我个人是很不习惯使用这些的,就像我很不习惯MecAnim中的状态机编辑器一样,我感觉使用代码和配置来维护状态操作起来更加方便,很多时候也更加智能。而且当项目复杂起来的时候,使用这些可视化工具很容易陷入泥沼。当然能够正确的使用他们的话,对项目还是非常有帮助的。比如关卡设计的时候开放一些功能给策划去配置,这个就相当于一个可视化的而且更加强大的关卡事件编辑器。
3、工作流程
引擎最重要的职能就是定义工作流程。代码可以自己摸索,功能可以自己实践,但是正确的工作流程却必须要在团队中学习。Unity因为相对简单,所以还可以自己摸索下,但是UE4的工作流程是什么,怎么做才能发挥这个最先进引擎的真正威力,这个都需要好好学习摸索。如果仅仅是把它像OGRE一样去使用,反而会显得憋手蹩脚。如果不能真正发挥引擎威力的话,那再先进的引擎也是浪费。
4、次世代的渲染效果
次世代一直在进化,比如UE4使用GPU粒子,可以渲染几百万个粒子(正常来说同屏几千个粒子已经会拖慢速度了),使用曲面和物理光照可以实现更加真实的渲染效果。但是我的需求是一个手游ARPG,我要表现的是一个酷炫的感觉,是否真实不在我的考虑范围之内。至于GPU粒子就更不用说了,几年内手机显卡估计都不会支持。所以说,很多高级特性给我们了也不能用,不敢用。 Unity5里面的全局光照我都持有怀疑态度,不知道是否真的不再需要LightingMap了,不知道手机上性能和兼容性如何。所以单从渲染技术上说,UE4并不具备真正的优势,很多U3做的游戏非常炫,但是那个也需要美术给力才行。
5、c++代码
基本上说UE4开发就是c++代码和Blue Print相结合。虽然可以方便的嵌入lua什么的脚本语言,但是估计不会有特别的好处。虽然写C++写习惯了,不会感觉有很多坑。但是跟c#相比还是麻烦了一点。 Unity使用c#真是相当明智的选择,一方面借助c#解决了开发者难题,一方面借助Mono实现了跨平台,同时还能够保证效率。至于游戏运行效率,如果c#代码能够成为性能瓶颈的话,那我感觉c++也不会好到哪里去,这个时候更应该优化客户端代码而不是抱怨语言效率。
6、代码热加载,即写即编译
借助于llvm,可以实现即时编译,而Unity又可以实现动态库的运行时热加载,所以可以实现边修改变查看运行结果的效果。
7、很多实际功能不知道如何去解决
比如使用Unity,我已经知道了碰撞盒如何去加,物理如何设置,动画如何处理,如何设计技能系统,UI怎么做,光效怎么编辑。而这些在UE4中都要重新去学习掌握,而UE4的文档教程并不是很多,很多时候也找不到具体功能如何去实现。 等UE4发展起来估计会好一些,不过UDK发展了这么多年,也没有起色,我很担心UE4能够有什么改变。Unity能够备受游戏公司和独立开发者推崇,在最近一两年出了如此多Unity制作的卖好又卖座的精品游戏,肯定有其理由。而这个优势肯定不是开放个源代码就可以弥补的。整个生态链的搭建没有个一两年是做不到的。除非它能够放下身段去学习Unity,不过那样的话虚幻就不是虚幻了。
8、没有找到内嵌的性能分析工具
Unity自带的Profiler功能强大而且简单好用。这个不是说用个Intel GPA就可以替代的。运行时也不像Unity一样可以直接查看当前的性能参数,我不知道怎么样评估游戏运行的性能。这个其实很重要。 同时,因为现在还几乎没有UE4(UE3的也不多)的成功游戏,所以运行性能、发热、兼容性也都不能做任何保证。
其实不光是性能分析工具,像GUI编辑器之类的东西,貌似也要自己处理。且不说插件商店之类的外围设施,即便是编辑器和引擎核心的功能UE4也还有很多路要走。
总结就是:出于兴趣玩一下UE4是可以的,但是除非是专业的引擎开发人员,或者有真正的项目需要,否则研究下去即不能用来做项目也学不到什么东西。