GAMES104:16 游戏引擎的玩法系统:基础AI-学习笔记

AI分为16、17两节课讲,大纲如下:
在这里插入图片描述


一,寻路/导航系统Navigation

  • 基本思路:
    在这里插入图片描述

1.1 Walkable Area

需要让ai知道哪些部分可以通过(包含走路、跳、翻越攀爬、载具可过等不同情况,还要考虑物理碰撞)。

其表达方式有Waypoint Network、Grid、Navigation Mesh、Sparse Voxel Octree(空间八叉树)等。每种方式都尤其优缺点,因此游戏经常使用多种方式结合。

1.1.1 Waypoint Network

早期游戏引擎用的多,通过设置道路关键点(如道路两边)并用算法插值关键点得到路网,寻路时先找到距离当前位置和目标位置最近的路网点,再通过路网连通(就像坐地铁一样),如下图:
在这里插入图片描述
优点是好实现、效率高,缺点是不方便动态更新、总走路中间

1.1.2 Grid

地图网格化,类似光栅化,如下图:
在这里插入图片描述
优点是便于动态更新,缺点是精确度取决于格子大小、存储空间浪费、难以表达层叠结构(比如桥)

1.1.3 Navigation Mesh

现代游戏引擎最普遍的方法,即把地图上所有可通行的区域连起来(用多边形),主要用物理碰撞与预测路线,既可以解决路线僵硬问题,又能应对层叠结构

优点是支持3d、精确、灵活、动态,缺点是生成Navigation Mesh的算法非常复杂,并且只能“寻路”,不能飞机3d空间导航

  • 怎么生成Navigation Mesh呢?

现在基本都是自动生成,用一些开源库如recast,voxelization后去计算可通行区域;然后再通过计算离边缘最近的edge voxel,得到一个类似距离场的东西;再找到每个区域距离边缘最远的中心点,用洪水算法向外扩散,直到覆盖所有区域,在通过进一步处理(比如连通区域变为凸多边形之类,比较复杂),这就是我们的生成的Mesh了

  • Polygon Flag

通过地形标签生成不同区域的mesh
在这里插入图片描述

  • Tile
    那如果地图在动态变化怎么办,比如路障被用户打掉了。可以使用Tile把地图分块,部分地图更新后只需要重新计划该块tile即可

1.1.4 Sparse Voxel Octree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值