本文作者:翰者学堂_乐进老师

决定如何跟敌人作战,(“嘿,他们在那儿,那么只要移动这个,还有这个。。。。”)但是计算机人工智能却没有数亿年的生物进化的优势,解决这个问题还需要经过一个相对困难的时期。此外人工智能体必须“聪明地”接近敌人,而不是像我们在有些游戏中看到的那样,随意地向敌人的位置慢慢移动。

    这就是所谓战略部署的方法,这些方法有助于那些刚起步的设计回合制(turn-based)或即时战略(real time )战略游戏的开发,建立战略级别上表现良好的人工智能,以影响力地图(influence map)为基础的方法,然后增加各种技巧增强人工智能,做出更好的战略移动决定

 

影响力地图

他是基于一个棋盘格子的数据结构,里面是数值用于表示可以移动的权重,格子可以感应战场上的敌人和障碍物,这些都影响权重值,ai 可以根据棋盘格子上的位置读取周围的情况从而实现战略移动决定。如上图权重表示了敌对危险系数,友军影响力为-5,敌军为5,每远离一个格子就将每个个体影响力折半一次。

 Ue4 系统里提供了像影响力地图一样的系统,他可以根据地形,和周围敌人做出数据采集,

权重判断的系统,这个系统就是eqs,那么我们来看看eqs 是什么样的

 

浏览ue4中的eqs

 

1.新建一个ue4 蓝图项目基于Third Person

 

2.打开ThirdPesonExampleMap,在Modes面板里点击↓

 

搜索nav,选中↓

 

拖入一个navmesh 到场景中,修改navmesh大小,在World outliner选中↓

navMeshBoundsVolurNavMeshBoundsVolume,在Details面板下Transform修改大小,按键盘p建可以预览navmesh大小。

3.建立一个charater 蓝图类,命名为TestEQS.双击打开蓝图,添加一个↓

控件,为其赋予Sk_Mannequin ↓

在资源浏览栏里,右键鼠标,选择ai,在弹出的下拉菜单里选择EnvironmentQuery,新建一个eqs,命名为FindNextWaypoint ↓

双击打开FindNextWaypoint,在root 根节点上右键选中↓

加入SimpleGrid:generate around querier.

4. 现在去场景编辑器里找到我们刚才新建TestEqs Charater,选中,在详细Detalis面板里搜索eqs,在query Template 里选择我们建立的eqs FindNextWaypoint, 此时可以发现场景里多了些蓝色的小球。

5.双击打开FindNextWaypoint eqs,点击SimpleGrid:generate around Querier,修改其属性如下 ↓

我们可以调节大小(GridhafSize)可以调节采集数据的间距(Space Between),在SimpleGride:generate around Querier 上单击鼠标右键addTest,在弹出的菜单下选中 ↓

为其添加pathExist:from Querier节点如下所示,此时点击TestEqs charater 应该可以看到采样点和数据 ↓

6. 再次回到SimpleGird:generate around Querier 节点,右键弹出菜单选择AddTest,然后再选择Trace,添加Trace:to Querier on visibility节点 ↓

7. 选中pathExits:from Querier  修改Test Purpose 为Score Only ↓

8. 选中Trace: to Querier on Visibilty 修改Test Purpose 为 Score Only

预览如下: 

由于篇幅有限,今天先给大家分享第一部分内容,工程链接在明天文章内分享给大家~

 

获取更多技术分享,大牛实战经验,工程源文件

欢迎关注公众号:虚幻学堂