1. 基本的路径寻找

从最基本得层次来讲,路径寻找只是让某个游戏角色,从其最初位置移向所需到达的目的地的过程而已。本质上,这一点和第二章中的基本追逐算法的原理相同。具体如:简单追逐追逐方法(最简单的使坐标逐渐相同)和视线追逐方法(使用Breseman方法)。但是,如果游戏环境中有障碍物,那么就需要考虑其他事情了。如下图所示,两种方法产生的路径都可能被障碍物阻截。
   
1.1 随机移动避开障碍物
    此方法适用于障碍物较少的情况,如下图,环境中的树木不是很多,随意移动一下巨人,玩家就能进入巨人的视线。这种方法简单有效,避免了负责路径算法对CPU的消耗。
   

if(玩家在视线内) {
    采用直线路径走向玩家
}
else {
    以随机方向移动
}

1.2 绕行障碍物

绕行障碍物是另一种简单的避开障碍物的方法。当你要在策略游戏或者角色扮演游戏中,找出一条绕过大型障碍物的路径时,比如绕过山区,这种方法相当有效。
    方法说明:· 假设单位透过障碍物看到目的地,但是不能够越过障碍物到达目的地。
                  · 让单位朝着目的地使用直接走过去,当遇到障碍物了,就沿着障碍物的边缘走。
                  · 当障碍物与目的地之间没有障碍物的时候,再朝着障碍物走过去。
   

2. 以面包屑寻找路径

面包屑路径寻找方式可以让计算机控制角色看起来很聪明,因为是玩家在不知不觉间替计算机控制角色建立了路径。每次玩家走一步时,都会毫无所知地再游戏世界中留下看不见的标记或者面包屑。当游戏角色碰到面包屑时,就能凭着面包屑一路走下去。游戏角色会跟着玩家的足迹,直到追上玩家。
    面包屑方法也是计算机控制角色成群移动的有效方式。不必让群体的每个成员,都以费事费力的路径寻找算法找路径,可以直接让成员跟着领头者留下的面包屑走。
    思考:角色智能与否,要看玩家的路径是否智能,如果玩家在转了一个圆圈,再走出去,那么角色会完全复制玩家的路径,这样就不那么智能了。对于成群的单位也是这样,如果单位都是按照领头者的路线走,那么就只有一种路线,太单调了。关键还是要找到合适的使用情况。
    实际上,书中给出例子,也没有完全复制目标单位的路径,而是每次寻找最新的相邻的面包屑路径。这个图太模糊了,不上传了。这样就是在玩家走的路线中,做了一点点优化。

3. 寻着路径走

路径寻找通常仅被认为是从起点行走到所需到达的目的地的问题。然而,很多情况下,在游戏环境中,即使没有最终的目的地,也要让计算机控制的角色以仿真的现实的方式移动。例如,计算机控制的赛车就必须沿着赛车道前进。同样,策略游戏中,也许要让军队在城镇间的道路上巡逻。如下图:
   
     上图中,标示为1的地形元素视为道路,标示为2的地形元素视为道路边界以外的区域。我们不想让巨人在道路上随机移动,这种结果看起来不自然,我们想让让巨人看起来像是沿着道路行走。因此,我们需要分析周围地形,决定巨人的路径。
     核心思路是,每一步尽量沿着上一步的路线走。比如:上一步走的是向左上方,那么对8个方向给出8个权值,左上方的权值为+2,上方和左方的权值都是+1,右下方的权值是-1,其他方向的权值都为0。然后把这八个方向按权值从大到小排序,然后,选取数值最大的,且地形可以走到的位置,作为路径的下一步。最可能的是沿着左上方继续走,最不可能的是原路返回。
 

4. 沿着墙走

和遵循道路走一样,这种方法也不会去算起点和终点之间的路径。沿着墙走更像是探索的技巧。有时候,需要让计算机控制的角色探索环境,以搜寻玩家、武器、燃料、宝物或任何游戏角色可以接触的东西。让计算机控制的角色在环境中随机移动,是游戏开发人员最常用的办法。如下图:
   
      一个简单的方法:左侧移动法。即每次巨人总是尽量向其左边移动,这样就能对环境做出较为完整的探索工作。但是要注意,左侧移动法,并不能保证巨人会进入到游戏环境中的每个房间。
     

5. 航点导航

路径寻找是一项非常耗时,且耗用CPU资源的运算工作。减少这种困扰的方式之一,就是尽可能预先算好路径。航点导航减少这种困扰的做法就是,认真地在游戏环境中置放节点,然后,使用预先计算好的路径,或者是简单的路径寻找方法在节点之间移动。如下图:
   
    注意,图中的每个点,至少都能让另一个节点的视线看见。这样,游戏控制的角色总是能使用简单的视线算法,到达图中的任何地点。下一步,就是规定这些节点之间的关系。
    
      有了这个路径关系,两点之间的最短距离,就可以使用Dijkstra算法或者Floyd等算法实现。

6. 结束
    本章讨论的每种方法都有其优缺点,而且使用范围往往比较局限。下一章将要介绍的A*算法,可适用大部分的路径寻找问题。

转载于:https://www.cnblogs.com/pangxiaodong/archive/2011/05/23/2054116.html

阅读笔记-游戏开发中的人工智能-第6章-基本路径寻找及航点应用相关推荐

  1. 游戏开发中的人工智能(二):追逐和闪躲

    接上文 游戏开发中的人工智能(一):游戏人工智能简介 本文内容:讨论基本的追逐和闪躲技术,以及进级的拦截技术.我们也谈及这些技术在砖块环境和连续环境中的变化. 追逐和闪躲 本章的焦点是追逐和闪躲,这是 ...

  2. 游戏开发中的人工智能(五):以势函数实现移动

    接上文: 游戏开发中的人工智能(四):群聚 本文内容:靠势能移动在游戏 AI 程序中还算相当新颖.这个方法的最优越的地方在于可以同时处理追逐.闪躲.成群结队和避免碰撞等行为.我们专门研究的这个势函数叫 ...

  3. 游戏开发中的人工智能(十三):不确定状态下的决策:贝叶斯技术

    接上文 游戏开发中的人工智能(十二):概率概论 本文内容:贝叶斯技术是概率技术,本章解释如何运用,以便在游戏中做决策并适应游戏. 不确定状态下的决策:贝叶斯技术 本章要介绍贝叶斯推论和贝叶斯网络,教你 ...

  4. 游戏开发中的人工智能(十四):神经网络

    接上文 游戏开发中的人工智能(十三):不确定状态下的决策:贝叶斯技术 本文内容:"神经网络"技术让游戏具有学习和适应的能力.事实上,从决策判断到预测玩家的行为,都可以应用.我们会详 ...

  5. 游戏开发中的人工智能(六):基本路径寻找及航点应用

    接上文:游戏开发中的人工智能(五):以势函数实现移动 本文内容:游戏开发人员使用很多技术在游戏环境中寻找路径.本章要谈几种方法,包括航点应用. 基本路径寻找及航点应用 寻找路径的问题有很多不同类型.没 ...

  6. 游戏开发中的人工智能(十一):规则式 AI

    接上文 游戏开发中的人工智能(十):模糊逻辑 本文内容:技术上而言,有限状态机和模糊逻辑都落在基于规则的方法这个大伞之下.本章将谈这些方法,以及其他变化的方法. 规则式 AI 本章我们要研讨基于规则的 ...

  7. 游戏开发中的人工智能(一):游戏人工智能简介

    本系列文章对<游戏开发中的人工智能>David M.Bourg / Glenn Seemann 一书进行解读. 这本书谈了很多游戏软件 AI 的主题,内容深度适合初涉开发人员.所以,无论你 ...

  8. 游戏开发中的人工智能

    前言 今天非常开心,观看cocos官方直播居然在几千人中中奖,可以买彩票了. 言归正传,所谓的人工智能,也就是大家常说的AI(Artificial Intelligence).一说到AI可能就会让人觉 ...

  9. Unity3D游戏开发中的人工智能AI 简单实例

          今天我想说的是游戏中的人工智能.人工智能这个东西在游戏中是非常重要的,人工智能说简单了就是根据随机的数字让敌人执行一些动作或逻辑,说难了TA需要一个非常复杂的算法,本文我主要说说Unity ...

  10. Unity3D研究院之游戏开发中的人工智能AI

        很久没有写Unity3D相关的东西了,是因为这段时间我深陷一款IOS的软件开发中.不过以后我还是会回归Unity3D游戏开发的.什么语言都在用,生活与工作都挺给力的嚯嚯.今天还是打开了久违的U ...

最新文章

  1. 模板-1-模板类的特化
  2. 什么是分布式事务?2PC、XA、3PC、TCC
  3. 【iOS开发】修改图片的大小分辨率 使用mac
  4. 为什么是GCN(转)
  5. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA...
  6. 怎样做好软件测试经理
  7. Python中国象棋源代码及素材
  8. 解决windows 10电脑插入耳机无声音的问题
  9. 浩然战法--黄金柱选股
  10. 电商api接口:淘宝以图搜图
  11. python3 利用ffmpeg把音频转换为16khz的wav文件
  12. python智能图片识别系统(图片切割、图片识别、区别标识)
  13. BUUCTF--[GWCTF 2019]枯燥的抽奖
  14. 统计 DHCP 服务器 ip 分配情况的脚本
  15. 区块链革命:我命由我不由天,是魔是仙, 我自己说了算
  16. rabbitmq-plugins enable rabbitmq_web_stomp
  17. chatgpt赋能python:Python程序员必知的Geany配置技巧
  18. 互联网金融之数据库表字段词根表
  19. STM32离线下载器,DAPLink仿真器,串口调试工具
  20. 联创自助打印驱动程序 v1.0官方版

热门文章

  1. 如何恢复出厂设置并还原Apple Silicon M1 Mac?
  2. 如何使用Tipard 3D Converter转换2D视频格式
  3. Mysql学习第一课-mysql的定义及sql语句
  4. 变量unset与null的区别
  5. Windows 2008 限制IP连接方法
  6. win2003 ent 64 + mssql ent 64
  7. select .. into输出单/多行
  8. 理解Java的几张图
  9. 浅谈Spark几种不同的任务提交相关脚本(以Spark 1.5.0为例)
  10. building for iOS simulator, but linking in object file built for tvOS, for architecture x86_64