游戏引擎设计的技术及详解
游戏引擎的那点事
- 这东西是个啥
- 功能
- 渲染器
- 渲染流程
- 物理引擎
- 粒子
- 流体
- 软体
- 物理
- 碰撞检测系统
- 音效
- 游戏音效
- 音效分类
- 按音效格式和制作方式分类
- 按功能分类
- 游戏音乐
- 脚本引擎
- 人工智能
- 电脑动画
- 游戏动画
- 网络引擎
- 场景管理
- 1.什么是场景物体?什么是游戏场景?
- 2.一般情况下哪些内容属于场景物体,哪些不属于场景物体?
- 3.场景管理的意义
- 4.2D游戏需要场景管理么?
- 5.2D场景管理与3D场景管理的差别?
- 6.关于非物理碰撞检测的问题与优化方案
- 7.四叉树与八叉树
- 8.关于碰撞检测的优化思路
- 9.关于视野渲染的优化
- 10.入口管理
- 11.游戏天空的实现
- 12.LOD
- 13.地形的处理
- 14.地表纹理处理
- 15.水
- 16.植被
这东西是个啥
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。
游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图象,声音,动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图象,声音,动画等)。游戏引擎则是按游戏设计的要求顺序地调用这些资源。
功能
它其实并不是什么高深莫测的东西,无论是什么游戏,他们的底层都是基本相同的,都有用于控制的脚本,现如今的游戏引擎集成了多个复杂的子系统,游戏引擎包含以下系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
渲染器
渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。
渲染流程
首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其它视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和哪些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的,很多初学三维的人只注意立体感的塑造而忽略了空间感。要知道空间感和光源的衰减、环境雾、景深效果都是有着密切联系的。
渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响,这和真实世界的情况又是一样的。许多三维软件都有默认的光源,否则,我们是看不到透视图中的着色效果的,更不要说渲染了。因此,渲染程序就是要计算我们在场景中添加的每一个光源对物体的影响。和真实世界中光源不同的是,渲染程序往往要计算大量的辅助光源。在场景中,有的光源会照射所有的物体,而有的光源只照射某个物体,这样使得原本简单的事情又变得复杂起来。在这之后,是使用深度贴图阴影还是使用光线追踪阴影?这往往取决于在场景中是否使用了透明材质的物体计算光源投射出来的阴影。另外,使用了面积光源之后,渲染程序还要计算一种特殊的阴影--软阴影(只能使用光线追踪),场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果,特别是体积光,也称为灯光雾,它会占用大量的系统资源,使用的时候一定要注意。
在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。而且,这个结果不是独立存在的,它必须和前面所说的光源结合起来。如果场景中有粒子系统,比如火焰、烟雾等,渲染程序都要加以“考虑”。
物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现。然而,当游戏需要比较复杂的物体碰撞、滚动、滑动或者弹跳的时候(比如赛车类游戏或者保龄球游戏),通过编程的方法就比较困难了。
粒子
所谓的粒子运动,主要是指大规模的物理运动,比如此前提到过的用手雷将油桶引爆后所形成的碎石头、冲击波造成的尘土飞扬等效果,这些效果如果都让传统的CPU来进行运算的话,无疑是相当困难的。
流体
流体运动更多的则是展现水从水管内喷出,水冲击到物体后,物体的表现,比如木箱被冲翻。而那些被冲翻的木箱翻倒的方向每次都各不相同,又比如在一个NⅥDIA Logo形状的玻璃容器中,用鼠标来控制玻璃容器的位置,让容器里的液体流动,这种流动的效果和现实中的效果已经相当接近了。
软体
在NⅥDIA展示的演示画面中,还有一个则是“食人花”的场景。讲述的是一朵巨大的食人花(也可以说是花形状的怪兽)被人抓住以后,玩家用激光去攻击食人花,然后这朵“花”就会作出反应。这种软软的身躯扭动起来非常像现实生活中看到的鼻涕虫之类的虫在蠕动一样,感觉相当恶心。
物理
至于在关节和布料方面的应用,人物用夸张的肢势行走,虽然动作夸张,却丝毫没有虚假的成分在里面,这在传统的3D游戏里是很难做到的。而身上的衣物也跟着关节的移动而跟着摆动。
可以看出,所谓物理效果,都是在游戏中模仿现实中真实物理世界的运动方式,在游戏中,大家甚至能感受到箱子、石头、布料以及那些恶心的无脊椎动物的触感是怎样的。游戏之所以能实现如此多的动态效果,都要归功于物理运算。
碰撞检测系统
碰撞检测在3D游戏中至关重要,好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度内的台阶可以自动上去,而过高的台阶则把人挡住,遇到斜率较小的斜坡可以上去,斜率过大则把人挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景。
碰撞检测做得好了是应该的,不易被人注意到,因为这符合我们日常生活中的常识。做得差了却很容易让人发现,人物经常被卡住不能前进或者人物穿越了障碍。所以大部分人都觉得写碰撞检测代码是件吃力不讨好的事情,算法复杂、容易出bug、不容易出彩。下面还是回到正题,看看我们该如何解决这个难题。
早期3D游戏的碰撞检测多数基于格子或者BSP树,基于格子的系统实现简单但精度不够,不属于严格意义的3D碰撞检测。基于BSP树的碰撞检测一度十分流行,算法基本已经成熟定型,但它的固有缺点却使它不太适合现在的游戏。BSP树需要很长的预处理时间不适合加载时计算,BSP划分经常会产生原多边形数三到四倍的多边形,考虑到不用保存法线、颜色、uv等信息也要增加将近一倍的资源容量,在一个大的游戏中将模型资源的容量从200M增加到400M相信是大部分人都不愿接受的。目前对于任意复杂三角形集合(mesh)的碰撞检测多数基于BVTree(bounding volume tree),具体可以是aabb tree,obb tree或者K-dop tree,这也是当今各种物理引擎和碰撞检测引擎流行的做法。
上面是碰撞检测按数据结构不同的分类,按检测方式又可以分为离散点的碰撞检测和连续碰撞检测(CCD continuous collision detection)。离散点的碰撞检测是指定某一时刻T的两个静态碰撞体,看它们之间是否交迭,如果没有交迭则返回它们最近点的距离,如果交迭则返回交迭深度,交迭方向等。连续碰撞检测则是分别指定在T1、T2两个时刻两个碰撞体的位置,看它们在由T1运动到T2时刻的过程中是否发生碰撞,如果碰撞则返回第一碰撞点的位置和法线。连续碰撞检测是最为自然的碰撞检测,可以大大方便碰撞响应逻辑的编写,可以很容易避免物体发生交迭或者穿越。离散点的碰撞检测则没有那么友好,当检测到碰撞时两个物体已经发生了交迭,如果其中有三角形网格对象那么已经有许多三角形发生了交迭,如何将两个交迭的对象分开并按合理的方式运动是一个挑战。虽然连续碰撞检测是最自然的方式,但它的实现非常复杂,运算开销也很大,所以目前大部分成熟的物理引擎和碰撞检测引擎还是采用了基于离散点的碰撞检测,为了避免物体交迭过深或者彼此穿越,大多都要采用比较小的模拟步长。
目前成功商业3D游戏普遍采用的碰撞检测是采用BSP树及包装盒方式。简单讲就是采用一个描述用的正方体或者球型体包裹住3D物体对象整体(或者是主要部分),之后根据“描述用”包装盒的距离、位置等信息来计算是否发生碰撞。
音效
游戏音效
游戏音效指的是电子游戏中发生特定行为或进行特定操作时播放的效果音乐。如子弹发射时的声音、怪物死亡时的惨叫、点击按钮时的“咔嚓”声音等。
音效分类
从目前国产游戏的音效结构来看,可以按以下方式简单分类:
按音效格式和制作方式分类
(1)单音音效
单音音效是指单个wav文件为一个独立音效,游戏中的音效绝大部分都是单音音效,由程序调用发声并控制远近、左右位置。
(2)复合音效
复合音效是指具有多个声音元素,在游戏过程中由程序即时对这些元素合成发声的音效。有的游戏专为声音设计了复合音效引擎。这种音效最大的优点是元素可以重复使用,有效控制了音效元素的下载负担,而且变化丰富。缺点是制作难度大,技术要求复杂。代表游戏:网易《大唐豪侠》。复合音效的制作详见《游戏创造》2007年1月刊,由月之门撰写并制作的视频教材:《复合游戏音效制作详解》。
(3)乐音音效
乐音音效更像是一小段音乐,通常在进入地图的时候闪现出来,这种音效属于音乐制作范畴,通常由音乐制作方来制作。代表游戏:网域《华夏2OL》
按功能分类
(1)界面音效
用于界面操作的音效,界面音效贯穿整个游戏过程,比如菜单弹出收回、鼠标选定,物品拖动等等。
(2)npc音效
所有角色相关音效,比如脚步声、跑步声、死亡声、被攻击的叫声等等。
(3)环境音效
自然环境声,比如风声、湖水涟漪的轻声、瀑布声、鸟鸣等等。
(4)技能音效
主要指各种攻击声音、刀的舞动、矛的冲刺、踢、打、爆炸等音效。
(5)背景音效
主要指游戏中不同场景,不同地图的音乐,比如不同地图搭配不同风格的音乐,回合制游戏中战斗场景中的战斗配乐等。
游戏音乐
游戏音乐 与音效的区别
游戏音乐一般只指游戏中连续循环播放的背景音乐,通常与游戏操作和游戏中的状态无关,而游戏音效则是通常以特定的场景或行为(如子弹发射)为触发音乐播放的条件,如果没有可以触发音乐的行为则不播放。游戏音乐和游戏音效都是一个电子游戏中声音效果的组成部分,现代的大多数电子游戏一般既有游戏音乐,又有游戏音效。
脚本引擎
脚本引擎,就是一个计算机编程语言的解释器,如用于建网站的asp、php等,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。
什么是游戏脚本
游戏脚本就是根据必定的格式编写的可执行文件,游戏可以通过脚本中自定义的语句来执行应相的逻辑。
举个例子,蹈舞演员随着音乐翩翩起舞,其实音乐在这里就担当了脚本的角色,音乐里记录了个一每蹈舞作动,蹈舞演员根据自己的专业知识,将这些音乐换转为美优的舞姿。
游戏也一样,游戏脚本里记录了游戏的控制语句,游戏引擎将这些控制语句行进剖析,换转为活泼的游戏画面。
一个优良的游戏脚本,常通能控制游戏中的一切。游戏中所有可变的据数,都应该通过脚来本控制,例如RPG游戏中的剧情任务,人物对话,不同角色的长成,道具的性属,甚至游戏中的按钮等等。
人工智能
以下内容引用自
人工智能技术在游戏中的应用,浅谈游戏AI的应用技术.
人工智能(Artificial Intelligence) ,英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等,研究成果已经广泛地用于了各行各业,当然也包括游戏。
电脑游戏与人工智能的关系
我们在玩电脑游戏的时候,也希望游戏中的其他角色能够拥有某些程度上的智能。这些智能可以使得人们能够在游戏的同时得到满足,它可以使人在进行游戏中不觉得孤单。然而,这种智能必须得到控制。如果游戏中的机器角色的智能明显高于玩家的能力,玩家会有很强烈的挫败感,之后便会放弃这样的游戏。所以,人工愚蠢(Artificial Stupidity)技术也是必不可少的。在游戏中,太强或太弱的人工智能都是不合适的。
那何种程度的人工智能才是合适的呢?回答这个问题首先要考虑怎样的机器可以算作智能机器。这里就不能不提人工智能之父图灵。图灵在1950年提出了“图灵实验”的概念,他认为能够通过图灵实验的机器是具有智能的。其实,在游戏中也是一样的。“图灵实验”在游戏中可以这样描述:当玩家和其他玩家同诸多机器在同时游戏时,如果这个玩家通过游戏规则中的任何方式都无法分辨游戏中的其他角色哪个是其他玩家,哪个是机器的线程,那么我们可以说这个游戏通过了“游戏中的图灵测试”。一般来说,通过了“游戏中的图灵测试”的游戏是最适合玩家娱乐的。
人工智能在游戏中的应用
人工智能在游戏中的目标主要有五个:一是为玩家提供适合的挑战;二是使玩家处于亢奋状态;三是提供不可预知性结果;四是帮助完成游戏的故事情节;五是创造一个生动的世界。
这个生动的世界可以是类似现实生活中的世界,也可以是与现实世界完全不同的世界。但不管何种世界都要求有一整套能够自圆其说的游戏规则。在游戏制作过程中,实现人工智能的关键主要有:虚拟现实与拟人化、动画效果与机器角色场景感知、机器角色的机器学习和进化、玩家与机器角色之间的平衡性、人工愚蠢技术、确定性人工智能技术与非确定性人工智能技术的互补。
人工智能在游戏中应用的技术非常之多,如:有限状态自动机(Finite State Machines)、模糊逻辑(Fuzzy Logic)、产生式系统(production system)、脚本设计(Scripting)、基于规则的人工智能和系统(Rules-based AI and Systems)、贝叶斯推论(Bayesian Inference)和非确定性贝叶斯网络(Bayesian Networks for Uncertainty Decisions)、人工生命(Artificial life)、决策树(Decision Tree)、专家系统(Expert system)、神经网络(Neural Networks)、遗传算法(Genetic Algorithms)等。
电脑动画
游戏动画
游戏动画专业是依托数字化技术、网络化技术和信息化技术对媒体从形式到内容进行改造和创新的技术,覆盖图形图像、动画、音效、多媒体等技术和艺术设计学科。
网络引擎
网络引擎即为网络搜索引擎,互联网搜索引擎是万维网中的特殊站点,专门用来帮助人们查找存储在其他站点上的信息。搜索引擎有能力告诉你文件或文档存储在何处。
搜索引擎在有能力告诉你文件或文档存储在何处之前,必须先找到它们。为了在现有的数亿网页中找到信息,搜索引擎使用了一种特殊的软件机器人,称之为蜘蛛程序,以此生成在网站上查询到的词语列表。蜘蛛程序建立词语列表的过程被称为爬网。(将互联网的一部分称为网络有些缺点——大量工具以蜘蛛命名就是其一。)为了建立并维护一份有用的词语列表,搜索引擎的蜘蛛程序需要游历大量网页。
场景管理
1.什么是场景物体?什么是游戏场景?
游戏中所有具有空间属性的物体都是场景物体。
所有场景物体构成的集合成为游戏场景。
2.一般情况下哪些内容属于场景物体,哪些不属于场景物体?
场景物体:玩家,NPC,场景建筑,地形,粒子特效,场景中的道具(武器等),还有一些看不到的对象如volume、摄像机等
非场景物体: UI,UI上的道具,玩家(NPC)技能,玩家(NPC)状态,碰撞盒,物体的材质
个人觉得,非场景物体并没有什么严格意义的概念,刨除所有场景物体,其他的都是非场景物体。或者严格来说,他们并不是我们通常认识下的物体,只是单纯的游戏逻辑对象。比如说玩家的状态,他在场景中并没有实体,不过我们完全可以给状态创建一个类对象来表示某个角色的状态。
3.场景管理的意义
a.便于玩家快速的定位场景里面的对象
b.妥善处理巨大场景带来的内存开销问题
c.处理巨大场景带来的渲染效率问题
d.处理大量对象的碰撞检测的效率问题
4.2D游戏需要场景管理么?
我们接触的大部分游戏都有一个虚拟的游戏世界,玩家通过操作来改变这个世界。这个世界复杂一点,可以像各种大型MMO游戏一样(3D),这个世界简单一点,可能像视频中的围棋一样(2D,或者如超级玛丽的那种)。所以无论是哪种游戏,总是有那么一个场景空间(或者说一个游戏世界)去存放游戏对象,这个空间就需要我们去统一的管理。这样,我们才能在游戏进行时方便快速的找到我们需要的对象,再去做进一步的处理。如果2D空间内对象数量庞大的话,也可以采用一定策略进行优化。
所以,2D游戏也一样需要场景管理。
5.2D场景管理与3D场景管理的差别?
面临的问题不同:2D场景相比3D场景,一般来说无论是渲染开销还是内存开销都要小的多。
6.关于非物理碰撞检测的问题与优化方案
问题:对于一个非基于物理引擎的碰撞检测,我们一般需要遍历场景中所有对象的位置并判断二者间距离(假设对象都是球型的),才能检测二者是否发生碰撞。一旦对象数量多起来,CPU根本无法承受。
优化:实际上,我们知道距离很远的两个对象一定时间内是不会发生碰撞的。为了减小碰撞检测的开销,我们可以将场景划分成N*N块,然后将所有的对象规分到不同的块里面,不同块(且不相邻)之间的对象不会发生碰撞,这样就减小了碰撞检测的开销。
注:其实一般的物理引擎的逻辑开销比我们没有优化的也还要复杂的多,因为他可能会有更多更详细的检测逻辑,不过像physX引擎在检测时还会借助GPU来提高效率。
7.四叉树与八叉树
二维空间的管理与对象检测可以使用四叉树进行处理。
三维空间的管理与对象检测可以使用八叉树进行处理。
不过八叉树的相对开销相比四叉树要高不少。
这两个概念其实并没有那么高深,和我们平常学习的数据结构没什么差别,只不过他的每个节点下面有四/八个子树。这样的处理完全是因为这两种结构符合我们逻辑检测的思路。
8.关于碰撞检测的优化思路
其实这与我们处理搜索,排序的思路是类似的,N^2肯定不是最优解,起码我们会想到类似二叉树,二叉堆的的数据结构。如果再去结合我们游戏中空间分布的实际情况,也就不难想到四叉树这样的处理办法。当然,理论上还应该有其他的优化思路,效率如何博主暂时没有深入去研究过。
9.关于视野渲染的优化
与现实世界相似,我们无法看到无线远的东西,或者是无限远的东西几乎是看不清的。所以,游戏世界里面的玩家也类似,每个玩家的视野限制在一个视锥里面。这对于游戏的优化是非常重要的
a.渲染上,因为不在视野内的东西,我们完全就可以不去渲染,即渲染剔除
b.游戏逻辑上,因为玩家的视野有限,过于远的场景数据可以完全不去加载,即场景动态加载
c.在视野范围但是又很远的东西,我们可以给他换一个精度比较低的模型,即LOD
10.入口管理
对于一些房间内(场景比较小)的游戏,玩家的视野只局限在一个房间里面。这时候其实房间外的任何东西都不需要加载与处理(假如与当前游戏逻辑无关)
这样,我们就可以在玩家切换房间(如开门)的时候再去加载其他房间场景,这对于游戏的优化是很有帮助的。
11.游戏天空的实现
天空盒:用一个完整的封闭的空间来包围整个游戏场景,在这个空间表面贴上天空效果的贴图。一般来说非常大,要比实际游戏场大,接近玩家视野的极限。
天空盒组成:
大气颜色层
云层
天体层
远景片
12.LOD
前面提到过,视野远处的东西玩家是看不到细节的,所以也就不需要给其渲染那么复杂的模型(贴图等)。LOD就是基于这个原理根据与相机位置的距离动态切换资源(高精度资源与低精度资源),是游戏中常用的渲染优化方式
13.地形的处理
游戏场景中的地形可以说仅次于天空盒大小的存在了,与天空盒不同,玩家与地形的距离非常近,所以一般来说地形的表现细节应该足够丰富才行。但是问题是如果给所有的地形都赋予足够的精度,就需要占用大量的内存,这是不现实的,所以地形也要有LOD处理,远处的地形不需要太精细的效果。另外,在游戏中的大地形是不存在球形的。其实地形只是一个面片,玩家只在面片的上面进行移动。
地形制作:一般由美术在客户端进行刷,构建完毕后会以高度图的形式存储在地图数据信息里面。
高度图:其实就是一个二维表,记录每个坐标的高度值(Z值)
地形LOD的处理方法: 按照距离大小,视觉贡献度(斜面的贡献度比平面高)来分配不同精度的LOD模型
14.地表纹理处理
由于地形面积过大,正常情况下需要提供大量的贴图来表现不同位置的不同效果。为了节省贴图资源所占用的内存空间,同时还想表示出丰富的地貌效果,就需要用到多层纹理混合技术。只需要几个贴图,按照不同权重的混合就能达到多种不同的效果。
15.水
前面渲染的课简单说到了水的渲染一般是通过UV动画(法线贴图)来实现的,但是更逼真的水还需要考虑到反射与折射,甚至是与玩家
的互动。这就需要进一步添加反射贴图等更深层次的处理。
16.植被
实现方式1:记录每株草的位置、贴图、材质等信息,运行时生成草的模型,将使用同样贴图的草合并为若干组。
实现方式2:记录植被区域,记录区域内植被贴图、材质等信息,设定区域植被的密度、变异因子等信息,运行是生成若干组随机植被。
详情见游戏中的场景管理
游戏引擎设计的技术及详解相关推荐
- MaxCompute 公共云多租户设计的技术要点详解及产品实现特色
公共云大数据平台在多租户的设计和实现方式上有所差异.本文主要介绍在公共云大数据平台的多租实现方案中需要考虑的问题和挑战,重点介绍了MaxCompute在计算和存储多租实现上的特点.期望通过这些介绍来让 ...
- InfoQ趋势报告:架构和设计领域技术演变详解
本文概述了我们对当前"架构和设计"领域的看法,这个领域侧重于基础设施模式.技术框架模式的实现,以及软件架构师必须掌握的设计流程和技能. 关键要点: 我们看到了"演化式架构 ...
- [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 知识图谱技术发展详解(一)
一.万维网现状 1.当前的Web是一种面向人的网络,很多繁琐的过程依旧需要人工的参与. 2.以搜索引擎为例,目前的搜索引擎主要依靠关键字匹配,因此存在如下问题: (1)高匹配.低精度,搜索出来的内容中 ...
- 【干货】PMcaff干货课程学习精彩分享:Apple Watch 技术特性详解
昨天PMcaff给大家推荐了Apple Watch的发布会,好多小伙伴们在后台留言,所以PMcaff小咖今天给大家找来一篇干货,看完感觉还不错,在这里分享给大家. 作为苹果主推的智能穿戴产品,Appl ...
- nmos导通流向_技术参数详解,MOS管知识最全收录!
原标题:技术参数详解,MOS管知识最全收录! MOS管,即金属(Metal)-氧化物(Oxide)-半导体(Semiconductor)场效应晶体管,是一种应用场效应原理工作的半导体器件:和普通双极型 ...
- Android网络开发技术实战详解
<Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...
- GPS北斗卫星主时钟(NTP网络时间服务器)技术参数详解
GPS北斗卫星主时钟(NTP网络时间服务器)技术参数详解 GPS北斗卫星主时钟(NTP网络时间服务器)技术参数详解 主时钟(北斗二代卫星同步时钟,GPS北斗双模时钟服务器,GPS时间同步系统)是我司开 ...
- 计算机三级网络技术考试详解
计算机三级网络技术考试详解 选择题(40) 1 问传输速度 (ITU -T) 2 求交换机带宽 3 系统可用性与停机时间 4 写地 ...
- Java程序员进阶必读,最全微服务架构技术点详解来啦
前言 微服务作为这个互联网时代最火的技术之一,想必大家即使没有学习过也有所了解,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服 ...
最新文章
- 【UE5】虚幻引擎5中的VFX游戏特效制作学习教程
- 计算机社团发展目标,计算机社团工作计划
- R语言XML格式数据导入与处理
- linux 命令行 解密,解密Linux终端命令 学好Linux
- Python 柱状图 横坐标 名字_Python气象绘图教程(四)
- 《精通Spring MVC 4》——1.3 start.Spring.io简介
- 第1章 Spark SQL概述
- 英语老师唱歌软件测试,小学英语教师课堂用语测试题
- 网络直播与营销“合二为一”
- Python智力问答小游戏
- mac下 Github添加SSH keys
- 判断一个对象是否属于某一类
- win10实时防护彻底关掉
- Linux kail环境下安装pyrit 问题详解
- 宝塔win安装提示非服务器系统,宝塔windows面板安装
- 使用nano编辑器进行查找和替换
- videojs实现视频列表 点击播放下个视频
- 简易公交车查询系统c语言,公交线路免费api接口代码
- python深度优先搜索传教士和野人_ai1 带回溯的深度优先策略:解决经典野人传教士过河问题的求解:三个修道士和三个野人过河 - 下载 - 搜珍网...
- 注意力机制基本原理详解及应用
热门文章
- 【第一组】第十二次冲刺例会纪要
- Java知识复习清单
- CentOS7 中查看进程端口号
- 阿伯丁大学计算机科学硕士申请,又双叒有更多硕士专业可以一月入学了 | 阿伯丁大学2021年春季入学专业名单更新(2020年8月更新)...
- 使用Elasticsearch进行高效的中文搜索
- PLSQL连接Oracle11g64位操作步骤
- ca 手机抓包_抓包安卓7以上ca证书安装方法
- sudo报错及在linux上启动jar包时报错java.net.UnknownHostException
- < 渗透测试学习指南 > python编写ARP投毒工具
- 关于地理坐标的精度设置,做测绘的工程师应该懂的基本常识(南方数码CASS11.0.0.6还增加批量转换的方式)