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

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

游戏引擎的概念

  游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 开发一款地图导航应用需要掌握以下技术: 1. 地图引擎:使用地图引擎技术,如Google Maps API、OpenStreetMap等,可以实现地图的显示和操作。 2. 定位技术:使用GPS、Wi-Fi、蓝牙等技术来实现用户的位置定位。 3. 路径规划:使用算法,如Dijkstra算法、A*算法等,来实现从用户当前位置到目的地的最优路径规划。 4. 数据库技术:存储和维护地图数据,如道路信息、POI信息等。 5. 移动开发技术:使用移动开发技术,如Android、iOS、React Native等,来实现导航应用的界面设计和功能实现。 这些技术结合在一起,可以实现一款完整的地图导航应用。 ### 回答2: 开发一款地图导航应用需要以下技术: 首先,需要掌握地图数据的获取和处理技术。这包括获取地理数据源(如谷歌地图、百度地图等)、解析和处理地图数据,并将其转换为可供使用的格式(如矢量图、栅格图等)。 其次,需要了解地理信息系统(GIS)的技术。GIS技术包括地图投影、坐标系统转换、地图缩放、地理空间分析等,这些技术能够提供更精确和高效的地图导航功能。 还需要掌握全球定位系统(GPS)的技术。GPS技术可以获取用户的位置信息,并提供导航服务。需要了解GPS定位原理、GPS数据处理技术和GPS信号捕捉技术等。 另外,需要熟悉移动应用开发技术。地图导航应用通常是在移动设备上运行的,所以需要掌握移动应用开发技术,如Android开发(Java或Kotlin)、iOS开发(Objective-C或Swift)等。这些技术可以实现地图的显示、用户位置的定位与显示、导航路线的规划与显示等功能。 最后,需要掌握网络编程技术。地图导航应用通常需要获取实时的交通信息、路况信息等,这就需要通过网络进行数据的获取和传输。需要掌握网络通信协议(如HTTP)、数据传输格式(如JSON或XML)等技术。 总之,开发一款地图导航应用需要掌握地图数据处理技术、GIS技术、GPS技术、移动应用开发技术和网络编程技术等多个方面的技术知识。 ### 回答3: 开发一款地图导航app需要涉及多个技术方面,以下是一些主要的技术考虑: 1. 地图数据:需要获取地图数据并进行处理,可以使用地图API(如谷歌地图API、百度地图API)来获取和显示地图数据。 2. 定位技术:为了实现导航功能,需要使用定位技术获取用户当前位置信息。可以使用GPS定位、基站定位或WIFI定位等技术。 3. 导航算法:导航app需要实现路径规划和导航指引等功能,因此需要使用一些导航算法,如Dijkstra算法、A*算法等来计算最短路径。 4. 数据存储:地图数据、用户信息、历史记录等需要进行存储和管理,可以使用数据库来存储这些数据。 5. 用户界面设计:一个好的用户界面设计能增加用户体验,因此需要考虑用户导航交互界面的设计和实现。 6. 移动端开发:地图导航app一般需要在移动设备上使用,可以使用移动端开发技术进行开发,如Android开发、iOS开发等。 7. 前端开发:如果是使用web技术进行开发,还需要考虑前端开发技术,如HTML、CSS、JavaScript等。 8. 后端开发:地图导航app需要与服务器进行数据交互,因此需要考虑后端开发技术,如Java、Python、Node.js等。 总之,开发一款地图导航app需要涉及多个技术方面,包括地图数据处理、定位技术、导航算法、数据存储、界面设计和移动端开发等。具体选择哪些技术取决于开发团队的技术栈和目标平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值