贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI

作为一个游戏玩家,有一天你发现了游戏中的bug:

竟然可以把怪拉到墙角卡住!

于是整个游戏成了白送局,一刀999,本来要1个小时的关卡5分钟就打通了,很爽对吗?

爽完之后呢?是不是有无可言状的空虚和罪恶感?一个好游戏就这么废掉了。

游戏开发者本意是想让玩家历经磨难、欲罢不能,但愚蠢的游戏bug毁了一切。

最近,一家来自加拿大的初创游戏工作室:A Bit Awake,开源了新模型——Enemy AI,可以让游戏中的敌人自动追踪玩家路径,并主动避开墙角、岩石等环境障碍,提升整个游戏的挑战和可玩性。

如果你在做游戏开发,那么这个项目可能会对你有很大的帮助。

从0开始,先写一个卡墙角的蠢AI

首先,我们先在Godot引擎中建立一个使用KinematicBody2D碰撞节点的敌对单位,并且使用State Machine来设置它的状态。

写出最简单的、只会向玩家直线移动的敌人追踪状态:

玩家逃跑路径的设置与追踪

为了提高追踪算法的表现,先要给玩家角色的移动线路上设置标记。

这样一来,如果敌人无法看到玩家,就会自动搜寻是否有玩家留下的移动轨迹并向这个轨迹移动,就像警犬一样。

接下来要确保痕迹信息真实有效地留在路径上,这里用到了一个带计时器的Node2D场景。我们将轨迹产生间隔设为0.1秒。

调试时,如果你想让路径轨迹可见,只需要加一个ColorRect节点。

现在你的敌人已经激发出内心嗜血的本能,对玩家穷追不舍了!

物理障碍的设置

接下来我们还需要让敌对AI清楚追踪路径上有哪些要避开的障碍物。

首先要给敌对单位添加一个RayCast2D节点,同时还要设置环境中的物理层,让AI知道它与痕迹点之间(Ray)有哪些障碍。

在Godot中选出Project栏,在Project Settings中找到LayerNames选项,根据你的游戏选择2D或3DPhysics。

命名不同的的物理层后,要将这些物理层应用到不同的目标(比如岩石、墙、关闭的门等)之上,在Property Inspector栏中的Collision选项中将目标设置为某一定义好的物理层。

将目标的物理层设置好以后,我们还要更新敌人的RayCast2D节点,使它能够判断眼前的障碍物能否通过。

最后一步,将以上的步骤同步在敌人单位的追踪状态算法中:

好了,现在你的敌对AI如果在追踪路上遇到了障碍物丢失痕迹目标,它会逐个检查玩家的路径痕迹,并试图建立与痕迹点的连线,一旦成功就会马上开始追踪。

至此整个算法完成,实现简单,但对游戏质量有大的提升,希望能够帮到做游戏开发的你。

代码开源链接:

https://abitawake.com/news/articles/enemy-ai-chasing-a-player-without-navigation2d-or-a-star-pathfinding

作者系网易新闻·网易号“各有态度”签约作者

—  —

2020年是个天文大年,4月8日有全年最大的超级月亮,6月有横跨中国的日环食,8月有英仙座流星雨,10月还有两年一次的火星冲日,12月有双子座流星雨。

我们邀请美国国家地理极致中国探享家刘允和天文爱好者们,组建了一个天文航天亲子社群,群里除了交流天文航天知识,还会组织一系列讲座、线下观星、航天探访活动。

如果你家有小朋友,也热爱天文航天,一起来玩啊:

天文航天亲子社群招募中,一起来玩吧~

关注AI发展现状,抓住行业发展机遇

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

能迂回,会绕路的开源游戏AI:解决怪物撞墙卡死角相关推荐

  1. 互联网资讯:高德打车推“出游无忧”服务,乘客遇恶意绕路等七类情况可获额外补偿

    行业热点 1.高德打车推"出游无忧"服务,乘客遇恶意绕路等七类情况可获额外补偿: 2.抖音内测"摇一摇"功能 可匹配同城好友: 3.Teambition网盘将于 ...

  2. 手把手搭建游戏AI—如何使用深度学习搞定《流放之路》

    翻译 | 彭硕,姜沂,reason_W 编校 | reason_W DeepMind开源<星际2>AI平台,OpenAI人工智能系统打败Dota2游戏顶级玩家......越来越多的科技巨头 ...

  3. linux开源游戏_5个适用于Linux的开源益智游戏

    linux开源游戏 传统上,游戏是Linux的弱点之一. 近年来,由于Steam,GOG和其他将商业游戏引入多个操作系统的努力,这种情况有所改变,但是这些游戏通常不是开源的. 当然,可以在开源操作系统 ...

  4. 转帖 开源游戏服务器调研

    汇总贴 2013年优秀的开源引擎与开源游戏项目 http://mobile.51cto.com/aengine-431122.htm http://www.oschina.net/search?sco ...

  5. 两大开源游戏引擎Cocos2d-x及OGEngine对比分析

    在近期的全球移动开发者大会上,触控发布了Cocos 3D引擎:而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台. Cocos2d-x和OGEngine都是当前比较受开发 ...

  6. 历数2013年优秀的开源游戏引擎与开源游戏项目

    2013年是移动游戏爆发的一年,也是开源游戏爆发的一年!在这里,我们历数一下2013年都有哪些优秀的开源游戏诞生,还有哪些优秀的开源游戏技术解决方案诞生! 开源跨平台2D客户端引擎 Cocos2d-x ...

  7. 重启服务器之home下文件全没,小白宝典——树莓派实用工具分享(大神绕路)

    原标题:小白宝典--树莓派实用工具分享(大神绕路) 工欲善其事,必先利其器. 很多人的树莓派是不是安装好系统之后,就闲置起来了? 其实树莓派就像是我们平常所用的PC一样,除了基础的硬件之外,真正能够使 ...

  8. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  9. 五大开源游戏引擎介绍

    本文总结分享了五个开源游戏引擎.对游戏编程初哥来说,选择一个好的游戏引擎是一个很头疼的事.本文介绍的五个游戏引擎不仅被证明是可靠的,而且全部开放源码. AD:   对游戏编程初哥来说,选择一个好的游戏 ...

最新文章

  1. Ajax系列之三:UpdatePanel
  2. map端join和reduce端join的区别
  3. python100以内自然数之和_python教程:利用while求100内的整数和
  4. java多态是怎样产生的,java 多态产生的疑问
  5. sdibt 1244类似于拓扑排序
  6. 电商网站商品图片放大镜实现
  7. 三等分任意角可能吗?
  8. 私人智库呼吁瑞士国家银行开发瑞士法郎代币,拥抱DLT技术
  9. python入门指南by许半仙百度云-《江火欲燃山》《这题超纲了》《Python入门指南》...
  10. 【Python】cmd指令安装python第三方库的几种方法
  11. 浅析GIS行业地图绘制基本要求
  12. RGB和YUV颜色对比,使用ffmpeg颜色处理,视频混合,透明度处理
  13. 微信公众号文章怎么加入文件下载
  14. 如何查看网页操作中调用的js方法
  15. 情人节程序员用HTML网页表白【春娇-志明结婚邀请函】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  16. 总结 : 十分钟快速理解Java容器
  17. 想要显年轻?5个习惯只要你坚持,会看到不一样
  18. 红米note2为什么用4g时显示无服务器,看不起4G手机?红米Note9 4G版半天使用体验:感觉5G不香了...
  19. 猿创征文|数据开发也能双轮驱动?
  20. 学习python的目的

热门文章

  1. Shell编程(week4_day1)--技术流ken
  2. Djando 的 cmd命令
  3. 20181023-2 贡献分配
  4. [转]使用QT开发GoogleMap瓦片显示和下载工具
  5. RHCE 学习笔记(20) ACL
  6. c的开始,求最大数。
  7. Android面试题大集合
  8. oracle client中对 TNSNAMES.ORA的研究
  9. 用“ul+li”及css制作韩国风格菜单
  10. iOS 11开发教程(十五)iOS11应用视图的位置和大小