RoN支持者开发日志(50——2023/03/31

摘要:重做警局/AI
写在前面的话
该篇内容来源于VOID向玩家群体所发送的邮件与Steam的公告。
该翻译旨在让更多的人了解与理解RoN游戏以及官方开发组。
如有错误,敬请指出
注:本篇部分表达经过润色与本土化,具体意思请以英文原文为准


2023.03.31 Ready Or Not 支持者开发日志 卷50
内容:重做警局/AI
来自 VOID Interactive
绪言
嘿,老哥们!
这是我们两周一次开发者日志的第50卷!为纪念这里程碑时刻,我们这次的日志将是一卷加长卷。上半篇章我们将来看看重做后的警局(Lobby),而下半篇章则用较长的篇幅来介绍我们RoN的AI系统。
我们先来看看警局重做的咋样了,警局是几乎所有玩家第一个进入的场景,警局的整体的氛围与其破败的样子,隐射了Los Suenos(游戏世界)的背景,作为给玩家留下游戏第一印象的场景,其塑造十分重要。
明显后改的房间,破败的建筑,都与高科技的现代警用装备强烈反差,向玩家明示着游戏世界的模样。
重做警局
蛮多老地图都已经被翻新过了,而大本营——警局总不能还是现在这鸟样吧。在Adam(22年12月)更新中,警局就已经改过一版细节了,是时候给你们展示一下我们后续对警局的改动了。


往后,警局会有更多的边边角角可供玩家探索,甚至还藏一个复活节彩蛋。大部分就像现在的帽子、咖啡机一样,而有一些甚至会给你、swat,甚至整个游戏体验带来变化。


Ali的RoN AI小课堂
应你们的请求,参与Ready or Not AI开发较多的Ali,给我们写了一篇关于RoN中AI,如何依照各种态势决策并执行的文章。
在RoN中,我们使用的AI系统是基于效用的AI系统(Utility-Based AI System)。该系统是一种决策模型。
PS:常见的AI决策系统有:决策方法:有限状态机(Finite-State Machines),分层状态机(Hierarchical Finite-State Machines),行为树(Behavior Trees),效用系统(Utility Systems),目标导向型行动计划(Goal-Oriented Action Planners),分层任务网络(Hierarchical Task Networks)[1]
效用AI系统是通过在计算机中利用数值、公式以及函数曲线对人类行为建立数学建模。在这数学模型中试图模拟的“人”被称为智能体,更通俗一点叫“人工智能”。在不同的环境中,智能体都有其决策列表(或称行为列表)。每一个决策帧都将从行为列表中选择一个行为来执行。这就人工智能持续决策的核心。
对于每个行为,其都有对应的多个决策因子,从数学层面上正是这些组成了决策模型,并最终得出该行为的得分。每个行为都会计算其得分,并将其聚合(通过某种评分方式)为最终得分,选择评分最高的行为作为AI决策行为。(PS:该方式可以简化地认为数值化参数并加权计算最优解,AI决策的核心便是依照决策模型,选择出模型认为的最优解)所得出的AI决策行为将作为AI的行动行为(利用行为执行系统进行执行),其决策也具有一定的有效时长,通过这种方式使得AI决策实施更具一贯性,而非摇摆不定、反复横跳。同时,我们还采用 行为中断系统(Commit Interrupts),其包含一系列行为,每个决策帧都将评估这些行为,若决策执行,则可以打断当前的行为。(PS:此处指的应该是无视决策有效时长,立刻中断。)这种方式能让我们更灵活地管控AI。
得分只是基于四种基本运算——加减乘除所得出的结果。其相当简单,只是在计分器中进行四则运算。同时,模型师也能通过调整分数计算来影响决策模型。
比方说,决策因子——“健康”。在不同的情形下,我们设计对应的函数对其进行评分,最终输出一个数值。对于“健康”,最简单的就是用 当前值/最大值 得到介于0.0-1.0的一个值(或称分数),如果需要的话也可以对其进行加权计算,来进一步调整AI的决策。你可以想象其他决策因子会有比这更复杂的评分函数。评分函数的得分还将被响应曲线进一步所映射,并作为最终的决策分数。默认的都是线性函数,但你也可以选择其他的缓冲函数,如指数函数、正弦函数(甚至你可以用自定义函数,我们将提供相对简单的方式来让你使用自定义函数)。
0.9的健康度(依照函数变换后)可能有不同的得分导向(好或坏)。正向得分的比如无需找掩体,可以采取一些更激进的行为。假如说你希望决策偏向满血,则是负向得分,会促使智能体找掩体,并自己回血(当然,RoN里AI不会回血,只是举个例子,但能充分说明即使数值相同,采用不同函数也可以有不同的决策导向)。


试想一下,决策模型涵盖数百个决策因子,通过调整其对应函数可以使得嫌犯/平民具有不同的性格特征,有些人更倾向于负隅抵抗,而有些人更倾向于当老六,甚至有些你行动慢了他就自杀。


此外,我们系统中还有个不算啥创新,但确实其他效用AI系统中都没见过的设计。阈值门系统。他作为决策因子的辅助设计而存在。阈值门和决策因子类似,但输出并非浮点数,而是布尔类型的是或否,开放或关闭。其目的是控制决策时是否考虑某种行为。只有阈值都满足时,才会去考虑这个行为。其中一种用法就是实现冷却机制,用常规的决策因子和函数难以实现这种二进制(两状态)的判断。即冷却时间是否结束?这种冷却判断需要在考虑决策行为之前执行。在没有这种设计之前,有些时候AI会在没有外界刺激的情况下就自己投降,或者干一些我们不希望的事,但通过调试其分数权重,又确实符合函数。阈值门让我们多了一种调控AI的方式,(能够限制AI的行为边界)让他们不至于干一些离谱事,便于游戏设计师设计游戏。

通过数学模型与公式来调整输出结果(利用权重、计分方式和响应函数),能让不同AI具有各种不同的特性,从而影响玩家的游戏体验,而这种特性难以通过手动编程来实现。我们先前的AI基本就是一个大型的有限状态机,只能通过硬编码的方式来进行调整。但如果要更进一步,实现更好的AI系统,让设计师可以在编辑器中快速地条恒AI行为,而无需程序介入,那就需要将决策系统从有限状态机换到效用系统了(这耗费了6个月的时间)。
不过,像移动并捡起收缴武器、破门(含有多个中间状态)等具体行为,我们还是用的有限状态机。在宏观决策方面,决策核心都是基于效用系统的,不再需要按“如果怎样,那就怎样”这种模式来设计AI,而是为他们设计一套行为规则,然后让他们自行决策,(开发起来)相对更加简洁,也更像我们心目中的“AI”。
我们开发要做的就是开发AI包含各种决策行动的模型(AI的定义/个性)。完成后,就可以给AI设置对应的模型。目前我们差不多有50个左右的AI模型,为了简化开发,一张地图中AI一般都具有类似的模型,毕竟没必要反复开发相同的东西,好用的模型能复用就直接复用;毕竟维护这些AI模型的投入也不小,开发还是尽量保持精简的好。
结语
这就到了第49卷开发者日志的结尾,别忘了继续关注未来的开发信息。
如果你们想要帮我们在Steam支持者的开发版本上测试新内容,并与我们反馈您的意见,亲自参加RoN的各种活动,欢迎来www.voidinteractive.net或在Steam商店页面购买成为支持者。
若你是在Youtube或Twitch上想做点新游戏的视频创作者的话,要不要试试这游戏?Ready or Not已和Lurkit合作以提升创作体验。请务必在这关注我们:https://www.lurkit.com/games/ready-or-not/streams

脚踏实地,志存高远
VOID Interactive

参考/引用文献
注:关于效用系统可参照以下大佬所撰写的文章
[1] wolf96 游戏人工智能开发之6种决策方法 https://blog.csdn.net/wolf96/article/details/48310353

麻了,这篇是真的长
E1xP
2023/04/01