《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,分析透彻各个具体模块的运作机理无疑也是个艰巨的任务,但我们努力一分也至少有一分的收获,有一分的甜蜜。
面向的读者:
-
不满足于目前世面上教程深度的。已经大概知道了引擎功能并使用,但是仍然想要知道得更多的人。
-
有一定的C++基础。UE4里的C++已经被Epic给魔改后又和C#厮混在一起,一方面得益于此,UE4里的C++实现了各种方便的功能,如反射,垃圾回收,编译系统等重量级的功能。一方面也加大了我们的阅读难度。所以需要你有良好的C++基础,至少看得懂各种C++模板,熟悉各种数据结构。
-
有一点点的C#语言能力,在涉及UE4编译系统的时候,会谈到一些C#,还好不是很多,也还好C#作为一门非常优秀的语言非常易读,不过你要是已经掌握C#,那就更好了。
-
了解3D游戏引擎的一些基础概念,如知道什么是材质,什么是骨骼动画融合等。所幸这些都是很容易知道的知识。
-
有一些基本的图形学知识,知道Mesh,Shader,RenderTarget……等等一些基本的概念。本教程在开始某个专题的时候,会简单讲解一下背景知识,但它不会变成基础图形学教程。
不适合的读者:
-
希望通过该教程学习快速上手UE4引擎的人,不适合你。目前快速上手UE4的最佳途径依然是官方文档和视频教程。
-
希望学习然后自己搭建具体游戏的,如FPS,VR游戏,样板间等。本系列教程不会教你从零开始搭建一个游戏示例,虽然会讲解VR的各种配置的内部机制原理。
-
希望学习某个模块具体案例的,如用材质编辑器实现各种效果。本教程会透彻分析材质编辑器内部的实现机制,也会讲解各个材质节点的功能和原理,有时也会看需要通过一些非常直接简单的示例来讲解。但目标从来都是讲解原理,而不是实现结果。
愿景和计划
-
从C++源码层次上分析整个游戏引擎的架构。了解清楚各个模块之间是怎么协作的,如果有闲情雅致,也甚至会具体到谈一谈某个很小的点为何这么设计。如UE4里的Delegate,Pointers,TArray等。
-
虽然源码剖析本来就是曲线陡峭的上升,但还是希望能尽量深入浅出的讲解,所以也会尽量结合实际的效果演示。
-
因为UE4比较庞大,所以会逐渐的展开各个专题展开,在讲解一个专题的源码时,会暂时忽略其它跟它协作模块。
-
虽然UE4也可以做移动平台的开发,但本教程还是主要专注于Windows的PC端游戏内容。
-
计划是连载周更,虽说已经有预定的专题讲解列表计划,但并不妨碍你留言告知你最想了解的下一个专题。我会酌情改变优先级。
-
本人也是才疏学浅,经验有限,如有错误纰漏之处,也请不理赐教,共同学习进步,不胜感激。
一些准备工作
虽说官方已经提供了简便的launcher,但还是推荐自己自己Clone源码编译,也方便时不时的Debug和查看源码知道Why。而且有些时候其实是直接更改引擎源码来得更为方便便利的。
Clone下来之后先点 Setup.bat再点 GenerateProjectFiles.bat ,然后打开UE4.sln,按照默认选项DevelopmentEditor,等待最初半个小时的编译后,就可以开始源码之旅了。引擎版本紧跟Github最新release,目前最新4.13.1
本教程也会同时大量引用官方文档的内容,在官方文档简略的介绍的基础上,通过源码加深理解,再更加透彻的解释。
UnrealEngine官方Youtube频道
UnrealEngine官方优酷频道
有条件的话,还是建议自搭梯子,youtube的视频教程更新是最快的,而且也有高清。
UE4深入学习QQ群 456247757
欢迎各位互相学习讨论。
也会在群里提前预告下一篇专题内容。
希望下一篇讲解什么专题的也请在群里发言讨论。
其他的无关的话:
之前开源过一款自研的Medusa游戏引擎,一个人毕竟精力有限,也无法开工各种编辑器工作流。所以Medusa引擎目前只是作为自己的一个试验场,未来也会专注于2D游戏的一些探索。关于Medusa游戏引擎的内部架构,其实想讲的也挺多,希望以后在UE4的相关介绍后,得空顺便讲一些其他游戏引擎的架构思想,和C++的一些奇技淫巧。