Inside UE #0

作者:Walker
2016-12-03
1 10 3

Inside UE4 目录

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

本系列教程《Inside UE4》,希望从最最底层的 C++ 源码剖析,到最最上层的蓝图节点,力求解释清楚各个选项的内部运作机理。希望做到知其然,而更要知其所以然。UE4 也是一个非常博大精深的引擎,分析透彻各个具体模块的运作机理无疑也是个艰巨的任务,因此书写周期不定,尽量周更。

计划(目前包括 GamePlay 架构部分)

  • 开篇
  • 基本概念
  • GamePlay架构
    • Actor 和 Component
    • Level和World
    • WorldContext,GameInstance,Engine
    • Pawn
    • Controller
    • PlayerController和AIController
    • GameMode和GameState
    • Player
    • GameInstance
    • 总结

前言

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 端游戏内容。

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

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

一些准备工作

访问这个地址需要先加入Epic的Github成员权限里。这个链接说明了步骤。

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

Clone 下来之后先点 Setup.bat 再点 GenerateProjectFiles.bat ,然后打开 UE4.sln,按照默认选项 DevelopmentEditor,等待最初半个小时的编译后,就可以开始源码之旅了。

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

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

  • UE4深入学习QQ群 456247757

欢迎各位互相学习讨论。

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

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

其他的无关的话

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


原文地址


知乎专栏

近期点赞的会员

 分享这篇文章

Walker 

UE4游戏引擎研究爱好者 

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. 喵喵桑 2016-12-05

    在知乎上看到过,膜拜

  2. HRSKNK 2016-12-06

    优酷频道跳到了github

    • eastecho 2016-12-28

      @HRSKNK:是呢,估计链接错了

      最近由 eastecho 修改于:2016-12-28 22:25:59

您需要登录或者注册后才能发表评论

登录/注册