《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,分析透彻各个具体模块的运作机理无疑也是个艰巨的任务,但我们努力一分也至少有一分的收获,有一分的甜蜜。
面向的读者:
不满足于目前世面上教程深度的。已经大概知道了引擎功能并使用,但是仍然想要知道得更多的人。
有一定的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++的一些奇技淫巧。
《Inside UE4》-0-开篇的更多相关文章
- 《Inside UE4》目录
<Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...
- 《Inside UE4》-2-GamePlay架构(一)Actor和Component
<Inside UE4>-2-GamePlay架构(一)Actor和Component <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...
- 《Inside UE4》-1-基础概念
<Inside UE4>-1-基础概念 InsideUE4 创建测试项目 接上文的准备工作,双击生成的UE4Editor.exe,选择创建测试C++空项目Hello(以后的源码分析 ...
- Android网络通信框架LiteHttp2.0 开篇简介和大纲目录
本帖最后由 移动天宇 于 2015-10-26 10:42 编辑 LiteHttp2.0很多东东焕然一新,旧的能力也得到增强,没有使用的同学来了解一下吧. Android网络框架为什么可以选用lite ...
- Java容器解析系列(0) 开篇
最近刚好学习完成数据结构与算法相关内容: Data-Structures-and-Algorithm-Analysis 想结合Java中的容器类加深一下理解,因为之前对Java的容器类理解不是很深刻, ...
- R in Action(0) 开篇
这几年数据挖掘的火热,也越来越多的人把R作为数据挖掘的一个辅助工具,据国际性组织kkguter统计有60%的人在挖掘过程中用到R工具,可见这个工具是多么的流行,对于数据统计.筛选以及画图绝对是神器.尽 ...
- Machine Learning in Action(0) 开篇
现在貌似In Action很流行,各种技术抽象成工程商的Action,可以避开繁琐的内部原理,这本书从实践出发,通俗易懂的解释那些常用的机器学习算法,类似跟<集体智慧编程>.这本书中文出版 ...
- Core + Vue 后台管理基础框架0——开篇
1.背景 最近,打算新开个项目,鉴于团队技术栈,选型.net core + vue,前后端分离.本打算捡现成的轮子的,github上大致逛了逛,总发现这样那样的不太适合心中那些“完美实践”,例如:Ab ...
- Aery的UE4 C++游戏开发之旅(1)基础对象模型
目录 UObject Actor种类 AActor APawn(可操控单位) AController(控制器) AGameMode(游戏模式) AHUD(HUD) ... Component种类 UA ...
随机推荐
- 升级AutoMapper后遇到的“Missing map”与“Missing type map configuration”问题
前几天发现 AutoMapper 3.3 的一个性能问题(详见:遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍),于是将 AutoMapper 升级至最新的 5.1.1 看是否 ...
- MySQL数据丢失讨论
原文地址:http://hatemysql.com/tag/sync_binlog/ 1. 概述 很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下 ...
- Wix 安装部署教程(十一) ---QuickWix
这次发布的是这两天做的一个WIX工具QuickWIX,主要解决两个问题点1.对大文件快速生成wix标签(files,Directories,ComponentRef):2.比较前后两次工程的差异.大的 ...
- Silverlight4中实现Theme的动态切换
Silverlight一般用来开发一些企业的应用系统,如果用户一直面对同一种风格的页面,时间长了难免厌烦,所以一般都会提供好几种风格及Theme供用户选中,下面就来说一下如何在不重新登录系统的情况下, ...
- javascript笔记:javascript的关键所在---作用域链
javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript技巧也是围绕作用域进行的,今天我要总结一下关于 ...
- Python--过滤Mysql慢日志
##================================================================## 先来个笑话: 刚交的女朋友让我去他家玩,我觉得空手不好,于是告 ...
- Caliburn实现MVVM模式的编程
引言:什么是Caliburn ? 一个夜晚,一处教堂,人们忏悔结束后抬头看到一把宝剑插在一块石头上.石上字述“英格兰人,凡能从石头上拔出剑者,为王者!”,Caliburn就是英格兰人心中的石中剑,这把 ...
- JavaScript 数组详解
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...
- 人机大战之AlphaGo的硬件配置和算法研究
AlphaGo的硬件配置 最近AlphaGo与李世石的比赛如火如荼,关于第四盘李世石神之一手不在我们的讨论范围之内.我们重点讨论下AlphaGo的硬件配置: AlphaGo有多个版本,其中最强的是分布 ...
- Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
网易公开课,第10,11课 notes,http://cs229.stanford.edu/notes/cs229-notes5.pdf Model Selection 首先需要解决的问题是,模型 ...