探索开发一个游戏引擎需要那些知识和技术
探索开发一个游戏引擎需要那些知识和技术
说到游戏引擎我们可能会想到Unity3D,虚幻引擎等。可是我们对于开发一个游戏引擎了解甚微,作为一名游戏开发者在开发游戏的同时我觉得也有必要了解并熟知如何开发一个游戏引擎。
首先开发一个游戏引擎需要了解的是对于游戏的了解程度,做出一款游戏需要些什么,而游戏引擎正是去满足开发游戏的需求。
游戏模块总结:
-
游戏逻辑模块系统:各种武器,状态,技能,背包,战斗等逻辑系统
-
动画模块系统:状态机,Montage,动画融合,IK等
-
物理模块:给需要交互表现的对象赋予物理特性(包括刚体,流体,粒子,布料等),调整重力大小等各种参数,调整交互中力的大小,调整物理约束
-
AI模块: AI导航,与玩家交互等,玩家的很多功能系统也需要给AI来使用,更深层次的可以考虑将机器学习相关的内容融入
-
UI模块:搭建各种界面框架(背包,捏脸,地图等),非常耗时间与精力,后期需要不断调整
-
渲染模块:客户端表现核心,不用多说,内容非常多且深
-
网络模块:底层架构,同步,网络连接 场景模块:包括地形,关卡,植被,角色管理与优化等
-
输入与输入处理模块:将玩家输入处理转换成逻辑,需要注意的有组合键,输入法切换等
-
游戏登录与更新:一般这是专门的工具组来做,比如我们常见的各种游戏登录器,在线更新等。
对于游戏的开发从大的角度看需要满足以上模块,所以我们开发探索一个游戏引擎也大同小异。
现在很多游戏都是基于游戏引擎所开发出来的,所以在游戏行业火热的当代,游戏引擎显得尤为重要。一款游戏引擎的开发需要巨大的人力,物力,财力,而且开发周期十分长,这也是为什么目前主流的游戏引擎都出自行业内的“拳头”公司。一是因为技术原因,最优秀的技术人员基本上都在“拳头”公司,二是因为资金问题,因为游戏引擎的开发周期长,短期内无法有有效的收益,只有大公司才有能力承受这样长期投入与产出不成正比的负面影响。
开发一款游戏引擎,首先是光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。
其次是动画,游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。
1.物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现。然而,当游戏需要比较复杂的物体碰撞、滚动、滑动或者弹跳的时候(比如赛车类游戏或者保龄球游戏),通过编程的方法就比较困难了
这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。
碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。
2.渲染引擎
我认为渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。
渲染直接决定了游戏在视觉效果上给予玩家及开发者的体验,一款游戏最重要的也是其画面。
3.脚本引擎
脚本引擎,就是一个计算机编程语言的解释器,如用于建网站的asp、php等,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。
4.网络引擎
引擎组成
搜索引擎一般由搜索器、索引器、检索器和用户接口四个部分组成:
-
搜索器 其功能是在互联网中漫游,发现和搜集信息;
-
索引器 其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表;
-
检索器 其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息;
-
用户接口 其作用是接纳用户查询、显示查询结果、提供个性化查询项。
-
robots
robots协议(也称为爬虫协议、爬虫规则、机器人协议等)也就是robots.txt,网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。一些病毒如malware(马威尔病毒)经常通过忽略robots协议的方式,获取网站后台数据和个人信息。
5.粒子系统
粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的 game physics。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。
最后我想用一张图带大家理解一下引擎的基本架构: