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. UI标签库专题九:JEECG智能开发平台 Choose(选则操作标签)

     1. Choose(选则操作标签) 1.1. 參数 属性名 类型 描写叙述 是否必须 默认值 hiddenName string 隐藏域的ID 否 null hiddenid string 隐藏 ...

  2. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD

      本文是读完 Jeffrey Dean, Greg S. Corrado 等人的文章 Large Scale Distributed Deep Networks (2012) 后的一则读书笔记,重点 ...

  3. 设置eclipse中的字体大小

  4. vim 基础学习之替换

    替换命令substitute可以用来查找跟替换操作. :[range]s[ubstitute]/{pattern}/{string}/[flags] [count] range-命令作用范围(缺省的情 ...

  5. js对象基础写法练习

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. hadoop常用指令

    1.格式化名称节点:hadoop namenode -format 2.操作hadoop文件系统:hadoop fs -ls / 3.设置ubuntu默认以命令行方式启动 sudo gedit /et ...

  7. python的循环测试

    这段代码要实现的是:猜数字58 ,猜三次,三个判断条件和一个结束条件.判断为等于58的时候跳出循环. 首先定义一个固定变量 int 函数是更改input输入的文字类型 if guess_age == ...

  8. 使用spring-boot 国际化配置所碰到的乱码问题

    写好html静态页面 ,  也加上了编码格式 , 获取国际化展示在浏览器中还是存在乱码 , 开始以为是浏览器编码格式问题 , 做过处理后任没有得到解决 , 具体的处理方案如下: <meta ht ...

  9. PHP截取字符串长度

    <?php function str_cut($string, $start=0,$length, $dot = '..') {    $strlen = strlen($string);    ...

  10. Hyperic

    https://my.oschina.net/hyperichq/blog/525590