zoukankan      html  css  js  c++  java
  • 《Inside UE4》0开篇

    《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++的一些奇技淫巧。

  • 相关阅读:
    (转)dubbo远程调用细节
    (转)Dubbo扩展点实现细节
    (转)dubbo design
    (转) java中try/catch性能和原理
    mybatis入门基础(九)----逆向工程
    客观评价下软件培训机构
    mybatis入门基础(八)-----查询缓存
    mybatis入门基础(七)----延迟加载
    mybatis入门基础(六)----高级映射(一对一,一对多,多对多)
    为什么我不推荐大家去外包公司
  • 原文地址:https://www.cnblogs.com/fjz13/p/5938453.html
Copyright © 2011-2022 走看看