第一项测试虚幻4发动机的想法

最近2天虚幻下载4源代码和编译环境,尝试略低。没有深入研究,刚刚执行数Sample,看着编辑环境,甚至c++怎么看代码。而且也没有资金格上最先进的游戏引擎品头论足。只是因为不打算继续深入研究了。所以表达一下感想。

尽管对Unity已经比較熟悉了。可是真正接触虚幻4还是感觉力不从心。

单单使用Unity的时候,感觉有非常多坑。各种不爽。可是换了UE4,反而感觉Unity不管从编辑器界面还是代码框架设计都非常干净精简。

从某种程度上说。Unity入门easy,上手快,并不不过一个噱头。

虚幻4的编辑器功能选项非常多,菜单中也有各种看得懂和看不懂的功能。有点像是用3DMax一样,熟悉而又陌生。要真正上手预计要一两个月的时间。当然假设是之前接触过UDK或者是有过虚幻引擎开发经验的人或者是真正的大牛。上手会快一些。可是个人感觉。不管怎样要比Unity难一些。

我准备业余时间(短期内不会有太多时间)自己开发一个ARPG的。目标就是火炬之光手游版本号。所以选择引擎的标准就是3D、酷炫、手游、开发方便。试了试UE4感觉就是。UE4不花一些力气是Hold不住的。而在Unity5已经很好用的情况下,除非个人兴趣,否则没有必要多花力气去搞定UE4。

以下是我的一些个人感想:

1、虚幻4开放了全部的源码,仅仅要19美元一个月,就能够随时获得最新代码。

网上也能够下到最新的代码和编译好的环境。 开放源码。这个对于技术向的程序猿应该非常有吸引力。由于全部人都会有这种想法,代码开放了,那我出了问题能够自己改动Bug,而且能够自己任意扩展功能。只是使用Unity后的感受是,假设设计非常美丽的话。即便不开放源码也能够自由的扩展引擎功能。尽管有无法扩展或改动的部分(也就是一些非常不爽的敌方),可是这个也不是自己能任意改的,由于非常多东西牵一发而动全身,结果自己能改动的部分还是一些插件性质的内容。

而这些东西Unity没有开放代码也做到了。不知道为什么会有人认为不开放代码我们就会碰到搞不定的问题。而开放代码后一切都能够搞得定。感觉UE4开放代码更像是一个噱头,或者是自己设计不足时的补救措施。

2、BluePrint

这个东西非常强大,简单说就是不写一行代码就能够做出一个游戏。

Unity里面也有非常多类似的插件。最出名的是PlayMaker。尽管我非常观赏这些工具让策划或者不是非常擅长程序的人也能够做出一个美丽的游戏。可是我个人是非常不习惯使用这些的,就像我非常不习惯MecAnim中的状态机编辑器一样,我感觉使用代码和配置来维护状态操作起来更加方便,非常多时候也更加智能。并且当项目复杂起来的时候,使用这些可视化工具非常easy陷入泥沼。当然能够正确的使用他们的话,对项目还是非常有帮助的。

比方关卡设计的时候开放一些功能给策划去配置,这个就相当于一个可视化的并且更加强大的关卡事件编辑器。

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++也不会好到哪里去,这个时候更应该优化client代码而不是抱怨语言效率。

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是能够的。可是除非是专业的引擎开发者,或者有真正的项目须要,否则研究这是不会做的项目不能学到什么东西。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-08-28 06:02:13

第一项测试虚幻4发动机的想法的相关文章

【JSP EL】EL表达式 获取list长度/不用循环,EL在List中直接获取第一项的内容/EL获取Map的键,Map的值

1.EL表达式 获取list长度 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <c:if test="${fn:length(list名字)>1}"&g

getresources()与Spinner取消默认选中第一项

getResource() getResource是在有context的前提下才能使用,在android中常在activity中使用它.普通的类一般无法使用.否则会报空指针异常. Spinner默认选中第一项 取消默认选中第一项的方法: spinner.setSelection(0, true); 注意:

Extjs ComboBox 动态选中第一项

有时候我们希望通过Store加载过来的数据,ComboBoxItem能够选择第一条数据作为默认数据,我们可以这么操作: var storeinfo = Ext.create('Ext.data.Store', { model: SaleInfo, autoLoad: false, pageSize: 10000, proxy: { type: 'ajax', url: '/URL/JSON', reader: { type: 'json', rootProperty: 'Data', total

winform listview默认第一项光标选中

if (this.lsvSortingHeadList.Items.Count > 0) { this.lsvSortingHeadList.Focus(); this.lsvSortingHeadList.Items[0].Selected = true; //this.lsvSortingHeadList.HideSelection = false; //this.lsvSortingHeadList.FocusedItem = this.lsvSortingHeadList.Items[0

ionic中ng-options与默认选中第一项的问题

1. select中动态添加数据时发现一个选项为空,在选中了其他选项时,在点击时发现第一个空选项消失了,所有我们需要设置一个默认的选项: 2. 开始的时候我用的方法: <select class="selectcompany" ng-change="change(routeinfo.UnitCode)" ng-model="routeinfo.UnitCode"> <option ng-repeat="unit in

ng-options渲染的第一项为空的解决办法

我们在使用ng-options时,如果首次使用,可能会在渲染完成后发现下拉列表的第一项为空,并且我们在选择一项之后,为空的第一项已经消失了,这样用户体验上来说很不好. 原因就在于:我们使用ng-options的时候,是配合模型指令ng-model一起使用的,从而我们就可以知道,渲染生成的第一项为空原因肯定和ng-model的初始值有关系. 解决办法: 1.可以在控制器中给ng-model的初始值设置为下拉选项中的某个值或对象: 2.可以给select默认增加一项类似“请选择”的选项. 如下图所示

在v-for中利用index来对第一项添加class(vue2.0)

<li v-for="(el,index) in event" v-bind:class="{ 'm-swipe-active': !index}"></li> index来源于v-for,el表示遍历的数组的元素,index表示索引.index从0开始,所以第一项!0就是true,这样就可以添加m-swipe-active这个类.

DropDownList为啥总是获取第一项的值???

小菜: DropDownList控件绑定的数据,在获取数据时总是获取到第一项,很是郁闷,怎么回事,于是就各种想,都没有找到问题的原因. 请看下面的代码 前台代码: <asp:DropDownList ID="DropDownListKind" runat="server"> </asp:DropDownList> <br /> <br /> <asp:Button ID="Button1" r

Easyui combobox如何默认选中第一项???

以下代码可以实现combobox默认选中第一项,在实际开发中我们可能会用到! // 处理combobox默认选中的问题 <input id="user_type" class="easyui-combobox" name="user_type" data-options=" valueField:'id', textField:'name', url:'<?php echo \Yii::$app->urlManager