Unreal Engine 4公布好长好长时间了。直到近期才有时间细致去看一下。

TimSweeney老大一句话“IF YOU LOVE SOMETHING, SET IT FREE”。原来须要几十万授权金才干拿到的东西,就从$19。变成免费了。并且开源。作为一个国际顶尖的引擎,能走出这一步,对我等普通开发人员真是福音啊。

如此的牛X。再加上开源,相信Unreal Engine 4会火起来的,你看看近期E3上的产品展示也能感觉到。只是。Unreal的定位毕竟是“国际顶尖”,而非Unity3D那样的“开发大众化”。所以上手是有一定难度的。

以下我把对Unreal Engine 4的初步印象总结一下,特别针对像我一样有Unreal Engine 3的同学。希望很多其它的同学来已经学习Unreal。

UnrealScript去掉了

开发语言上最大的变化。莫过于把UnrealScript去掉了。

UnrealScript吧,当年来看还是一个非常NB的东西。要知道Unreal一代公布是1998年的事儿,而JAVA语言也就是95年才公布的。

据说Tim Sweeney在開始设计Unreal的时候以前考虑过使用Java作为上层语言。只是那时候Java还不成熟。所以他參考Java,实现了这个一个面向对象的,单根继承的脚本语言。只是。随着时间流转。Epic似乎并没有花太大的力气去演进UnrealScript。在Unreal Engine 3的时代。它确实显得有点老旧了,书写起来比一些现代语言确实有非常多不方便的地方。

所以。去掉就去掉吧。只是。值得注意的是,官方也留出了整合其它脚本语言的接口。比如LUA。

C++11

底层非常多基础代码看上去有非常强的亲切感。底层架构设计思路沿用了很多。

底层依旧是使用C++,只是用了非常多C++11的特性,代码看上去简洁了不少。

项目的编译、构建使用UnrealBuildTool,这应该是从3代延续过来;另外,就是添加了一个UnrealHeaderTool工具。猜想是依据UCLASS。UPROPERTY等宏,生成自己定义反射信息用的,详细的还待进一步研究。

Blueprint Visual Scripting

据说这是UE4最牛X的改进了。看了看,原来是Kismet的延伸,连源码非常多都是UKismentXXX那一套。

UE3里面的Kistmet仅仅限于在一个关卡中使用,而Blueprint扩展了。关卡能够有唯一的一个Level Blueprint,相当于原来的Kismet;另外添加了Blueprint Class,大概就是用Blueprint创建自己定义的Actor、Pown之类的,由于有了这个功能所以原来的Archetype顺带也就被替代了。

事实上。作为老一代屌丝Coder。我一直对Kismet那种表达式层级可视化编程,一直不太感冒(像Unity的PlayMaker那样,提供更高层级抽象的可视化工具更好)。

只是。既然是UE4主推的个东东,还是得看看。

只是,整体上给Designer一套可视化编程的东西。让他们自己实现一些关卡逻辑、游戏规则之类的。还真是一个特别好的方法。当然,我们这些Coder的工作还是不会丢掉的。比如游戏框架,游戏一些底层功能、经常使用模块还是要C++写好(或者使用LUA脚本?),封装给Blueprint来使用的。

AnimTree哪去了

UE3的AnimTree给我震撼太大了,所以特别关心UE4的动画系统。

看了一下,貌似被分解成了BlendSpace和AnimGraph。

  • BlendSpace
    好比说“站立、走、跑”这三个动作,在UE3的AnimTree里面是有一个特定的node来混合的,依据移动速度不同。

    在UE4里,则须要创建一个BlendSpace1D资源。然后暴露出Speed參数。

  • AnimBlueprint
    使用Blueprint,AnimGraph,状态机等等控制角色的动画,怎么看上去和Unity的Mecanim有点像呢。唉~
看来AnimTree是真的不见了,非常遗憾。由于我认为那个使用树形结构来抽象的动画系统,实在是非常清晰并且强大。

渲染系统

基于物理的渲染(PBR:Physically-Based Rendering)效果真的是太NB了,Unity5尽管也是PBR,好像比UE4还是略逊一筹啊。这个无需多言了,各种DEMO视频大家都看了不少了。渲染流程也全然走延迟渲染了。

但多线程渲染,SceneProxy、Material之类的基础架构没怎么变。

Behavior Tree

这个东西好像在国外的游戏AI领域这几年挺流行了,是个非常高大上的东西。UE4直接做了,太好了。
另外,还有非常多重大改进。比如Package,资源导入,添加插件支持等,这里就不一一细说了。

推荐看一下官网的文章吧。作为本文的补充

从Unreal Engine 3到Unreal Engine 4的更多相关文章

  1. [原][unreal][UE][spark]分析unreal engine 虚幻引擎的粒子编辑器:Cascade

    参考:https://www.raywenderlich.com/270-unreal-engine-4-particle-systems-tutorial (使用了一个飞机射击游戏的粒子来展示,全英 ...

  2. Python Falling back to the 'python' engine because the 'c' engine does not support regex separators

    环境 Anaconda3 Python 3.6, Window 64bit 书籍 O'Reilly出版的Wes McKinney编的<Python for Data Analysis> 警 ...

  3. 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine

    当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...

  4. Unreal Engine 4 系列教程 Part 1:入门

    原文:Unreal Engine 4 Tutorial for Beginners: Getting Started 作者:Tommy Tran 译者:Shuchang Liu 本篇教程将引导你安装U ...

  5. 实例甜点 Unreal Engine 4迷你教程(1)之如何用C++将纹理绘制在UserWidget的Image小部件上

    完成本迷你教程之前,请前往完成以下迷你教程: 无前置教程待完成. 本教程适合的人群: 初学者,具有开发经验两周: 本示例的目的:为了在代码中实现UMG中的这个功能: 说明:这是一些列迷你教程的首篇,所 ...

  6. 转-ArcGIS Engine许可初始化

    关于初始化Engine许可的,其实原理都很简单,大家一般都没有问题,但又往往会因为不够细心加上Engine的“小脾气”,让不少程序员都要在这里犯错. 以Engine9.2为例,应用程序是强制初始化许可 ...

  7. 虚幻4外包团队-推荐非常全面的的Unreal教程

    <Unreal SDK 游戏开发从入门到精通(UnrealScript语法.UI Scene界面.UDK独立开发游戏)> 课程讲师:Shark  课程分类:.net 适合人群:初级 课时数 ...

  8. MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size

    http://dev.mysql.com/doc/refman/5.7/en/create-table.html You can use the TEMPORARY keyword when crea ...

  9. 云计算平台简介(App Engine)

    云计算平台简介(App Engine)     1   简介 App Engine: 应用程序引擎,是托管网络应用程序的云计算平台. 1.1  什么是云 云计算通常简称为“云”,是一种通过 Inter ...

随机推荐

  1. POJ 2185 正解 KMP

    题意: 思路: 把每一行压成一个数 求一下 KMP 把每一列压成一个数 求一下KMP 答案就是两个周期之积 网上的好多题解都是错的---------.. //By SiriusRen #include ...

  2. BootStrap_table.js 学习

    @{ Layout = null; ViewBag.Title = "基于BootstrapTable的简单应用";} <!--添加相关样式引用--><link ...

  3. 一台服务器安装运行多个Tomcat及注册服务

    项目需要,自己配置了一下,顺便分享出来. 1.下载对应版本Tomcat,这里下载Tomcat7.0.65.zip; 下载地址:http://archive.apache.org/dist/tomcat ...

  4. Linux-PS1变量详解

    1.PS1 要修改linux终端命令行颜色,我们需要用到PS1,PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置.在终端输入命令:#set,即可在输出中找到关于PS1的定义如下: ...

  5. Android屏幕分辨率获取方法--源码剖析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在适配的过程中,有时我们会用到屏幕宽高,那么如何获得屏幕的分辨率? 方法有两种: 第一种是通过Win ...

  6. netstat -p 显示 -

    http://4735839.blog.51cto.com/4725839/1418945 https://yq.aliyun.com/articles/63060

  7. Oracle中NVL、NVL2、DECODE函数的用法

    DECODE函数的用法:   DECODE(value,if1,then1,if2,then2,if3,then3,......,else),表示如果value的值等于if1时,DECODE函数的结果 ...

  8. [PWA] Deal with caches in PWA

    The takeway is to know when we should cache the content? When we should clean the caches? 1. When sh ...

  9. Android Studio配置SVN 以及使用代码管理

    一.Android Studio配置SVN Android Studio关联配置SVN非常easy,在Settings里面.找到Version Control->Subversion.在这个页面 ...

  10. Apache ZooKeeper Getting Started Guide 翻译

    ZooKeeper 開始向导 開始:用zookeeper协调分布式程序 单例操作 管理zookeeper存储 连接zookeeper 执行zookeeper 以复制模式执行zookeeper 其他优化 ...