Baste 发表于 2022-5-25 10:27

Unreal入门学习(一):目录

一、发展史




游戏发展史



计算机发展史

C语言:建立在图灵的状态机之上;Lisp则是站在另一种思维角度,纯函数式语言,从数学角度开发。程序语言已经非常古老,极度成熟,没有什么多余的坑可以踩。DOOM启示录,启发一种很重要的思想:对于已存在的画面,只修改update的部分,而不是重新渲染。CryTek,孤岛危机,可以用来学习引擎研发方面的知识,其引擎已经开源。服务器板块在Epoll诞生后已经接近瓶颈,直到2010年C10M诞生。
技术行业层面,游戏开发程序员本质上是一个工具,来帮助策划/美术创造出他们想要的世界的工具。



目前行业所通用的游戏与开发引擎



目前行业所通用的游戏与开发引擎

二、动画

骨骼蒙皮:最早的高低频转换技术——这是个频率问题,因为客观条件制约,高频数据是无法一直被使用的,有些时候我们需要通过一些低频数据来替代高频数据的表现。



从本质上而言,动画一个骨架操纵问题。

对于动画树的探讨:作为一种可视化编程,其本质上在于构建一颗树,C语言本身就是构建一颗树,然而动画树在构建工程中会逐渐演变成图。



动画树的制作流程

三、特效




特效发展史

关于特效层次的表现,游戏行业应当去向影视行业去学习。许多游戏行业所被困扰的问题,在影视行业中已经被解决了许多。
Unreal的Niagara系统带来的意义:(1)可视化特效美术编程,而不是传统的配置数据;(2)数据和逻辑分离;类似AI的BlackBoard,方便跨模块访问;(3)声明式逻辑编程:方便编译成CPU或者GPU原生代码。
特效与动画表现不同之处在于,即使你不懂美术也可以去制作特效;而且更有趣的是,特效本身也是一种代码编程。
一个产品立项到开发完成一般需要二到三年的时间,即使在产品立项时顶尖的芯片水准,到开发完成时已经落伍了。因此在立项时就需要提前预设。
四、细节增强技术









法线贴图的时代到来增强了细节。那么为什么不是从底层,如增加模型面数,而是通过法线贴图来增强呢?
如果需要在3D里面渲染这样一个画面,首先是很麻烦,其次是顶点太多。做这样一个模型,估计几万面都是可能的。一些大场景里,满屏的悬崖峭壁,都是这样的效果,面数太多,导致了渲染效率的低下。
SRGB Linear固然是一种新的色彩组织方式,然而影视界中早已将ACES使用起来,这是之后游戏引擎将会使用的渲染方式趋势。
五、光

在这个话题之前,我们需要先考虑的是一个问题:如何理解一个画面?
当我们在谈一个画面好的时候,是需要一个方法论逻辑的,否则就会变成凭直觉和审美来做事情,并不是说直觉和审美不行,而是如果没有一个方法论逻辑,我们没有办法把效果进行一个科学的推进。




数学体系已经是完备了的,接下来需要进行实时/离线渲染的区别。无限接近真实这个需求已经被处理,接下来计算机需要做的事情是逼近结果正确这一需求。
Unreal带来的全新的PBR模型,然而其带来问题是无法直接判断其渲染的正确性。因为程序员并没有美术的审美观,对于渲染层次的微小改变并没有什么察觉方法。同时,PBR将美术的事情从贴图转换成用已经制作好的材质球,并贴附到人物模型身上去;这是一种工作思想的转换。
GI:图形学的圣杯问题。






六、影




没有影子会带来的问题

人眼在进化过程中,对于暗部细节的敏感程度远远高于亮部。这意味着对于游戏开发来说,需要认真对待暗部中的高频与中频部分。



直接光阴影



间接光阴影

除此之外,影视行业中的调色技术,也是游戏开发中值得学习的一项。


七、大世界开发带来的问题

场景管理

四叉树/八叉树/BVH树/KD树,通过插入速度换一个查取速度。然而传统的这些场景管理方法并不能完全覆盖需求。
进一步的场景管理涉及到了对于性能的极限压榨,需要有极强的基础功底才可以。Jeff Dean提出了如下的问题:快排1GB的4Byte数据需要花费多少时间?Jeff Dean通过理论计算出来了极限时间。



Occlusion Culling

Occlusion Culling解决方案:PVS;Hardware Occlusion Culling;HZB;Soft Resterzer;Umbra;GPU-Driven PipeLine。
Terrain



当前主流手机的简单实现:近景Landscape+远景Mesh Proxy。
植被



流加载



流加载的典型参考为荒野之息,对于大地图显然是不可能完全渲染出来的,需要进行选择性的渲染。如此当人物场景进行了快速切换时,对于GC与IO带来了巨大压力。荒野之息中采取了边移动边加载的方式,当来不及加载时就卡住人物移动。
地表材质加载技术:Virtual Texture

不会,完全没听懂,以后有时间去学;
游戏CPU优化








redhat9i 发表于 2022-5-25 10:36

厉害[赞]就是这句“技术行业层面,游戏开发程序员本质上是一个工具,来帮助策划/美术创造出他们想要的世界的工具。”让我突然不敢转给公司有游戏梦想的程序员[捂脸]

量子计算9 发表于 2022-5-25 10:42

程序员也可以成为美术和策划的[爱],只是如果仅仅从程序角度而言,确实只是工具人。
而且我也是新手入门,这是我现在实习的公司内部分享,所以老手看的话可能会有很多bug。
页: [1]
查看完整版本: Unreal入门学习(一):目录