Unreal-学习笔记
UE的本质
UE的本质就是前端开发。
按照这个思维去学习,就很简单了。不要将其想复杂了。
房大佬说一个月就带着前端团队转UE开发了,这个是很可信的。二者本质上都是一样的。
所以就像学习Three.js一样去学习UE就可以了,估计也就一个月入门了。
学习方法
知识可以传授,技能只能自己习得。
想成为牛人很简单,找一本最牛的书、找一个最牛的人,把这两者的输出都彻底吃透。
陶仁贤:
鉴于你这种状况,我建议先从 UE4 新建项目开始,每一个项目都有基于BP 的模板和基于C_++ 模板,比如创建一个 第一人称射击游戏的FPS 模板,BP 和C++ 各做一个,然后通过拆解分析他们的运作基本原理,基本上就可以梳理清楚结构了。
然后超级推荐 Launcher 里面的 Content Example 这个项目,它里面包含了UE4的各主要功能模块的使用案例,通过拆解这个能学到不少东西。即使不做游戏,通过它也能深入了解 UE4的各种功能模块。
这个Content Example这么多牛人都推荐,看来是没错了。
个人的学习经验
复用Three.js的思维去学UE
比如分为场景初始化搭建、渲染器设置、相机操控之类的。
按照这种思路,整理出蓝图常用的API,形成自己的蓝图工具库,能极大提高开发效率。
你以为Three.js、UE、Unity是三个不同的东西,其实它们都是一个内容的不同实现方式而已。类比的话,就像做Web开发的三大框架:Vue、React、Angular。
因此其学习方式和概念技巧,完全是可以复用的。
比如我先通过《Learning Three.js》学了Web3D开发,那么就可以按照这本书的内容结构,去查询UE的对应内容,然后用同一套体系和笔记,快速掌握UE。
官方文档First
官方文档是质量最好的入门文档了,很多东西上面都有了。不看官方文档会死很惨,浪费大量时间。
官方Demo-Content Examples
跟着这些Demo,先从模仿开始,快速了解各个功能的实现方式。
这个配合着官方文档一起看,应该是最快的学习方式了。
学习从抄作业开始:抄代码对编程有帮助吗?
英文优于中文
遇到问题,尽量搜英文,但是要会组织问句。
个人的经验:很多问题英文一搜就出来了,中文怎么都搜不到。
用写程序的思维去画蓝图
比如先定义变量,状态变量的应用,变量传递信息等等。
牢记:蓝图本质上也是一种编程语言。
整理出各种模板的组件结构图
查看Editor右侧的树状结构图,编写出模板场景的组件结构图,比如第三人称模板有哪些组件组成,这样有助于理解整个场景。
删除法学习场景还原的参数,应用到Web3D的开发中
比如可以调试和删除灯光,看看是如何还原场景中的亮度的。
诸如此类,这样逐个因素去了解,最终理解每个因素的影响范围,然后平移到Web3D中。
学习路线
特效
体积特效(体积雾、体积云)
Asher有提到老三样,待确认具体内容
https://www.bilibili.com/video/BV1TU4y1T7oa?p=1
TODO LIST
FPS的Demo
智慧城市
为什么基于组件的设计很流行?
传统面向对象,因为是以继承为基础,具有局限性,比如设计了NPC、玩家、怪物和场景物体,有一天需求要玩家和大树对话,你怎么办?
现代面向对象,则是基于组件的设计,其实就是将传统面向对象的类,改为了一个组件容器,通过组合的方式,来实现高扩展性。
从哪里找素材
学习中的引擎特性模板(Engine Feature Samples)
Youtube搜索”Unreal free download”、”UE4 project free download”
B站UP主墨鱼驴肉汤
知乎陶仁贤
角色
虚幻争霸
RPG模板
动作RPG
场景
Soul: Cave(洞穴)
Soul: City(城市)
Open World Demo Collection(开放世界素材包,各种树、草、石头等等)
自己搭建场景:Bridge
https://docs.unrealengine.com/5.0/en-US/WorldFeatures/QuixelBridgePluginForUnrealEngine/
粒子特效
Infinity Blade: Effects
使用的时候,搜索particle即可
音乐文件
免费音频文件下载:
https://www.aigei.com/sound/class/-wav/
在线mp3转wav:
https://www.aconvert.com/cn/audio/mp3-to-wav/
移植资源
https://docs.unrealengine.com/4.26/zh-CN/Basics/ContentBrowser/UserGuide/Migrate/
材质
商城搜索Megascans
硬件准备
用你能承受的最大金额去买最好配置的电脑。
–大钊
硬件投入优先级:
- CPU
- RAM
- GPU
- STORAGE
- 必须是台式机,笔记本噪音大、发热严重,且不方便扩展;我的12700H笔记本,编译Shader时烫得没法用,噪音非常大,很影响使用体验;频率基本只能在3.2GHz,要知道这个U的睿频最高是4.7GHz,根本发挥不出来
- CPU没有上限,在经济条件允许的情况下,能多好就多好。我现在Build一个项目,还不是复杂的那种,得30分钟;而且Build过程中经常整个笔记本卡住,严重影响其他操作;打开关卡也是耗费CPU,要花费好几分钟。
- 得弄个有显卡(3060起步)的台式机,台式机960显卡是顶不住的,地图打开成PPT了
- 内存32G起步,16G多开几个软件就感觉不大够用了,这个收益可能比CPU更高
- 一定得弄个双屏,且足够大,建议24+32的搭配,一个看视频教程,一个开主窗口+蓝图窗口,跟着实践
- SSD是必需品,非固态启动和中间加载地图都很慢,起码搞个256G+1T的固态搭配,一个放系统和其他软件,一个专门放工程项目,注意系统盘至少200G,我现在100G,启动Unreal的时候会提示空间不足
要解决蓝图窗口无法tab切换的问题(双屏),错了,可以拖动将2个窗口放一起,以tab形式切换,这是UE故意这样设计的,其实更好用- Compiling Shaders非常慢,FPS的Demo引入了小镇地图后,打包一次需要(16:05开始,16:51还没结束,然后因为磁盘空间满了失败了);但是后面我重新打包,又2分钟就好了,感觉编译shader并不是每次都需要进行的。
Compiling Shaders是耗费CPU还是GPU?
当然是CPU了,你看这个名字都是Compiling,编译肯定是耗费CPU。
每次新导入别人的项目,Compiling Shaders都会耗费很多时间,且这段时间CPU被拉满了,也没法干其他事情。因此CPU一定要足够好。
另外CPU降频很严重(温度达到80℃+),降到0.5、0.6GHz了,整体利用率实际上只有20%多,这样当然编译快不起来了,根本没有将CPU的威力发挥出来。
编译完了又恢复到2.7GHz了,会不会并不是CPU的问题,而是其他的,比如内存的问题呢?
空了用公司32G内存的机器试一下,看看编译着色器时到底是哪方面导致的瓶颈。
后面观察到,是因为高温降频导致的;正常情况应该不至于卡成这样。
不要把编译和渲染这2个概念搞混了:
编译过程是要把你写的指令(本例中指的就是着色器代码)翻译成机器能够听懂并且执行的机器语言,这中间涉及到的调度、寄存等等并不是GPU擅长的简单计算。
渲染过程是将数据渲染到屏幕上,涉及的是并行简单计算,这些是GPU的优势。
说到底GPU目前也只是特定的硬件,针对特定用途进行设计优化的,不能很好的替代通用型处理器和内存。这也是为什么后来兴起了GPGPU(General Purpose Graphics Processing Units - 通用图形处理器)的概念。
结论:显卡支持光追即可,其他全部是看CPU。
Build Lighting, Compiling Shaders, Packaging都是CPU决定的。
The main bottleneck when working with UE4 is compiletime. Therefore I would take the stronger processor to boost up my workflow, since faster processor, packed with a decent ssd should mean faster compilation which means faster iteration on your code.
Ray tracing is something of a special case, otherwise the bottleneck for nearly everything during development is always the cpu.
GPU is only used for gameplay, it’s not used for building lighting or compiling. I don’t know if the compiling is multi-threaded, I would think so.
Note that more cores actually improves processing speeds in game development, like code compilation and lightmap shader building. VR are known to require beefier GPU to handle stereo rendering with high frame rate.
You might see a great overall improvement or just reduced build times when building lighting, compiling shaders or packaging.
参考资料
牛人
技术美术,写了很多文章,Unreal和Unity都有涉及,在各大游戏公司都待过,感觉把他的文章都吃透就铁定成为牛人了:
https://www.zhihu.com/people/SuperPandaGX/posts
大钊:
https://zhuanlan.zhihu.com/p/22813908
Asher:
https://zhuanlan.zhihu.com/p/107016039
谌嘉诚:
做了很多游戏Demo:
写博客:
戴鑫祺:
空山新雨后:https://www.bilibili.com/video/BV1Mk4y1B7b8?spm_id_from=333.999.0.0
https://space.bilibili.com/326185605?spm_id_from=333.788.b_765f7570696e666f.2
他的站酷:https://www.zcool.com.cn/work/ZMjc3ODU4NjA=.html
UE架构
(精)Unreal Engine 4 Gameplay框架介绍:
http://imgtec.eetrend.com/blog/2020/100060026.html
摄像机系统解析:
https://zhuanlan.zhihu.com/p/34897458
知识
【精】UE的弊端:
https://zhuanlan.zhihu.com/p/129689221
注意,我学UE是为了学习游戏开发&C++,因此可以忽略这些问题,别被误导了。这个文章似乎是一个用Unity的人写的。
这里有个Unity版的:
https://zhuanlan.zhihu.com/p/128036683?utm_source=qq&utm_medium=social&utm_oi=948245295767793664
教程
(精)类似我们的3D开发手册,列出了每个环节的学习资料:
https://zhuanlan.zhihu.com/p/196363738
(精)图形学和虚幻原理剖析,最牛逼的博客:
7分钟飞行教程(用来做御剑飞行):
搭建好场景后,用ue里面的摄像机系统进行运镜、渲染就行了。具体操作到我的收藏-虚幻引擎类-(UE5流程-从模型到渲染出片)这个视频里有讲解。
自制短片:
自制短片(我现在就用得着!):
https://www.bilibili.com/video/BV1ed4y1N7Pv/?vd_source=1ddc293a4439c7106ebd7878040f7c81
谌嘉诚的主页有不少课程:
https://www.hellocjc.com/courses/page/2
(精)这个网站罗列了很多短小精悍的代码,可供参考:
我可以学习这种方式,将常用的功能代码片段整理出来。这样学以致用,且有所整理和输出。
而且他学习UE,写了C++的代码片段,然后用Web网页将这些片段展示出来,这样就UE+CPP+Web开发啊,全整合到一起了,一举多得!
(精)上面这个unrealcpp网站的作者,是一个web开发和游戏开发双修的人,这不正是我要走的路么:
(精)游戏达人(各大游戏公司都待过)的虚幻5渲染编程教程:
https://zhuanlan.zhihu.com/p/259339890
(精)开源游戏合集:
https://github.com/michelpereira/awesome-open-source-games
紫毛的流体教程:
https://80.lv/articles/working-with-niagara-fluids-to-create-water-simulations
Udemy上面的课程:
数据可视化:
https://www.youtube.com/c/MIKELENZTIPS/videos
HTML5开发:
https://www.youtube.com/watch?v=lDkjb4X6IUA
列表:
https://zhuanlan.zhihu.com/p/479059589
(精)虚幻4渲染编程专题概述及目录:
https://zhuanlan.zhihu.com/p/36675543
(精)一周做个暗黑:
https://www.youtube.com/watch?v=F3tccrzqwvo
Awesome系列:
https://github.com/terrehbyte/awesome-ue4
https://github.com/insthync/awesome-ue4
快捷键:
https://www.unrealengine.com/zh-CN/tech-blog/designer-s-guide-to-unreal-engine-keyboard-shortcuts
腾讯课堂的教程:
https://ke.qq.com/course/182135?taid=1395791356938103#term_id=100215290&webcourse=1
斯坦福大学的课程Professional Game Development in C++ and Unreal Engine(B站也有这个课程的视频,神奇的B站~):
https://courses.tomlooman.com/
https://github.com/tomlooman/ActionRoguelike
B站视频课程(稍微老旧一点):
https://www.bilibili.com/video/BV1pb41177pn?p=1
Unreal第一课(介绍了各种工具,值得一看,比如如何快速创建城市模型、材质等):
https://zhuanlan.zhihu.com/p/358220635
(精)蓝图视频教程:
https://www.zhihu.com/question/37869217/answer/1963702268
虚幻4智慧城市教程:
https://www.bilibili.com/video/BV19T4y1P7RS
https://zhuanlan.zhihu.com/p/355768785
UE4嵌入ECharts:
https://zhuanlan.zhihu.com/p/262028302?utm_source=qq
死寂-打僵尸教程:
写实场景搭建:
(TODO)炫酷粒子教程:
残影:
https://www.bilibili.com/video/BV1Ct411U715/?spm_id_from=333.788.recommend_more_video.11
高端霸气的干冰体积雾:
https://zhuanlan.zhihu.com/p/107016039
VR开发(中国传媒大学课程):
https://www.bilibili.com/video/BV1C64y1678k/?spm_id_from=333.788.recommend_more_video.1
嵌入Web网页:
https://www.cnblogs.com/eco-just/p/12830987.html
【精】Content Example(内容示例):
https://docs.unrealengine.com/4.27/zh-CN/Resources/ContentExamples/
Content Example之网络特性:
https://cloud.tencent.com/developer/article/1335216
引擎动画合集-实现黑神话-悟空里的猴子:
虚幻引擎UE4制作个人独立电影全流程:
https://www.bilibili.com/video/BV1Sg411c7iW?p=2&spm_id_from=pageDriver
Asher-UE4之制作高端霸气的干冰体积雾:
https://zhuanlan.zhihu.com/p/107016039?native.theme=0
毛星云的博客:
https://blog.csdn.net/poem_qianmo
用虚幻4做一个废墟场景(里面有素材下载链接):
https://www.bilibili.com/video/BV1kx411B73V?spm_id_from=333.337.search-card.all.click
(精)UE提供实时扫描功能:
https://www.capturingreality.com/introducing-realityscan
UE实时面部捕捉:
https://www.bilibili.com/video/BV1M341117QN/
溶解效果(是否WebGL也可以参考?):
https://www.bilibili.com/video/BV1rZ4y1A7Aa/?spm_id_from=333.788.recommend_more_video.0
变形:
https://www.bilibili.com/video/BV1Wq4y1R7Df/?spm_id_from=333.788.recommend_more_video.1
https://www.bilibili.com/video/BV1tz4y1m79j/?spm_id_from=333.788.recommend_more_video.2
UE的UI教程:
https://forums.unrealengine.com/t/inside-unreal-introduction-to-common-ui/610301
FluidNinja 基础使用-流体特效工具:
(精)陶仁贤的B站:
https://space.bilibili.com/22866318
虚幻制片:
炫酷效果
艾尔登法环Demo:
https://www.bilibili.com/video/BV1Y34y1d7YA/?spm_id_from=pageDriver
几种科幻风格的着色器特效:
https://zhuanlan.zhihu.com/p/25725870
一个大学生的课程作业-战斗游戏Demo:
铁炉堡场景:
有意思的攻击AI:
3D传奇技能:
https://www.bilibili.com/video/BV1uz4y1d7mL/?spm_id_from=333.788.recommend_more_video.3
雷电特效:
传奇4(Windows、Steam、Mac都可以玩,第一个游戏做这个?):
UE5面部捕捉:
https://www.bilibili.com/video/BV1M341117QN/?spm_id_from=333.788.recommend_more_video.-1
LowPoly风格的游戏场景,看起来很舒服:
https://www.zhihu.com/question/506121021/answer/2276104827
Bridge做的场景:
https://www.bilibili.com/video/BV1uU4y1Z79v?spm_id_from=333.851.b_7265636f6d6d656e64.4
凡人修仙传-御空飞行(可以搞个类似的结合Cesium地图做环游世界):
https://www.bilibili.com/video/BV1kg4y1q7es/
凡人修仙传-很不错的转场效果:
https://www.bilibili.com/video/BV1ZW41197te?spm_id_from=333.999.0.0
UE4像素流送PixelStreaming教程:
https://www.bilibili.com/video/av60141592?from=search&seid=2302556660659398788
https://zhuanlan.zhihu.com/p/76406905
https://zhuanlan.zhihu.com/p/380157206
凡人修仙传-御剑飞行:
高写实森林Demo(可以下载试玩,挺震惊的):
[4K] RTX4090 Virtual Forest Walk - Unreal Engine 5 Ultra Realistic Jungle Forest Demo - YouTube
(精)这个人做了很多游戏Demo,我们后面可能会用到,比如flappy bird、跑酷等:
面试类Demo
LowPoly风格的基于C++的FPS,有github:
第三人称RPG,包含UI界面:
该项目使用纯C++完成制作,UMG以及蓝图的所有逻辑使用C++控制,该项目完成了,鼠标寻路,键盘寻路,使用C++中自带的伤害ApplyDamage以及TackDamage,自定义伤害接口,技能的拖拽,DragDropOperation中转类,特效,实时显示地图状态,完成了AI的不同状态(狂暴,平常,攻击,巡逻等)以及AI不同状态下的攻击伤害,不同元素金木水火土相生相克从而使伤害增加或者减少的原理,后期还将完善,人物系统,技能树系统,背包系统等.