开发一款引擎涉及到哪些技术

       开发一款引擎涉及到哪些技术

游戏引擎的概念

  游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。【摘自百度】

游戏引擎涉及到的技术

1、渲染引擎

  渲染引擎由渲染管理器组成。这个管理器负责将数据发送到GPU并激活正确的着色器。
  要在屏幕上渲染像素,你需要与GPU通信。要做到这一点,你需要一个媒介。 这种介质称为OpenGL。
  OpenGL不是一种编程语言,它的目的是将数据从CPU传送到GPU。因此,作为计算机图形开发人员,你 的任务是通过OpenGL对象将数据发送到GPU。为此,GPU需要三组数据:

  1)Attributes数据:由GPU用于组装几何,应用照明和图像到游戏角色。
  2)Uniforms数据:向GPU提供空间数据。
  3)Texture数据:纹理是用于包装角色的2-D图像。

GPU由四个着色器组成:

  1)顶点
  2)面片
  3)细分曲面
  4)几何

  着色器是一种存在于GPU中的程序。它们是可编程的,并允许操作几何和像素颜色。
  详情链接

2、物理引擎

  游戏物理引擎主要包括:粒子数学、运动定律、粒子物理引擎、合力、弹力、硬约束条件、质体物理引擎、旋转操作的数学知识、刚体运算定律、刚体物理引擎、碰撞检测、生成碰撞、碰撞处理方案、静态接触和摩擦力、稳定性和优化问题、整合方案以及其他物理引擎等内容。

3、游戏音效

分类

  从目前国产游戏的音效结构来看,可以按以下方式简单分类:
  按音效格式和制作方式分类:
  1)单音音效
  2)复合音效
  3)乐音音效
  按功能分类:
  1)界面音效
  2)NPC音效
  3)环境音效
  4)技能音效
  5)背景音效

格式

  1)Wav/mono(stereo)/44.1KHZ/16位
  2)mp3/stereo/128K
  3)ACC
  格式本身无好坏之分,可根据游戏引擎的兼容性来决定使用哪一种格式的音效。
  详情链接

4、脚本引擎

  脚本引擎,就是一个计算机编程语言的解释器,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。

  早期的桌面数据库如dbaseIII、foxbase等也属于脚本型编程语言.

脚本语言的运行机制

  1)脚本语言有一个重大缺点就是执行速度。传统的脚本语言执行起来会比编译的c ,c++语言慢一些,或者慢更多。原因在于脚本语言被一种叫做虚拟机的东西(virtual machine VM)解析执行。虚拟机是软件的一个独立模块,属于程序本身的一部分。虚拟机在游戏主程序和脚本之间嫁接了一个桥梁(见2)。这里的虚拟机,其实也就是所谓的脚本引擎。
  2)脚本实时的被虚拟机解析 ,而且如果你的主程序或者游戏引擎整合了虚拟机,那么就开发者而言,你可以任何时候访问脚本中的东西,比如方法,变量或者其他对象。同样的,脚本语言可以访问程序中的方法和对象。所以利用脚本语言你可以任何时候去拓展固定代码的功能,因为你可以在脚本文件编写新的方法并在程序中被运用。

为什么要在游戏中添加脚本引擎呢

  因为脚本提供一种能力可以让你编写游戏主要的功能而不用去编译整个游戏引擎。比如游戏的大多数组件模块,像AI,UI,游戏事件,保存和加载游戏功能等等。脚本提供一种编辑工具去改变游戏的逻辑并且可以实时运行。
  在unity当中你编写的c#就是脚本语言,它运行在mono之上。

5、电脑动画

电脑动画分两种:

  一、电脑创作动画:指的是用3D动画那样,创作和制作在一起。
  二、电脑制作动画:指的是用PS平面软件,制作动画页面,这样可以节省很多成本。

动画软件

  主流的电脑动画的软件有:3ds max、maya、flash、poser、Xara3D等 。
  详情链接

6、人工智能

  人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
  人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
  人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。[^1]【人工智能皆摘自百度百科】

  详情链接

7、网络引擎

  互联网搜索引擎是万维网中的特殊站点,专门用来帮助人们查找存储在其他站点上的信息。

引擎组成:

1、搜索器

  其功能是在互联网中漫游,发现和搜集信息;

2、索引器

  其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表;

3、检索器

  其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息;

4、用户接口

  其作用是接纳用户查询、显示查询结果、提供个性化查询项。

5、robots

  robots协议,网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。

目前主流网络引擎

ACE:http://www.cs.wustl.edu/~schmidt/ACE.html
ASIO:www.boost.org
RakNet:http://www.jenkinssoftware.com/
国内的网络引擎产品有:http://www.joy70.com/

8、场景管理

参考文章

http://www.cnblogs.com/kex1n/archive/2012/08/26/2657054.html 关于场景管理概述
http://www.cnblogs.com/wangchengfeng/p/3495954.html?utm_source=tuicool 常见三维场景管理
http://blog.csdn.net/zhanxinhang/article/details/6706217 四叉树和八叉树
http://blog.sina.com.cn/s/blog_6471e1bb010135w1.html bsp树种portal计数
http://www.cnblogs.com/eyeszjwang/articles/2429382.html k-d树原理
http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html k-d树详解

常见场景管理技术

  对于一个有很多物体的3D场景来说,渲染这个场景最简单的方式就是用一个List将这些物体进行存储,并送入GPU进行渲染。当然,这种做法在效率上来说是相当低下的,因为真正需要渲染的物体应该是视椎体内的物体。除此之外,从裁剪算法和碰撞检测等算法的效率来说,使用这种数据结构也是相当低效的。比较好的方式是使用具有层次结构的空间数据结构存储待渲染的物体,如BVH(包围体层次结构)、BSP(二叉空间分割)树、四叉树、八叉树和模糊K-D树等,在进行空间查找或者剔除的时候将时间复杂度从O(n)降低到O(logn)。当然,对应的代价是每帧更新的时候,需要更新对应的空间数据结构。

常见场景管理方法

多层次包围盒(BVH)
四叉树
八叉树
BSP树
k-d树 

原文链接:https://blog.csdn.net/u012234115/article/details/47156217

猜你喜欢

转载自blog.csdn.net/weixin_44870508/article/details/102794230