欢迎光临散文网 会员登陆 & 注册

[严阵以待]第50期 双周简报

2023-04-01 09:49 作者:Omeric  | 我要投稿

Volume #50 Ready or Not Development Update 

第五十期 严阵以待开发进度更新

Attention Officers,

各位警官们,请注意:

Welcome to the 50th edition of our biweekly newsletter! To mark this milestone we will be having an extra-long newsletter, we’ll be featuring a meaty write-up of the AI system that Ready or Not uses as well as a good public look at the other half of the Station Rework

欢迎来到我们第五十期的双周简报!为了纪念这个里程碑的时刻,我们这次准备了一篇超长的内容给到大家,分别是严阵以待所用AI系统的详细介绍,以及警局装修项目余下部分的公开展示。

Starting off with the rework of Station, being the first map that many if not all players will see meaning it’s an incredibly important first impression, perhaps even more so since the atmosphere of the Station and the decrepit state of the players surroundings reflects the state of Los Suenos as a whole.

让我们首先从警局的返工重制说起,作为多数玩家,甚至可以说是所有玩家可能会看到的首张地图,它给人的第一印象至关重要,更有甚者,警局的氛围同玩家周围破败不堪的环境是对Los Suenos市整体状态的一处缩影。

With the combination of clearly repurposed rooms, crumbling architecture, all filled with high tech police equipment in stark contrast of their surroundings it effectively communicates the state of the world the player has chosen to immerse themselves in.

通过欲要分崩离析的建筑、改造后的房间和高科技警用设备相结合,与玩家周围环境形成鲜明对比,这些不仅向玩家传达了所在地的世界观,也让游戏世界更加真实、丰富,同时更容易让玩家投入其中,享受进一步的沉浸体验。


The Station Reborn | 浴火重生的警局

Along with many the facelifts that many of the legacy maps are getting, we had no intention to leave our players' home base in the dirt. Teasing the level of detail we plan to put into the rest of the station with part 1 of the revamp we launched with Adam, we figured it was time to tease the rest of the work we’ve put into the map.

随着许多玩家们烂熟于心的老图改头换面,我们也没有忘记继续改进玩家的基地。在Adam更新一齐开展的改造计划第1部分中,我们曾展示过警局计划改造的其他部分。现在是时候验收余下那部分工作的成果了。

Above: The shooting range receives a bit of a facelift, replacing the claustrophobic stalls with a much more open-form design. (靶场进行了翻新,以更加开放大气的设计替代了让人深感幽闭恐惧症的小隔间)
Above: The station's surveillance and information gathering suites often cast a wide net. With the LSPD on the backfoot, they need all the help they can get. Make sure to visit Dispatch once in a while. (警局的监视和信息收集系统已经在城市布下天罗地网。由于LSPD目前
在行动中不据上风,他们需要你尽可能多的帮助。所以请务必定期前往调度中心查看)

In the future, many locations within the station will have more nooks and crannies to explore and perhaps even easter eggs to find. Many will be like the well known hats and the coffee machine, some will have more effect on you, your officers, and maybe even your gameplay.

很快,警局内的许多地点将有更多隐蔽的角落同秘密空间可供探索,自然会有一些彩蛋等着被发掘。其中有些将像那些广为人知的训练场大檐帽或是加速buff咖啡机 图一乐,而有些则可能对你、你的团队,甚至整个游戏的游玩体验产生更多影响。

Above: The Evidence room, where you can find some of your confiscated arms, drugs, and [REDACTED]. (物证室,你可以在这里找到一些被收缴的武器、毒品和 [已删除])
Above: A relatively calm moment in the lobby of the LSPD station, enjoy them while you can. (LSPD警局大厅较为安静的片刻,尽情享受罢)

A Lesson on RONs AI with Ali | 与Ali齐上一节严阵以待AI课

By popular request, one of the most influential voices in the programming of Ready or Nots’ AI, Ali, has given us a writeup on exactly how the games AI functions and makes decisions based on environmental factors.

响应广大网友要求,严阵以待AI编程组最最具影响力的一员,Ali,为我们撰写了一份关于本游AI如何根据环境因素进行决策的课件。

The AI system we use for them is what is called a Utility-Based AI System. A decision making model.The concept behind Utility AI is to mathematically model human behavior in a computer program using numbers, formulas and response curves. The “human” we want to model is called an agent or simply, an AI. Each agent in a world environment has a list of Decisions (or what we call, Actions) they want to make. Every frame we run through the list of actions and decide which one to pick and execute. That’s the core AI loop.

“我们为严阵以待的所使的是一套基于Utility(效用)函数的AI系统,即一个决策模型。效用函数AI其背后的原理就是计算机程序使用数字、公式和反应曲线对人类行为进行数学建模。我们想要模拟的 "人 "被称为智能主体(agent),或者简单地说,是AI。世界环境中的每个智能主体都有一个他们想要做出的决定(或我们称之为行动)的清单。每一帧,我们都通过行动清单,决定选择和执行哪一个。这就是核心的AI循环(core AI loop)。

Inside each action, there is a list of Considerations that make up what an action is mathematically, and is what ultimately determines the score for that action. Each consideration outputs a score, which all then get accumulated (using a scoring method) at the end to output a final score for that action, that will then be later used to pick the highest scoring action. That action will be the one to execute and run (using another system called the Activity System), with a commitment time set, so they don’t oscillate in their decision making, acting indecisive from frame-to-frame. There is also a thing called Commit Interrupts, it is a list of names of actions that can interrupt the current action if it is being committed to, and they get evaluated every frame too. Gives us more control.

在每个行动中,都有一个考虑因素的清单,这些考虑因素在数理上构成了该行动,并最终决定了该行动的得分。每个考虑因素都会输出一个分数,这些分数最终会被累计(使用一种评分方法(scoring method)),以输出该行动的最终得分。然后,会从中选择得分最高的行动,并且该行动将被执行和运行(使用另一个称为“活动系统(Activity System)”的系统)。为了避免决策上的摇摆不定,每个行动都设定了一个决策时间(commitment time),以免在每一帧之间表现得优柔寡断。同时,还有一项称为“决策中断(Commit Interrupts)”的功能,它是一串行动名称的列表, 并可以用来中断当前正在决策的行动,游戏中每一帧都会被评估,以便提供更多的控制。

The scoring method is just a list of 4 math operations, Additive, Subtractive, Multiplicative and Divisive. Really simple, they just add, subtract, multiply or divide into a score accumulator. It serves as another setting that designers can tweak to mold the final action score.

评分方法(scoring method)只是一个由 4 种基本数学运算组成的算法,包括加法、减法、乘法和除法。它们只是在分数累积器(score accumulator)中进行加减乘除,很简单的捏。它的另一个作用就是,游戏设计师可以随时通过调整该累计器来调整最终的行动得分。(P.s.换句话说,他想让嫌疑人激进的点可以直接干拉犹豫值到最低和行动值最高,之前坊间有修改器能直接操作来着)

One example of what a consideration can be is “Health”. This is scored using a Scoring Function that we define, that scoring function takes in a world context and outputs a number. In this case, “Health”, it is really simple, we do Current/Max, which gives you a value (or in other words a score) from a sliding scale between 0.0 to 1.0, which then can be optionally scaled by a Weight to bias the action in the AI if we want. You can imagine other considerations having more complicated functions. The output of the scoring function is then mapped by the response curve and is used as the final score of the consideration. There are many curve presets to choose from, the default is a Linear response, but you can have all sorts of easing curves, like Exponential, Sinusoidal, etc. (or even a hand made curve, or even better, we have the ability to implement your own custom curve function, which is pretty neat.)

考虑因素的一个例子是“健康值”。我们使用一个评分功能(Scoring Function),该功能从对当前游戏内一列的操作评估后,输出一个数字,以对“健康值”进行评分。在这种情况下,“健康值”评分的计算非常简单,我们将当前值除以最大值,得到一个介于0.0和1.0之间的值(或者说是分数),这个值可以通过一个权重(Weight)进行缩放,以便AI偏向于行动列表种的某个行动,当然,前提是如果我们需要的话。其他的考虑因素可能使用更复杂的函数进行评分。评分函数的输出值随后被映射到响应曲线上,并作为考虑因素的最终得分。有许多不同的响应曲线可供选择,其中默认的是线性响应曲线,但你也可以使用各种缓动曲线,如指数曲线、正弦曲线等等。(甚至可以使用任何自定义的曲线函数,你看看这多赞啊是不是。)


A health of 0.9, (altered by the shape of a curve) can be a good or bad thing. Good being you probably don’t need to take cover and you can risk taking certain actions. Bad thing if you want your health to always stay full, so you find cover and regenerate using a stim (this doesn’t happen in RON of course, but just as an example of how looking at the same number can mean two different things).

当健康值为0.9时,(根据函数曲线形状进行调整) 可能是好事或坏事。好事是你可能不需要寻找掩体并且继续冒险尝试某些行动。坏事是如果你想让自己的健康一直保持满值,那么你需要找到一个相对完整切安全的掩护并使用类似肾上腺素针进行恢复(当然,这在严阵以待中是不会发生的,介只是作为一个如何看待相同数字可以意味着两种不同的东西的例子)。


As you can imagine with a library of hundreds of considerations, using those and tweaking response curves is how we can get different “personality types” or behavior's out of our suspects and civilians, some being more resistant to surrender than others or some being more eager to take cover or some that can be more suicidal if you don’t de-escalate the situation quickly.

正如你所想象的,通过使用数百个考虑因素并调整响应曲线,我们可以从我们的嫌疑人和平民中获得不同类型的 "人格" 或其行为模式,其中一些人比其他人更加拒捕,或者一些更偏好于寻找掩体,还有例如如果你不能迅速控制场面,就会选择自杀的那类等等。



List of Action

Gates & Considerations

We have another concept in our system that I don’t think I’ve seen anywhere in other people’s utility implementations but it’s hardly anything groundbreaking. We call it Gates. It acts as a supplementary aid to Considerations. Gates are similar to considerations but instead of returning a score, they just return true or false, open or closed. The purpose of gates is to block off actions that we don’t want the AI to consider. All gates must be open for the action to be considered for scoring. Cooldown timers are one example where gates are useful, there is no way you can reasonably do this with considerations and weights, it needs to be a binary operation. Has the cooldown finished or not? The cooldown must be finished before considering said action. Before when we didn’t have this concept, we would sometimes have AI surrender to no stimulus or do certain actions that they shouldn’t have been doing, and when you went to debug what was going on, all the scores seemed reasonable and you could see why they did a certain thing. Gates help us control them a little more so as to not go wild and do un-expected things, which our designers like.

我们的AI系统中还有另一个概念,我好像冇在其他人的程序实现睇过,但这也并不是什么很具有突破性的东西。我们称之为门控(Gates)。它作为对决策考虑的补充辅助。Gates类似于考虑因素(Considerations),但它们不是返回分数,而是返回true或false,开启或关闭。门控的目的是阻止我们不想让AI考虑的行动。为了评分,所有门必须保持开启状态。使用门控的一个实用例子是冷却时间,因为这无法通过考虑因素和权重进行合理处理,必须进行二进制操作。判断是否结束冷却时间,必须在考虑该行动之前完成冷却。在我们没有这个概念之前,AI有时会没有刺激地投降,或者做一些不应该做的事情。当你试图调试时,所有的得分看起来都很合理,你可以理解它们为什么会做某些事情。门控可以帮助我们更好地控制AI,避免它们做出意料之外的行动,这是我们的设计师们喜欢的。

Gates

The simple concept of using math and formulas to mold the output result to your liking (using weights, different scoring methods and response curves), gives you a whole bunch of states that you can’t possibly program into the AI manually, which in turn greatly affects the gameplay experience, each AI will behave slightly different than the next. Our previous version of the AI system was basically one large state machine at its core and can only ever be worked on by us, the programmers. If we wanted to progress, implement better AI, allow for designer freedom to alter AI behavior quickly in the editor, without asking programming to do simple things, a radical approach was needed to switch to Utility (which took about 6 months to implement).

利用数学和公式来塑造输出结果的简单概念(使用权重、不同的评分方法和响应曲线),使得你可以得到许多无法手动编程到AI中的状态,这反过来极大地影响了游戏体验,每个AI的行为都会略有不同。我们之前版本的AI系统基本上是一个大号状态机(state machine),只能由我们程序员亲自来开发。如果我们想要进步,实现更好的AI,一个允许设计师在编辑器中快速修改AI行为而不需要编程基础的AI,就需要采用一种激进的方法来转向Utility算法系统(这需要大约6个月的时间来实现)[拖更Flag]

However, we still use the state-machine concept for concrete actions like, moving to and picking up a weapon on the floor or breaching a door (which has a lot of states). But the decision making aspect of the AI, the brains if you will, is all Utility-Based, we don’t have to manually say “if this then that, if this then do x”, instead, as outlined above, we give them a set of actions and rules to follow, then they can go about into the world and make decisions for themselves which is pretty neat and what feels like “true” AI.

然而,对于像移动到某处并在地板上拾取武器或破门而入(状态较多的行动)等具体动作,我们仍然使用状态机这一概念操作。但是AI的决策方面,也就是所谓的大脑部分,全部采用了基于Utility的方法,我们不需要手动编写 “if this then that, if this then do x” 的规则。相反,我们使用上述提到的方法,为它们提供一组要遵循的动作和规则,然后它们可以在游戏世界中自主做出决策,不觉得这很酷吗? 作为一名理工男我觉得这太酷了,很符合我对AI的想象,科技并带着趣味。

All we have to do on our side in the editor is setup their Archetype (the definition/personality of an AI), which houses the actions we want them to make. After we’re done, we assign the archetype to the specific AI in our data tables. We have about 50 archetypes and many AI variants in a level share a similar or the same archetypes, for many reasons, for simplicity sake, we don’t want to duplicate archetypes unnecessarily when we can just reuse the ones that work, or if we happen to take a liking to a particular archetype in the way they behave, etc., plus the overhead of our team in managing all those archetypes, it’s something we try to stay lean with.

在编辑器中,我们所要做的就是设置他们的原型(AI的基本定义/个性),这其中包含我们希望他们做出的行动。完成后,我们将原型分配给我们数据表中的特定AI。我们有大约50个原型,一个关卡中的许多AI变体都有类似或相同的原型,原因有很多,为了简单起见,我们避免原型不必要重复,而是尽可能重复使用那些有效的原型。如果我们对某个特定原型的行为模式感到满意,我们也会喜欢重复使用它。加之我们团队所有这些原型的开销,这是我们试图保持精益精干的一套AI逻辑原因。

Conclusion | 总结

This concludes our 50th briefing. Be sure to tune in next time for more development news!

这便是第五十期双周简报的全部内容了。请在未来继续关注我们的开发进度报告!

If you’d like to help us test new content during playtesting periods on the Supporter exclusive experimental branch, provide us with your game feedback, and keep up with the Supporter community; you can become a supporter at www.voidinteractive.net or at our Steam store page.

如果您想在每次都能玩到支持者版本专属更新,抑或是向我们提供您的游玩反馈,并加入支持者专属社区,请在 www.voidinteractive.net 或严阵以待的 Steam 商店页面上购买支持者版本DLC

Are you a content creator on youtube or twitch looking for new games? We got you covered; Ready or Not has partnered with Lurkit to elevate gameplay! Make sure to follow us here.

你是一位正在寻找新的游戏探索的 YouTube 或 Twitch 上的内容创作者吗?来吧,加入严阵以待,我们已经与 Lurkit 创作者平台达成合作关系!请务必在此关注我们

Make sure you follow Ready or Not on Steam here.

确保你已经在steam上关注了严阵以待哦:)

Keep your feet on the ground.

保持联系

VOID Interactive

你的仓鼠小鸽子VOID酱<3


The End. 我好困...zZZ 01/04/2023  Trans by OC in UK





[严阵以待]第50期 双周简报的评论 (共 条)

分享到微博请遵守国家法律