Zh/NextBot: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
(Created page with "{{langsp}} '''NextBot'''是几个{{source|4}}多人游戏使用的AI系统。该系统不仅可以用于bot,还可以用于不受玩家控制的实体。 NextBot系...")
 
m (Multipage removal)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{langsp}}
{{LanguageBar}}
'''NextBot'''是几个{{source|4}}多人游戏使用的[[AI]]系统。该系统不仅可以用于[[bot]],还可以用于不受玩家控制的实体。
 
'''NextBot'''是几个{{source|4}}多人游戏使用的{{L|AI}}系统。该系统不仅可以用于{{L|bot}},还可以用于不受玩家控制的实体。


NextBot系统代码不存在于任何公共SDK中,但存在导航网格代码,但默认情况下不包含在任何SDK编译中。这里提供的文档主要是基于某些控制台命令(最突出的是<code>nb_debug</code>)和关于{{l4d|4|}}AI的官方PDF。
NextBot系统代码不存在于任何公共SDK中,但存在导航网格代码,但默认情况下不包含在任何SDK编译中。这里提供的文档主要是基于某些控制台命令(最突出的是<code>nb_debug</code>)和关于{{l4d|4|}}AI的官方PDF。
== [[NPC]] 与 NextBot 的区别 ==
== {{L|NPC}} 与 NextBot 的区别 ==
尽管Source npc(如{{hl2|4|}}中的npc)和'''NextBots'''都用于AI,但我们必须清楚这两个系统并不相同。以下是这些系统的主要区别:
尽管Source npc(如{{hl2|4|}}中的npc)和'''NextBots'''都用于AI,但我们必须清楚这两个系统并不相同。以下是这些系统的主要区别:


*'''NextBots使用[[Nav Mesh|导航网格]]来移动,而不是[[nodegraph|节点图]]。'''
*'''NextBots使用{{L|Nav Mesh|导航网格}}来移动,而不是{{L|nodegraph|节点图}}。'''
Source npc不仅使用节点来确定导航位置,而且还决定到达特定节点时该做什么。NextBots不使用这些节点进行导航;相反,它们使用导航网格来移动,并根据特定区域可能具有的标记执行不同的操作。
Source npc不仅使用节点来确定导航位置,而且还决定到达特定节点时该做什么。NextBots不使用这些节点进行导航;相反,它们使用导航网格来移动,并根据特定区域可能具有的标记执行不同的操作。
* '''NextBot系统既可以应用于bot,也可以应用于非可玩实体。'''
* '''NextBot系统既可以应用于bot,也可以应用于非可玩实体。'''
Line 12: Line 13:


* '''NextBot系统几乎完全建立在地面实体的基础上。'''
* '''NextBot系统几乎完全建立在地面实体的基础上。'''
Source npc可以被定义为在地面上导航或使用[[Info_node_air | 空中节点]]在开放空间中飞行。两个NextBots ([[eyeball_boss|Monoculous]][[Merasmus]])能够基于飞行进行移动,但这是相当初级的,因为该系统目前没有官方支持“空中导航网格”或任何类似的机制。
Source npc可以被定义为在地面上导航或使用{{L|Info_node_air|空中节点}}在开放空间中飞行。两个NextBots ({{L|eyeball_boss|Monoculous}}{{L|Merasmus}})能够基于飞行进行移动,但这是相当初级的,因为该系统目前没有官方支持“空中导航网格”或任何类似的机制。
== valve开发的使用NextBot系统的游戏 ==
== valve开发的使用NextBot系统的游戏 ==
NextBot系统用于以下游戏:
NextBot系统用于以下游戏:
Line 21: Line 22:
** 红队和蓝队的bot
** 红队和蓝队的bot
** MVM的机器人和坦克
** MVM的机器人和坦克
** 万圣节npc ([[headless_hatman|The Horseless Headless Horsemann]], [[tf_zombie|Skeletons]],等。)
** 万圣节npc ({{L|headless_hatman|The Horseless Headless Horsemann}}, {{L|tf_zombie|Skeletons}},等。)
** 毁灭机器人
** 毁灭机器人
** Unused/Test NPCs ([[bot_npc_archer|Archer Sniper NPC]], [[bot_npc_decoy|Spy NPC]])
** Unused/Test NPCs ({{L|bot_npc_archer|Archer Sniper NPC}}, {{L|bot_npc_decoy|Spy NPC}})
* {{dota2|4.1}}
* {{dota2|4.1}}
** 英雄bot
** 英雄bot
:{{todo|dota2中还有其他角色/实体使用NextBot吗?}}
:{{todo|dota2中还有其他角色/实体使用NextBot吗?}}
* 任何内置NextBot系统的游戏
* 任何内置NextBot系统的游戏
** [[Simple bot]]
** {{L|Simple bot}}


虽然{{css|4.1}}和{{csgo|4.1}}都有AI Bot([[cs_bot]]),但它们使用独立于NextBot的独特系统来决定机器人的行为。
虽然{{css|4.1}}和{{csgo|4.1}}都有AI Bot({{L|cs_bot}}),但它们使用独立于NextBot的独特系统来决定机器人的行为。
== NextBot是怎样工作的? ==
== NextBot是怎样工作的? ==
[[Image:Nextbot_actor.JPG|thumb|300px|right|一个事件如何影响NextBot的示例图。这张图来自《求生之路》的AI系统PDF。]]NextBot使用一个被称为“Actor”的整体结构来运行更具体的因素。当事件发生时,例如示例图中的“Oninjured”,Actor通过改变这些因素来反映事件。以下是NextBot具备的所有不同因素的总结:
[[File:Nextbot_actor.JPG|thumb|300px|right|一个事件如何影响NextBot的示例图。这张图来自《求生之路》的AI系统PDF。]]NextBot使用一个被称为“Actor”的整体结构来运行更具体的因素。当事件发生时,例如示例图中的“Oninjured”,Actor通过改变这些因素来反映事件。以下是NextBot具备的所有不同因素的总结:


=== 移动 ===
=== 移动 ===
Line 48: Line 49:
这就是NextBot真正的AI所在。意图因素管理NextBot可能拥有的不同行为,这个因素负责根据事件改变这些行为。
这就是NextBot真正的AI所在。意图因素管理NextBot可能拥有的不同行为,这个因素负责根据事件改变这些行为。


''要了解这个因素在游戏中的作用,请参见[[Example_of_NextBot_Behaviors | NextBot行为的例子]]。''
''要了解这个因素在游戏中的作用,请参见{{L|Example_of_NextBot_Behaviors|NextBot行为的例子}}。''
==== 行为 ====
==== 行为 ====
行为包含一系列动作,当意图因素选择它时,它将执行这些动作。
行为包含一系列动作,当意图因素选择它时,它将执行这些动作。


这个函数可以看作是NextBot的[[Schedule | 时间表]],因为它们都是AI需要执行的特定操作的列表。
这个函数可以看作是NextBot的{{L|Schedule|时间表}},因为它们都是AI需要执行的特定操作的列表。
==== 动作 ====
==== 动作 ====
这是NextBot的实际AI代码,当它的父行为被意图因素运行时,它将运行。Action可以有一个额外的子Action,它将与父Action同时运行。
这是NextBot的实际AI代码,当它的父行为被意图因素运行时,它将运行。Action可以有一个额外的子Action,它将与父Action同时运行。


这个函数可以看作是NextBot的[[Task | 任务]],因为它们都包含驱动AI本身的核心编程。
这个函数可以看作是NextBot的{{L|Task|任务}},因为它们都包含驱动AI本身的核心编程。


== 参见 ==
== 参见 ==
[[nb_debug]]
{{L|nb_debug}}


[[Example_of_NextBot_Behaviors | NextBot行为的例子]]
{{L|Example_of_NextBot_Behaviors|NextBot行为的例子}}


== 外部链接 ==
== 外部链接 ==
* [https://steamcdn-a.akamaihd.net/apps/valve/2009/ai_systems_of_l4d_mike_booth.pdf The AI Systems of Left 4 Dead] - An official PDF regarding various mechanics of Left 4 Dead, including NextBots and the AI Director
* [https://steamcdn-a.akamaihd.net/apps/valve/2009/ai_systems_of_l4d_mike_booth.pdf The AI Systems of Left 4 Dead] - An official PDF regarding various mechanics of Left 4 Dead, including NextBots and the AI Director
::{{confirm|Is there a video recording of this presentation?}}
::{{confirm|Is there a video recording of this presentation?}}
{{ACategory|Source}}
{{ACategory|NextBot}}
{{ACategory|Bots}}

Latest revision as of 08:31, 12 July 2024

English (en)中文 (zh)Translate (Translate)

NextBot是几个起源 起源多人游戏使用的AI(en)系统。该系统不仅可以用于bot(en),还可以用于不受玩家控制的实体。

NextBot系统代码不存在于任何公共SDK中,但存在导航网格代码,但默认情况下不包含在任何SDK编译中。这里提供的文档主要是基于某些控制台命令(最突出的是nb_debug)和关于求生之路 求生之路AI的官方PDF。

NPC(en) 与 NextBot 的区别

尽管Source npc(如半衰期2 半衰期2中的npc)和NextBots都用于AI,但我们必须清楚这两个系统并不相同。以下是这些系统的主要区别:

Source npc不仅使用节点来确定导航位置,而且还决定到达特定节点时该做什么。NextBots不使用这些节点进行导航;相反,它们使用导航网格来移动,并根据特定区域可能具有的标记执行不同的操作。

  • NextBot系统既可以应用于bot,也可以应用于非可玩实体。

Source npc系统的内部机制只适用于非玩家实体。在NextBot系统中,如果需要,可玩和不可玩的角色都可以配备AI。

  • NextBot系统几乎完全建立在地面实体的基础上。

Source npc可以被定义为在地面上导航或使用空中节点(en)在开放空间中飞行。两个NextBots (Monoculous(en)Merasmus(en))能够基于飞行进行移动,但这是相当初级的,因为该系统目前没有官方支持“空中导航网格”或任何类似的机制。

valve开发的使用NextBot系统的游戏

NextBot系统用于以下游戏:

待完善: dota2中还有其他角色/实体使用NextBot吗?

虽然反恐精英:起源 反恐精英:起源反恐精英:全球攻势 反恐精英:全球攻势都有AI Bot(cs_bot(en)),但它们使用独立于NextBot的独特系统来决定机器人的行为。

NextBot是怎样工作的?

一个事件如何影响NextBot的示例图。这张图来自《求生之路》的AI系统PDF。

NextBot使用一个被称为“Actor”的整体结构来运行更具体的因素。当事件发生时,例如示例图中的“Oninjured”,Actor通过改变这些因素来反映事件。以下是NextBot具备的所有不同因素的总结:

移动

这个因素决定了NextBot如何在环境中移动。例如,如果一个NextBot被编程为在受伤后逃跑,它就会依靠这个因素移动到地图上的不同位置。

身体

这个因素处理NextBot的动画。在“oninjured”的例子中,NextBot将依靠这个因素来播放退缩动画。

视场

这个因素处理NextBot如何看待其环境中的某些实体。视场和视距功能主要体现在这个因素上。

注意,这个因素不是NextBots工作所必需的。例如,tf2中的骷髅会发现并攻击敌人,而不管它是否看到敌人。

意图

这就是NextBot真正的AI所在。意图因素管理NextBot可能拥有的不同行为,这个因素负责根据事件改变这些行为。

要了解这个因素在游戏中的作用,请参见NextBot行为的例子(en)

行为

行为包含一系列动作,当意图因素选择它时,它将执行这些动作。

这个函数可以看作是NextBot的时间表(en),因为它们都是AI需要执行的特定操作的列表。

动作

这是NextBot的实际AI代码,当它的父行为被意图因素运行时,它将运行。Action可以有一个额外的子Action,它将与父Action同时运行。

这个函数可以看作是NextBot的任务(en),因为它们都包含驱动AI本身的核心编程。

参见

nb_debug(en)

NextBot行为的例子(en)

外部链接

证实:Is there a video recording of this presentation?