1,3D核心三要素
摄像机,游戏理论的3C,角色(Charactor)、摄像机(Camera)、控制(Control),3D游戏的视觉承载核心和技术支撑就是摄像机。
Pipeline,管线,流水线。3d处理的素材、数据、表现更加复杂,需要流水线操作,高效的分工协调配合才能做出效果。简单的分为三种,Art Pipeline、Render Pipeline和Graphics Pipeline。
Art Pipeline,决定了美术能够多大程度发掘引擎的潜能。简单的讲,美术的各种素材,比如模型、动作、贴图等等如何导入进引擎再,配合各种材质和引擎工具做出效果,对美术的制作能力要求很高。如何多快好省的做出效果,很多时候决定了引擎的流行程度。
Render Pipeline,决定了引擎的游戏运行时候的性能和表现,某种程度上是引擎的核心,场景如何管理、如何组织复杂多变的显示元素,渲染顺序,渲染框架,如何高效实现光照、阴影,如何调用底层绘图接口等等,引擎程序员有多厉害主要是看这个,最近看了cry engine的程序员介绍pbr,重金属风格啊,男程序浑身打孔,请脑补美剧里面的那种重金属青年(逃
Effect,3D引擎的核心是如何真实的模拟现实世界,最好能够宏大史诗,让玩家沉浸,简单的讲,次时代,这个是很大的坑,后续补。
2,引擎组成
3D引擎最核心的两个技术点,资源管理和渲染模块。现在成熟的引擎,遇到问题,查官方文档或者网上找资料,基本上可以解决,不过资源管理和渲染模块,前者需要悟性加上大量经验尤其是上线项目经验的积累,后者的话,基本上是引擎的核心了,多少人皓首穷经都不得其精通之法。
引擎框架,引擎如何组织运行,游戏循环,各种子系统的集成等等
资源管理,引擎组织素材、文件管理、打包资源、游戏加载进内存、资源卸载等等。这个影响两个核心的点,如何组织大量素材加上如何高效管理内存,前者至少需要有全局意识,后者需要大量经验的积累。
渲染模块,最底层的绘图API的调用,场景如何组织,如何渲染,支撑那些效果,基本上前面的核心三要素都是和这个有关,下面会继续聊得。
物理模块,运动模拟加上碰撞检测,底层大量的数学运算,有成熟的框架库支撑,参考官方文档基本上就可以高效实现酷炫效果。两个很重要的,物理和动画的结合,比如布娃娃等等,物件破坏,当然,也有用美术预制好的碎片做出很好的击破效果的。
动画模块,对大部分游戏来说,就表现而言,基本上仅次于渲染模块。这个其实内容也非常多,倒不是说它比物理模块技术麻烦,而是,历史悠久、流派众多、风格迥异。实现方式也是多种多样,主流的是骨骼动画,模型定点(Vertex)绑定骨骼(Bone),骨骼运动,通过计算驱动Vertex变换。基本的播放控制,再提供大量的状态机和工具以方便设计人员组合调优。永远不要低估大神能够在这块做出风格化甚至是酷炫的效果!!!
音频模块,这个其实蛮有讲究的。
跨平台,两个点,打包多平台的安装包运行和各种平台碎片化差异化的处理。手游出现之后,这个非常重要,某种程度上决定了引擎的流行程度,cocos和unity的兴起很大程度上是跨平台和易用。一般情况下,底层都是c++,编译成anroid和ios平台的库文件,打包进安装包运行。
脚本模块,脚本的话,开发效率更高,而且热更新。unity的话,c++嵌入mono以支持c#,往往会再嵌入lua支持热更新。cocos的话,支持lua和js。
粒子和UI,一般的话,这两个只是作为渲染模块的附带功能的,不过,大部分国产游戏效果主要是看特效,特效的话主要是粒子实现的,UI的话就更不用说了,大家都是拼系统数值的,大量的工作量都在里面。
引擎工具,项目成员如何使用引擎,引擎强大的功能如何通过很好的接口暴露给使用者,这个的话,决定了团队的整体开发效率。
调试工具,简单的log,复杂的各种性能工具和图形工具,后面会开坑。
3,不忘初心
为何c++
打通任督二脉是什么感觉?游戏技术往往很杂,也往往很多,c++是主流的底层通用语言,这门语言可以帮你打通各种技术点,并且可以朝着底层一直发展。游戏编程的话,很多时候,需要处理大量的业务逻辑和技术点,很杂也很苦逼,有时候,运气和时机也很重要的,说多了都是累啊。之前的话,可能朝着广度发展,技术学的多用的多,也是到了深入发展核心技术的时候。所谓T型人才,需要用广泛的知识积累和核心的深入技术点突破,对游戏编程的话,往往是渲染。
VR的未来如何?c++打通底层的话,应对VR的话,应该不会出现技术债。大量的好手都去做VR,有种说法,VR处于技术红利期,大家都还在积累技术经验,这个和手游不一样,手游兴起的话,某种程度上是创意,之前大量的公司都在尝试各种想法,后来的网易两个西游出来后,大量的研发团队重新找回自己的打法和思路,然后行业主流迅速固化。VR兴起的话,可能是这种大厂和前期技术积累的好手,直接发力,一波拉到很高的制高点,之前VR的话,unity感觉也行,最近感觉虚幻才是很多团队的真爱,不知道未来会如何??(逃
为何底层
这个世界唯一不变的就是变化,计算机是个层层抽象的过程,底层技术给上层技术提供支撑,上层技术变化多花样多,跟着潮流走很累很迷茫的。底层很多时候,很苦涩。以武侠为例把,底层技术类似于扎马步练吐息,很基础也很费脑,打通之后,至少感觉,走路轻了好多,艾玛,我竟然会飞了,这种感觉。底子和内功打好了,外功修炼起来快,不排除类似于独孤九剑这种,招式制胜,天下武功,唯快不破。
何为底层
渲染。
4,渲染
a, 基础
Pipeline,3d转换2d,2d转换像素,像素着色
光照,模拟光的效果,尽可能真实感,基础的Phong光照模型。
贴图,增强模型细节表现。能够次时代就次时代,不能够的话,就看手绘贴图功力。
摄像机,摄像机控制,将3d转换2d
阴影,shadowmap和lightmap,如果高效实现光影效果
Render To Texture,将场景渲染到贴图,二次处理实现各种功能和效果。
b,绘图API
核心,shader base + context state + buffer object。主流的API和GPU都支持shader,方便灵活实现各种效果。context state,绘图API底层都是通过各种状态控制。buffer object,减少cpu和gpu传送数据,优化性能。
常见API,directx、opengl、opengles
(后面坑太大,下次再补,未完待续)
c,引擎
cocos、threejs、orge、unity、虚幻
网友评论