1 系列开篇
关于系列
(2022/6/19)
最近刚开始接触虚幻引擎的源码,感到难以入门。网上的资料繁多,但也不太成体系,看起来、找起来都不方便。这是因为游戏引擎太过庞大,各位博主的切入点或者专研的模块都不一样。
我语言和工程的基础都弱,看很多博文都看不懂,自己看引擎更是连语法都搞不明白。唯一能做的就是广泛地搜索、从能看懂的一点点开始了。
在学习过程中,有必要按照我自己的切入点来整理一下。不仅方便日后回忆和查阅,而且也想给博客开启一个很长的系列,提醒自己坚持下去。
现在的想法是,看到什么就写什么,编号一路加上去。然后在下面的目录里面分类整理。因为从头对某个模块建立认识也不是一鼓作气就能完成的,大概也会是个来来回回的过程。
此外,放一下向往大佬的剖析虚幻渲染体系,我个人觉得这是目前最成体系、最干货也相当适合入门的渲染模块的文章了(然而我连第一篇都看不完,令人感叹)。当然人家是大佬回头写教程,而我从头开始看,肯定几十篇都不及人家一篇。不过也算是找个榜样,在写作这方面激励自己了。
关于目录
其实目前我对怎么去写这个目录也没什么好的想法,看了一些比较成体系的博客的目录,如:
- UE4入门与精通,虽然只写了蓝图、反射的内容,但分了UE的使用和源码两部分,源码也分了不少模块
- 【UE4 C++】博客目录 / 学习笔记汇总,有一些基础、语法相关的东西
- 《Exploring in UE4》开篇,更多高级Gameplay模块的知识
总之就先随便列一下,后面再更新就好。
2 目录
(-1) 一切之前的事情
(0)系列开篇 & 目录
- 【我看UE源码】(0)系列开篇 & 目录 也就是本文,是系列博文的目录,有规划、记录问题的作用。参考比较成体系的博客列表。持续更新
(1)UE C++
UE4基础,各种更偏向C++(尤其是语法)的东西
目前想写以下几篇:
- 从UE4的一例Cast到C++类型转换
- UE4 sparse array的位运算一则
- UE4的排序用的是什么算法?
- 委托到底是什么?
(2)UE引擎基础
UE4基础,不那么偏向语法的东西。如反射、GC、蓝图、多线程等等,支持高级模块的一些内容
(3)GamePlay
可能是更偏向Gameplay架构的一些东西,大概就是看看大钊的那些文章
(4)UI
目前想写以下几篇:
- UMG和Slate
- Slate的几个过程
- slow path和fast path
- prepass阶段,计算size和process invalidation
- draw阶段、paint阶段的缓存技术
- 非常奇怪的LayerId分发规则
- render阶段,slate合批优化技术
- 源码欠考虑的部分,各种错误复现
- 常见的UI优化方式
(4)~(?)
各个模块,UI、网络、渲染、物理、AI、动画等