1 系列开篇

关于系列

(2022/6/19)

最近刚开始接触虚幻引擎的源码,感到难以入门。网上的资料繁多,但也不太成体系,看起来、找起来都不方便。这是因为游戏引擎太过庞大,各位博主的切入点或者专研的模块都不一样。

我语言和工程的基础都弱,看很多博文都看不懂,自己看引擎更是连语法都搞不明白。唯一能做的就是广泛地搜索、从能看懂的一点点开始了。

在学习过程中,有必要按照我自己的切入点来整理一下。不仅方便日后回忆和查阅,而且也想给博客开启一个很长的系列,提醒自己坚持下去。

现在的想法是,看到什么就写什么,编号一路加上去。然后在下面的目录里面分类整理。因为从头对某个模块建立认识也不是一鼓作气就能完成的,大概也会是个来来回回的过程。

此外,放一下向往大佬的剖析虚幻渲染体系,我个人觉得这是目前最成体系、最干货也相当适合入门的渲染模块的文章了(然而我连第一篇都看不完,令人感叹)。当然人家是大佬回头写教程,而我从头开始看,肯定几十篇都不及人家一篇。不过也算是找个榜样,在写作这方面激励自己了。

关于目录

其实目前我对怎么去写这个目录也没什么好的想法,看了一些比较成体系的博客的目录,如:

总之就先随便列一下,后面再更新就好。

2 目录

(-1) 一切之前的事情
(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、动画等