《Inside UE4》-0-开篇

InsideUE4


 

前言

VR行业发展是越来越火热了,硬件设备上有HTC VIVE,Oculus rift,PS VR,各种魔镜;平台上有Steam VR,Gear VR,Google Daydream。而游戏引擎上则有两大阵营:Unreal Engine和Unity。Unity凭着先期的移动平台优势占领了一大部分移动平台的市场,所以目前上手机上的VR游戏也大部分是由Unity开发的。而PC平台上,Unreal Engine凭借着优异的性能,绚丽的渲染效果,源码开源的战略也抢占了目前大部分PC平台VR游戏的份额。参加一场ChinaJoy的VR游戏,会发现大部分也都是由UE4开发的。虽然UE4的授权分成费确实比Unity要昂贵一些,但也因为VR行业本身也还处以社会主义初级阶段,大家也都是在做Demo性质的产品,还没有形成非常客观的市场利润市场。所以盈利后的那些分成费在现阶段已经不太有所谓了。

大名鼎鼎的的虚幻引擎,从1998开始,到我们知道的UE3,UDK,一直是高大上的3A游戏和端游的渲染器引擎。然后到2013年,UE4大刀阔斧的改革,干掉了UnrealScript,引进了Blueprint蓝图系统,直接让策划美术也可以拖线实现游戏逻辑。更大的改变的是竟然开源了,受益于社区的回馈,版本更新的速度更是丧心病狂。小版本更新几乎是一两个月就一版。在学习了Unity的Marketplace和插件系统后,更是如虎添翼,焕发了新的生命力。

虽然官方一直非常努力的升级更新引擎,但UE4目前也存在了学习曲线陡峭,教程资源稀少的问题。笔者自己从事VR游戏开发,在学习UE4的过程中,基本上也只能硬啃官方文档,youtube上官方视频教程,还有一些寥寥的第三方的视频教程。而且更大的问题在于基本上所有的教程都是非常初级的,只是在教你怎么”用”这个引擎,所以一旦在使用过程中发现了问题,往往手足无措,不能高层建瓴的去解决问题。官方的文档虽然说已经挺详尽了,但大部分重点也只是在介绍表层的各种功能,对于引擎内部的结构和运作机理讳莫如深。如果把UE4当作Unity那样的一个黑盒子去用,在遇到Bug时也只能去各种试各种猜,那也无疑浪费了UE的一个大优势。

UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸取营养,学习世界上第一流游戏引擎的架构思想。

源码面前,了无秘密 ——侯捷

所以笔者决定开始该系列教程《Inside UE4》,从最最底层的C++源码剖析,到最最上层的蓝图节点,力求解释清楚各个选项的内部运作机理。希望做到知其然,而更要知其所以然。UE4也是一个非常博大精深的引擎,光源码下载下来也都有1~2G,分析透彻各个具体模块的运作机理无疑也是个艰巨的任务,但我们努力一分也至少有一分的收获,有一分的甜蜜。

 

面向的读者:

  1. 不满足于目前世面上教程深度的。已经大概知道了引擎功能并使用,但是仍然想要知道得更多的人。

  2. 有一定的C++基础。UE4里的C++已经被Epic给魔改后又和C#厮混在一起,一方面得益于此,UE4里的C++实现了各种方便的功能,如反射,垃圾回收,编译系统等重量级的功能。一方面也加大了我们的阅读难度。所以需要你有良好的C++基础,至少看得懂各种C++模板,熟悉各种数据结构。

  3. 有一点点的C#语言能力,在涉及UE4编译系统的时候,会谈到一些C#,还好不是很多,也还好C#作为一门非常优秀的语言非常易读,不过你要是已经掌握C#,那就更好了。

  4. 了解3D游戏引擎的一些基础概念,如知道什么是材质,什么是骨骼动画融合等。所幸这些都是很容易知道的知识。

  5. 有一些基本的图形学知识,知道Mesh,Shader,RenderTarget……等等一些基本的概念。本教程在开始某个专题的时候,会简单讲解一下背景知识,但它不会变成基础图形学教程。

 

不适合的读者:

  1. 希望通过该教程学习快速上手UE4引擎的人,不适合你。目前快速上手UE4的最佳途径依然是官方文档和视频教程。

  2. 希望学习然后自己搭建具体游戏的,如FPS,VR游戏,样板间等。本系列教程不会教你从零开始搭建一个游戏示例,虽然会讲解VR的各种配置的内部机制原理。

  3. 希望学习某个模块具体案例的,如用材质编辑器实现各种效果。本教程会透彻分析材质编辑器内部的实现机制,也会讲解各个材质节点的功能和原理,有时也会看需要通过一些非常直接简单的示例来讲解。但目标从来都是讲解原理,而不是实现结果。

 

愿景和计划

  1. 从C++源码层次上分析整个游戏引擎的架构。了解清楚各个模块之间是怎么协作的,如果有闲情雅致,也甚至会具体到谈一谈某个很小的点为何这么设计。如UE4里的Delegate,Pointers,TArray等。

  2. 虽然源码剖析本来就是曲线陡峭的上升,但还是希望能尽量深入浅出的讲解,所以也会尽量结合实际的效果演示。

  3. 因为UE4比较庞大,所以会逐渐的展开各个专题展开,在讲解一个专题的源码时,会暂时忽略其它跟它协作模块。

  4. 虽然UE4也可以做移动平台的开发,但本教程还是主要专注于Windows的PC端游戏内容。

  5. 计划是连载周更,虽说已经有预定的专题讲解列表计划,但并不妨碍你留言告知你最想了解的下一个专题。我会酌情改变优先级。

  6. 本人也是才疏学浅,经验有限,如有错误纰漏之处,也请不理赐教,共同学习进步,不胜感激。

 

一些准备工作

UnrealEngine官方Github地址

虽说官方已经提供了简便的launcher,但还是推荐自己自己Clone源码编译,也方便时不时的Debug和查看源码知道Why。而且有些时候其实是直接更改引擎源码来得更为方便便利的。

Clone下来之后先点 Setup.bat再点 GenerateProjectFiles.bat ,然后打开UE4.sln,按照默认选项DevelopmentEditor,等待最初半个小时的编译后,就可以开始源码之旅了。引擎版本紧跟Github最新release,目前最新4.13.1

UnrealEngine官方文档

本教程也会同时大量引用官方文档的内容,在官方文档简略的介绍的基础上,通过源码加深理解,再更加透彻的解释。

UnrealEngine官方Youtube频道
UnrealEngine官方优酷频道
有条件的话,还是建议自搭梯子,youtube的视频教程更新是最快的,而且也有高清。

 

UE4深入学习QQ群 456247757

欢迎各位互相学习讨论。

也会在群里提前预告下一篇专题内容。

希望下一篇讲解什么专题的也请在群里发言讨论。

 

其他的无关的话:

之前开源过一款自研的Medusa游戏引擎,一个人毕竟精力有限,也无法开工各种编辑器工作流。所以Medusa引擎目前只是作为自己的一个试验场,未来也会专注于2D游戏的一些探索。关于Medusa游戏引擎的内部架构,其实想讲的也挺多,希望以后在UE4的相关介绍后,得空顺便讲一些其他游戏引擎的架构思想,和C++的一些奇技淫巧。

《Inside UE4》-0-开篇的更多相关文章

  1. 《Inside UE4》目录

    <Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...

  2. 《Inside UE4》-2-GamePlay架构(一)Actor和Component

    <Inside UE4>-2-GamePlay架构(一)Actor和Component     <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...

  3. 《Inside UE4》-1-基础概念

    <Inside UE4>-1-基础概念   InsideUE4   创建测试项目 接上文的准备工作,双击生成的UE4Editor.exe,选择创建测试C++空项目Hello(以后的源码分析 ...

  4. Android网络通信框架LiteHttp2.0 开篇简介和大纲目录

    本帖最后由 移动天宇 于 2015-10-26 10:42 编辑 LiteHttp2.0很多东东焕然一新,旧的能力也得到增强,没有使用的同学来了解一下吧. Android网络框架为什么可以选用lite ...

  5. Java容器解析系列(0) 开篇

    最近刚好学习完成数据结构与算法相关内容: Data-Structures-and-Algorithm-Analysis 想结合Java中的容器类加深一下理解,因为之前对Java的容器类理解不是很深刻, ...

  6. R in Action(0) 开篇

    这几年数据挖掘的火热,也越来越多的人把R作为数据挖掘的一个辅助工具,据国际性组织kkguter统计有60%的人在挖掘过程中用到R工具,可见这个工具是多么的流行,对于数据统计.筛选以及画图绝对是神器.尽 ...

  7. Machine Learning in Action(0) 开篇

    现在貌似In Action很流行,各种技术抽象成工程商的Action,可以避开繁琐的内部原理,这本书从实践出发,通俗易懂的解释那些常用的机器学习算法,类似跟<集体智慧编程>.这本书中文出版 ...

  8. Core + Vue 后台管理基础框架0——开篇

    1.背景 最近,打算新开个项目,鉴于团队技术栈,选型.net core + vue,前后端分离.本打算捡现成的轮子的,github上大致逛了逛,总发现这样那样的不太适合心中那些“完美实践”,例如:Ab ...

  9. Aery的UE4 C++游戏开发之旅(1)基础对象模型

    目录 UObject Actor种类 AActor APawn(可操控单位) AController(控制器) AGameMode(游戏模式) AHUD(HUD) ... Component种类 UA ...

随机推荐

  1. 消息智能路由组件SmartRoute

    消息传递在软件开发过程中是一件很常见的事情,而在不同的场景所使用消息传递方式也有所不同,在对象之间制定相关接口方法和对象结构,对于进程之间可能使用内存共享或一些通讯产品,在不同服务器之的消息通讯则使用 ...

  2. 《众妙之门——精通CSS3》一书知识点剖析

    不得不佩服京东的速度,昨天刚下单的两本书今天上午就到了.其中一本是全彩页的<众妙之门 - 精通CSS3>,细看了前几十页,书上的叙述方式给我的印象其实不如“彩页”来的讨喜——接连说上几个例 ...

  3. mongodb( 实现join)

    mongodb提供ref和populate的方法,支持类似join的SQL操作.本文给出一个实际的例子: 1. 数据1: var daob = new Schema({ user: { type: S ...

  4. Linux4:useradd、userdel、passwd、groupadd、chgrp、chown、df、du、sort、wget

    useradd 添加新的用户账号,只有root账户可以操作 -d 目录:指定用户主目录(默认在home下),若此目录不存在可同时使用-m创建主目录 -g 用户组:指定用户所属的用户组 -G 用户组:指 ...

  5. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文

    综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...

  6. Gradle与Gatling脚本集成

    Gatling作为次时代的性能测试工具,由于其API简洁明了.性能出众,越来越受欢迎.但是运行Gatling脚本却有诸多不便,其提供的默认方式不是很方便.考虑到Gatling脚本本质上是Scala类, ...

  7. sigar

    从http://sourceforge.net/projects/sigar/files/sigar/1.6/hyperic-sigar-1.6.4.zip/download下载sigar, 参照了h ...

  8. Oracle增删改DML脚本记录

    --insert into添加数据 ','王军','男'); --提交事物 commit; --回滚事物 --rollback; insert into teacher1 select * from ...

  9. 基础才是重中之重~ConcurrentDictionary让你的多线程代码更优美

    回到目录 ConcurrentDictionary是.net4.0推出的一套线程安全集合里的其中一个,和它一起被发行的还有ConcurrentStack,ConcurrentQueue等类型,它们的单 ...

  10. atitit 短信接口规范与短信解决方案.docx

    atitit 短信接口规范与短信解决方案.docx 1.1. 国内比较著名的短信提供商1 1.2. 短信接口规范1 1.3. 短信sdk构成1 1.4. 短信的实现1 1.5. SmsServiceY ...