欢迎来到AI与游戏,《盗贼之海》系列的第三篇。在前两篇,我分析了Rare公司是如何平衡这款海盗题材游戏的AI系统在不同服务器的游戏体验,另外骷髅和鲨鱼AI是如何促使玩家无论在陆地还是水中都保持警惕。在系列的倒数第二篇,我们来看看《盗贼之海》中玩家面临的三个最大威胁:巨齿鲨、海怪和骷髅船。

我们至今看到的AI都是围绕特定的设计元素而构建的。猪、蛇和鸡给藏宝的岛屿增加了生气,骷髅成为了你寻宝路上的障碍,而鲨鱼是为了不让你在水中闲得太久。虽然其他玩家小队也是你航海途中的威胁之一,但是Rare想要增加一些更具有震慑力的威胁,不管多牢固的大帆船也能被摧毁。

在游戏刚发行之时,海怪会在开放世界中捕猎船只,玩家可能会不幸成为它的猎物。饥饿深渊DLC引入了巨齿鲨,而诅咒之帆DLC加入了幽灵船——由一群骷髅掌舵的大型帆船。它们都有的特定激活条件,是游戏世界中大型海战事件的主角。海怪总是出没在公海上,随时准备攻击船只,而巨齿鲨最初需要完成梅里克的任务线才能激活,并且只在Devil’s Ridge岛的南部活动。同样,在诅咒之帆加入的骷髅船最初也只在3个地区活动——分别是Smuggler’s Bay、Sharkbait Cove和Marauder’s Arch的附近海域。然而,在这些DLC发行之后,巨齿鲨和骷髅船的活动范围逐渐扩大,以更灵活的方式遨游在公海中,伺机攻击玩家,跟海怪AI的运行方式更像了。

2018年的最后一个DLC雾锁宝藏,巨齿鲨有了多种个性、骷髅船分为了两种大小规模以及海怪攻击模式的调整。开发人员添加新特色、重新平衡现有内容为的就是让玩家时刻保持警惕。但这些变化也带来了一些新的问题,这些系统可以彼此交互吗?你可以通过攻击骷髅船来中断巨齿鲨的攻势吗?海怪或者巨齿鲨也会攻击骷髅船吗?

开发团队曾经担心过一个小队可能会同时遇上多种危险。然而,在经历了内部测试之后,团队的想法很快就发生了改变。你可以在最近的更新中看到开发者做了更多努力,从多方面确保这些交互的实际效果好玩有趣,同时还要将性能开销保持在最低限度,也就是我们在第一篇所说的那样。

在拜访Rare工作室期间,我找了个机会跟三位开发者坐下来聊了聊,他们的工作对新特色的发行起着至关重要的作用。巨齿鲨主要是由Andy Blastable负责,Chantelle Porritt和Tristan Bell分别负责海怪以及骷髅船的持续的开发、调整。我在上一篇与Rob和Sarah的视频访谈中就已经发现了这些系统的内部命名:海怪Kraken是Karen,巨齿鲨Megalodon是Megan,而骷髅船skeleton ships是Skevin(?)。

嘿,我知道你是来看敌对角色的AI分析,所以开始吧。让我们逐个分析,这些AI运作的基础是什么、自发行以来做过哪些调整和更新、它们是如何与第一篇中讲过的的AI管理系统相适应的、以及让骷髅到处跑并控制幽灵船所需的有趣技巧。

巨齿鲨

让我们先从最容易解释的开始:巨齿鲨Megan,在开发期间人们也称她为“小鲨鱼”。这是一个代号,目的是为了不让数据挖掘者发现开发人员的意图,因为他们总是在窥探下一次的更新内容。可以说,她是最容易解释的AI角色了,因为大部分内容我在第二篇就讲过了。巨齿鲨就是鲨鱼的加大号版本,只是她现在会攻击船而不仅是玩家。

然而,开发团队并不只是单纯地把鲨鱼变大,他们重新平衡了巨齿鲨的行为,以便更好地适应海战的节奏。为了让她的行为频率达到一个平衡的状态,他们用了计时器。这些行为包括跳出水面游到目标船只旁边、游到船下面、当然还有攻击和从船体上撕咬下一大块。虽然对绝大部分人来说她是一个挑战性十足的击杀目标,但开发人员仍然需要确保玩家能够拿下她,不会觉得游戏体验失衡。于是,他们不仅在视觉效果上做了调整——鱼鳍,也就巨齿鲨的顶部在海平面看得更加清楚了——还沿用了之前我们在第二篇中讨论过鲨鱼导航系统,确保Megan的位置在大炮射程之内。

在冷却时间结束后Megan会立即出现,可能会攻击船员,任何在还在水中的船员都能亲身领教她的愤怒。然而,尽管如此,其实有不小概率她只是跳出来捣乱罢了。自饥饿深渊发行以来,游戏后续的更新让巨齿鲨有了更多样化的外形和行为,还有不同的皮肤。她可能是以被动形态出现的,只会在被激怒时发动攻击。

海怪

接下来,我们来谈下游戏发行之初时就有的boss,海怪Karen!海怪会定期选择一艘船攻击,此时周围的海会变成黑色,几只触手从海底升上来。每次海怪出现时,触手会包围船只——是的只有触手,因此有很多玩家怀疑海怪Karen实际上就没有主体。有些触手是真的会攻击玩家和船,有些只是花瓶触手,为的是把画面弄得更加壮观。

海怪这个角色是非常独特的,她是唯一一个没有用虚幻引擎行为树构建的AI角色。每只触手都有属于自己的AI组件,或者是攻击玩家,或者是攻击船,又或者是屹立于海上什么都不做。它们从Overlord系统接受指令,系统命令哪些触手需要主动出击,并选择有效的目标。Overlord在一定程度上是作为一个有限状态机(finite state machine,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型,游戏邦注)构建的,它的任务是关注攻击之间的时间间隔(无论攻击对象是船还是玩家)以及攻击方式。

跟Megan类似,Karen的触手包围船只是刻意设计的,为的是确保它在炮弹的射程范围之内,玩家可以打败它。此外,被攻击团队的每个玩家都会有对应的冷却计时器。当玩家被某个触手攻击后,冷却计时器就会重置。你会得到喘息的机会,要么赶紧回血,要么再次开始攻击。另外更关键的是,攻击会被分摊到其他船员和你的船只上。因此,一点合作+运气你就能把海怪送回老家。

每次Karen攻击服务器上的一艘船时,她都会等待一段时间再发动又一次攻击。所以在这期间全体船员都有机会处理自己的事。手游账号转让平台虽然具体的间隔时长还是个秘密,但与巨齿鲨一样,海怪攻击的冷却时间在游戏开发的第一年中经过了多次调整。另外,我了解到了一件有趣的事:Karen不会歧视任何人,她乐于攻击任何在海上的船员,甚至是刚才她已经攻击过的。虽然你可能暂时是安全的,但最好尽快把所有的战利品都扔到最近的据点。

骷髅船

最后一个但同样重要的——骷髅船。随着新DLC雾锁宝藏的发行,骷髅船现在能在开放海域航行了,如果有玩家靠近他们,他们就会立即发起攻击。每艘船上都有独立的AI骷髅船员,实时AI行为再加上一些烟雾弹式设计,既能简化开发人员的工作,又能达到预期的效果。事实上,骷髅船是游戏中最复杂的一组AI系统,从最初的概念到最后成品耗费了好几个月的时间。

这些船只依赖于它们自己独特的航行和转向机制,而虚幻4引擎没有内置的水上导航系统,这就跟鲨鱼AI的问题一样。因此,每艘骷髅船都有自己的传感器合集,不仅是用于探测附近的障碍物,还能计算出它和附近的船(无论是人类还是AI控制的)几秒钟后的移动位置。这有助于预测它与附近岛屿、礁石甚至其它船只的碰撞,并让掌舵AI相应地改变方向。当然,如果它是刻意想撞你的话那就另当别论了。这个设计方式也适用于从海洋里升起的船只,这样它们就不会落在另一艘船上。实际的运动速度要考虑风向等因素计算得出并做相应的调整。

现在,思考一下幽灵船的构造,它的甲板上有许多骷髅,每个骷髅都依赖于的他们独特的AI框架,正如我们在第二篇中详述的那样,骷髅与玩家共享输入接口,玩家能做的事他们也能做。然而,还是有一些限制存在的。他们可以部署大炮、用装备栏中的木板修理船体,但他们不能舀水——这就让玩家们想出了各种有意思的对策。开发人员确实用了一些蒙蔽人眼的技巧制造出骷髅船员控制帆船的效果。但船锚和船帆都不是骷髅控制的,是船本身调整的。我们已经解释了所有的导航系统,你们也可以推测出游戏不需要经由骷髅来控制航行路线。尽管如此,在船长没有到位的情况下船是无法行驶的。所以,虽然有船长掌舵才能扬帆起航,但实际上船本身就可以指挥一切。

所以,如果你想展示一下海盗的职业能力,可以去尝试分散船长的注意力,或者直接杀死船长,这都会迫使骷髅船停下来,而且其他骷髅都无法接手掌舵。记住这一点,下次你在海上看到他们的时候就有胜算了!

然而,不管这一切有多酷,骷髅船AI真正的成功之处是大多数玩家都不会留心注意的:骷髅是真的在甲板上、船体内都在活动。他们能够找到船体破洞里修理,也能够移动到到大炮后边发射它们。我知道对于大多数家来说,这听起来似乎并不是什么具有突破性的东西,但从AI的角度来看,这确实是个大事,是我在玩《盗贼之海》时的一个真正意外惊喜。让我来解释一下。

就如我们在第二篇中所分析的那样:一般我们会用一个叫作导航网格的系统让角色在三维空间内行走,游戏岛上所有的骷髅都是用这个系统。然而,导航网格或者是提前构建好的,或者是集成到关卡之中,又或者是像我最近研究的《地平线:零之曙光》那样,在运行时根据岩石或在导航网格表面移动的其他小物体的变化来计算。是的,导航网格可以适应在表面上移动的物体和角色的变化,但是导航网格本身并没有移动。如果这个二维表面也在移动,那就不仅要重新计算导航网格,还要重新规划所有站在这上面的角色的路径,哪怕只是移动一点点。这无疑会消耗很多CPU和内存资源,你很难想到适合的解决方案。但是在《盗贼之海》中,船体和甲板的表面并不只是随着海浪的移动而移动,船本身也是移动的!一开始时我以为这是假的:骷髅只是简单地从船上的一个点移动到另一个点,但是如果你仔细观察帆船上骷髅的移动方式,你会发现它们是按照自己的需求地四处奔走,从海洋物理学的角度来说,它们一直都是站在一艘移动的船上。

最大的秘密在于船只的导航网格其实是静止的,它是覆盖在海底的,船上的骷髅其实还是跟岛上的一样,在导航网格上移动。也就是说导航网格是固定的,不会跟随船只移动。同时,海底导航网格上的坐标分别被传送到甲板以及船体上,这个过程必须考虑船目前的方向。也就是说,导航路径需要跟随船只的实时转向而变化。面对这个非常复杂的问题,开发团队给出了一个颇具创造性的解决方案,虽然不算完美,但它确实很好地实现了团队的目标!

总结

虽然其他其他玩家是你航海途中的真正威胁,但是这些AI角色也是不可忽视的狠角色。这三篇文章中我们探讨了《盗贼之海》游戏体验背后的所有AI系统,它们为你提供任务、在岛屿和海上生成不同个性的AI角色(友善和非友善)、平衡不同服务器上的玩家体验。但我还不打算在此画上句号。《盗贼之海》这个游戏需要Rare全体开发成员的大量投入,无论是原画师、动画师、声效设计还是程序员都是如此,事实证明要驾驭类似规模的项目是非常具有挑战性的。

在系列的最后一篇,我们会谈到贯穿《盗贼之海》整个开发过程的测试、部署系统,以及它是如何简化开发团队的工作。我将采访项目的两位领导主力Andy Bastable和Rob Masella——他们从代码库入手,将《盗贼之海》引向新的未来。为了预防玩家在游戏过程中AI或者其它游戏系统出现bugs,测试系统起到了什么样的作用?以及游戏是如何做到快速部署的?

建立海盗的天堂:盗贼之海的AI设定(三):巨齿鲨、海怪和骷髅船的AI运行相关推荐

  1. 建立海盗的天堂:盗贼之海的AI(一)

    如果你在网站或YouTube上关注过这个系列,你就知道我平常研究的是商业电子游戏中人工智能(AI)的构建,但我通常会在游戏发行后很久才开始.我之前从未有这样的机会,能够这么直接.坦诚地与开发工作室谈论 ...

  2. 「AI激荡三十年」中的哈工大与王海峰:中国AI如何从贫瘠的孤岛,走向世界?...

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 中国AI发展的三十年,从一个独立而贫瘠的孤岛,到如今的学术.应用百花齐放. 而这样的历史进程.如此迅猛的发展,中国的AI是如何做到的呢? 近 ...

  3. 海云数据首发图易 AI 能力服务平台新品,图易 6 塑造 AI 能力新物种

    12 月 8 日,「新能力,新服务,新共享--海云数据图易 6 暨 AI 能力服务平台新品发布会」于北京奥雅会展中心成功举办,发布推动大数据.人工智能行业落地全新产品--图易 6 和 AI 能力服务平 ...

  4. 算法战争:美国国家AI安全委员会要建立AI大学,「数字服务学院」为政府培养AI人才...

    恰逢各国在AI领域的争夺,为维持美国的AI霸权,7月22日,美国国家AI安全委员会(NSCAI)发布了35条建议,其中包括创建一所经认证的大学来培训AI人才,以及在算法战争时代加快五角大楼在AI方面的 ...

  5. 山海伏妖录java_山海伏妖录攻略大全 剧情结局加点妖兽大全

    山海伏妖录是一款非常经典的ARPG游戏,其中有许多的剧情,结局,妖兽以及加点方案.Remilia为大家带来山海伏妖录攻略大全,各种攻略都能在这里查到,助您畅玩山海伏妖录! 山海伏妖录人物介绍 配角介绍 ...

  6. 报告称海归国内就业遇阻力 去年近三成海归实际年薪不足10万

    [TechWeb]4月21日消息,根据UniCareer发布的<2019海归就业力调查报告>显示,海归人才在国内就业遇到一定阻力:近70%的留学生归国后遇到了文化理念.落户就学.政策限制等 ...

  7. 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级

    11月1日,百度大脑作为2018百度世界大会的第一弹登场. 近期国家层面也高度重视人工智能的发展现状和趋势,认为加快发展新一代人工智能是事关我国能否抓住新一轮科技革命和产业变革机遇的战略问题.人工智能 ...

  8. 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级

    https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/83619099 11月1日,百度大脑作为2018百度世界大会的第一弹登场. 近期国家层 ...

  9. 海思芯片对比选型_海思芯片的选型及特征参考说明大全

    华为 海思半导体(Hisilicon) 监控设备 hi3516型号-特征 华为 海思半导体(Hisilicon) 监控设备 Hi3516EV100&nBSP; 主流2M智能IP摄像头SoC 华 ...

最新文章

  1. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
  2. python编程 语言-python程序设计语言
  3. TinyMCE的使用
  4. asp.net cache
  5. vue 对象里面放数组刷新问题_Vue 数组和对象更新,但是页面没有刷新的解决方式...
  6. 谈谈NullableT的类型转换问题
  7. struts、hibernate、spring、 mybatis、 spring boot 等面试题汇总
  8. 面试心得与总结——BAT、网易、蘑菇街
  9. Java设计模式笔记(6)观察者模式
  10. 浅谈飞鸽传书实现原理
  11. cs224 - Lecture2: Word Vectors and Word Senses
  12. 程序媛记一次在线创建索引被kill案例及应对措施
  13. 利用Pattern和Mather来禁止特殊字符的输入
  14. for myself
  15. 3.7 TextRNN—TextRCNN—TextAttentionRNN—HAN—FastText—代码
  16. 单号自动识别查询 支持一键复制导出
  17. Ubuntu 机箱前置耳机没声音的问题(彻底解决)
  18. 八、Kubernetes 网络和负载均衡
  19. 甲骨文官网下载jdk历史版本
  20. SQL员工基本工资表题目及答案

热门文章

  1. mysql查找字符串最后位置_mysql查找字符串出现位置
  2. 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘
  3. 二值化图像去除小黑点_python与图像工程(2020.10.11)
  4. 打包python程序
  5. python的进程模块
  6. 机器学习:集成学习(ensemble),bootstrap,Bagging,随机森林,Boosting
  7. 机器学习:结点的实现,决策树代码实现(二)
  8. 螺旋矩阵O(1)根据坐标求值
  9. basepath的作用 (转)
  10. 设置一段文字显示不同的颜色及大小等属性