电脑玩家

From Team Fortress Wiki
Jump to: navigation, search
一个士兵机器人在Dustbowl 训练地图中活动。
这个页面是关于在游戏中的军团要塞 2 的电脑玩家。对于军团要塞官方维基百科上的电脑用户,请参阅机器人。对于介绍在《军团要塞:经典》的电脑玩家,请参阅电脑玩家(经典)。对于介绍在曼恩 vs. 机器的机器人,请参阅机器人。关于别的用处,请参见机器人
我的拳头可是用钢铁做的!
机枪手(电脑玩家)描述自己的钢铁拳头

一个 BOT,又称机器人或电脑玩家,是服务器上被电脑控制的玩家。在军团要塞 2 中有两种机器人:智能机器人以及木偶机器人。智能机器人使用了先进的人工智能代码进行编程,因此它们能学习玩家们在游戏中的动作,并且不需要开启作弊模式来使用;木偶机器人没有人工智能,因此它们不会自动进行活动,但是它们对游戏测试以及训练有着显著帮助。若要使用木偶机器人,则必须在建立服务器时开启作弊模式,此时将不能完成成就

智能机器人

智能机器人能够学习玩家的动作并且不会受玩家直接控制。同时,它们都是以随机方式选择兵种的。他们使用复杂的人工智能代码编程,即使用求生之路一系列中生还者机器人以及被感染者机器人的代码设置。[1]添加智能机器人不需要服务器开启作弊模式,因此可以借此完成各种成就;不过有一个例外:机器人被杀后不会见到死亡摄像;因此,玩家不能通过智能机器人得到与死亡摄像相关的成就。还有,用奇异属性的武器杀死机器人不会增加武器的杀敌计数,除非武器有着奇异武器升级部件:机器人消灭数,则使杀敌数加到部件上而不是武器本身。

智能机器人在以下情况能够间接被玩家进行一定程度的控制:

  • 准备阶段内,任何被你准心指着的机器人都会做出嘲讽
  • 当你使用 "医生!" 语音指令时,附近的己方医生机器人会为你治疗。
  • 当治疗你的医生机器人的超级冲锋就绪时,使用 "冲!冲!冲!" 或者 "激活 Ubercharge!" 语音指令会让它立刻启动超级冲锋。
  • 受到重伤的医生机器人会马上启用自己的超级冲锋。
  • 机器人会试图参与同伴式嘲讽(例如击掌康茄舞)。

目前智能机器人的情况

智能机器人目前还算是在测试阶段而且随着每次游戏更新智能机器人都会得到一定改进。目前,经过无帽子更新,所有的兵种的智能机器人都能正常运作,包括曾经有问题的间谍。智能机器人只能在大部分官方的山丘之王地图、某些推车地图、攻防型地图 DustbowlGorge夺旗地图,以及 Mann Manor 上正常工作(在尾段两个地图中,智能机器人只能通过在控制台输入 tf_bot_add 指令来添加)。其他地图也可以使用这个方法添加机器人;但它们无法正常行动。

注:目前已经有一些较为流行的地图被添加了一个提前制造的机器人路线套装

智能机器人名称

智能机器人都有不同的名字,很多指着军团要塞 2,Valve 其它的游戏,以及电脑编程。很多这些名字在 Steam 论坛上被要求的。

未使用的机器人

在泄露的 TF2 源代码版本中发现了以下机器人名称,其中包含由于未知原因从未使用的机器人名称。

  • John Spartan
  • Leeloo Dallas Multipass
  • Sho'nuff
  • Bruce Leroy
  • CAN YOUUUUUUUUU DIG IT?!?!?!?!
  • Big Gulp, Huh?
  • Stupid Hot Dog
  • I'm your huckleberry
  • The Crocketeer


在不支持机器人的地图中添加机器人的步骤

相关文章:Navigation Meshes ,源于 Valve 开发者社区
  1. 在控制台中输入 "sv_cheats 1"。
  2. 在控制台中输入 "nav_generate"。
  3. 等待系统为地图绘制路径点。
  4. 重新载入地图(如果路径点已保存则不用重复之前步骤)。
  5. 可选择修改绘制的路径来增入漏掉的数据并移除错误的数据。使用 "nav_edit 1" 来进入编辑模式。
  6. 重载服务器(可选的,但是若不做,成就会仍然被禁用)。
  7. 打开控制台,输入"tf_bot_add <数目>"来选择添加机器人的数目。

警告:如果开启着机器人时候编辑路径,游戏很可能会崩溃。

机器人可以在用上方绘制过路径的地图上使用,并不需要每一次都使用这些指令,除了 "tf_bot_add <数目>" 来增入机器人。

机器人最好在控制点,山丘之王,推车,和夺旗地图上运用。在曼恩之力地图上,机器人会当作夺旗,但不会使用钩爪或机智地使用拿到的增益道具。

官方支持机器人的地图

智能机器人的行为

  • 机器人目前只会装备基础的配置
  • 简单难度上的机器人会很少使用主武器之外的武器。更高等级的机器人会在主武器弹匣用完后换到并使用它们的副武器。
  • 间谍狙击手机器人不会在简单模式上出现,而只能在普通和更高的等级中出现。
  • 目前机器人还不懂得使用特殊的跳跃,例如火箭跳或是黏弹跳,还不能搬运建筑。
  • 机器人在杀死玩家后,有几率立刻进行嘲讽,而且就算暴露在敌人火力下也会照做不误。曼恩 vs. 机器模式里的机器人有这种行为。
  • 间谍机器人(和玩家)在伪装着时会被其它的机器人忽略。但是,当碰到任何敌人机器人,入侵建筑物,开火,或隐形时,所有看到的机器人会将机器人/玩家称为间谍并不会忘记他,除非间谍在暗地里换伪装,暴露间谍的机器人死亡,或间谍用死亡之铃装死。
  • 火焰兵机器人会在非简单难度的游戏里十分频繁地使用压缩空气爆破来反弹敌方的飞行物。
  • 医生机器人大部分时候会先治疗其它的兵种而不是狙击手(和到更小的程度,工程师),就算 "医生!" 的语音指令被使用。
  • 医生机器人通常喜欢治疗机枪手,士兵,爆破手,和火焰兵,若被玩家玩儿的。如果没有人类玩家玩儿其中的一个兵种,他则很少会被一直治疗着。
  • 超级冲锋准备就绪的医生机器人会在受伤时启用超级冲锋。曼恩 vs. 机器模式里的 Über 医生有这种行为。
  • 如果一个伪装的间谍机器人在专家难度上见到敌人隐形,它会能够跟着他们,就算他们完全隐形并没有显示轮廓。
  • 机器人在准备阶段中不会开火除非它们先被攻击的(除了爆破手机器人放下黏性炸弹)。
  • 工程师机器人不会升级自己的传送装置或从它移除电子工兵,有时还不会修复自己的步哨枪就算不处于交火下。
  • 除了工程师,间谍,和狙击手,机器人在攻/防推车地图上会留在出生点上不动。
  • 间谍机器人,当被另一个机器人(或玩家)看到时,不会试图背刺而反会换到左轮手枪边射击边撤退。

智能机器人指令

为了在能使用智能机器人的地图中添加机器人,服务器管理员应在控制台中输入以下命令:

指令 说明
tf_bot_add 这个指令用于给双方队伍随机添加机器人,机器人的职业也是随机的。而且它们拥有有趣的名字。
指令语法
tf_bot_add [<count>] [<class>] [<team>] [<difficulty>]
参数说明
<count>
加上这个参数会为服务器添加指定数量的机器人。如果不加这个参数,则每次只会增加一个机器人。
使用这个参数时,如果添加的数目比服务器剩余位置还要多,例如一个24人服务器中有1名玩家,此时要想添加的机器人数目为25,那么只会在服务器中添加23个机器人。
<class>
此处所要填写的为机器人的兵种英文名称,例如Demoman, Engineer, HeavyWeapons, Medic, Pyro, Scout, Soldier, Sniper或是Spy
<team>
此处要填写的是想要机器人加入的队伍英文名称,例如red或者blue
<difficulty>
此处填写的是机器人的难度等级,例如easy, normal或者hard
例子
tf_bot_add red 3 heavyweapons easy意为在地图中为红队添加3个简单的重机枪手机器人。
tf_bot_difficulty 用以选择机器人的技能等级。
指令语法
tf_bot_difficulty <level>
参数说明
<level>
选择机器人的技能等级,用数字代替,例如: 0为简单, 1为普通, 2为困难, 3为专家。默认等级为"普通" (1)。
例子
tf_bot_difficulty 2意为将所有机器人的等级设置成"困难"。
tf_bot_force_class 如果填写一个兵种名称,则所有机器人都会选择此兵种。
指令语法
tf_bot_force_class <class>
参数说明
<class>
class处可以填写以下职业名称Demoman, Engineer, HeavyWeapons, Medic, Pyro, Scout, Soldier, Sniper或是Spy。默认情况下是随机选择兵种。
例如
tf_bot_force_class medic意为所有机器人都会选择医生。
tf_bot_join_after_player 如果参数不为零,则机器人将会在玩家加入游戏后跟随加入。
指令语法
tf_bot_join_after_player <integer>
参数说明
<integer>
此处可以填写 1 或者 0. 默认是 1 (即机器人会等待玩家)。
例子
tf_bot_join_after_player 0意为即使没有玩家加入游戏,也会添加机器人。
tf_bot_keep_class_after_death 如果参数为0,那么每次机器人重生时都会重新选择职业。
指令语法
tf_bot_keep_class_after_death <integer>
参数说明
<integer>
可以填写 1 或者 0。默认为0(开启此功能)。
例子
tf_bot_keep_class_after_death 1意为不允许机器人更换兵种。
tf_bot_kick

这个指令能将机器人踢出服务器。

指令语法
tf_bot_kick <name/all>
参数说明
<name/all>
填写想要踢出的机器人名称或是踢出所有机器人。
例子
tf_bot_kick CEDA意为将名称为"CEDA"的机器人踢出。
tf_bot_prefix_name_with_difficulty 如果参数不为零,则会在机器人名称之前添加其技能等级代码。
指令语法
tf_bot_prefix_name_with_difficulty <integer>
参数说明
<integer>
可以填写 1 或者 0。默认为0(不开启此功能)。
例子
tf_bot_prefix_name_with_difficulty 1以为机器人的名字会变为"1 Aimbot" (普通难度)或是"3 Saxton Hale" (专家难度).
tf_bot_quota 这个指令是用来决定服务器中机器人玩家的数目的,其非默认参数设置只有两种:"tf_bot_quota_mode" = "fill" or "match".
指令语法
tf_bot_quota <integer>
参数说明
<integer>
设定的数字为0至服务器最大人数之间的一个数字。默认为0。
例子
tf_bot_quota 2,如果tf_bot_quota_mode 设置为 match,则每有一名玩家加入服务器时,就添加2个机器人。服务器中每加入一名玩家时则会自动添加2个机器人。
tf_bot_quota_mode 决定机器人的分配类型。
指令语法
tf_bot_quota_mode<normal/fill/match>
参数说明
normal/fill/match
如果为'normal',服务器则不会增加或踢出任何机器人,除非有明确的指令;bot_quota的指令也无效。
如果为'fill',服务器则会根据玩家人数,按照1:1的比例增加机器人玩家。
如果为'match',则服务器会根据玩家人数按照1:N的比例增加机器人,此处N是指 bot_quota 设定的参数。
例子
tf_bot_quota_mode fill意为服务器永远保持与玩家人数相同数量的机器人玩家。

木偶机器人

木偶机器人没有AI程序所以不会自行运动。这类机器人就像牵线木偶一样,玩家可以通过指令来控制他们的行为,例如跟随玩家动作或是开火。木偶机器人只要被用于测试方面,如果使用恰当的指令,还可利用它们制作惊人的视觉效果。

木偶机器人指令

并不是所有指令都有效果,但为了明确,下面列表中列出了所有的指令。

注: 只输入指令的主体部分但不输入参数部分时,并不会使指令生效,而且还会得到个间接的指令说明。

指令 说明
bot 使用这个指令时会为服务器中添加一个机器人,如果没有明确参数设定时,机器人则会随机选择的兵种与团队。
指令语法
bot -team <teamname/number> -class <classname> -name <botname>
参数说明
-team teamname/number
指定机器人的添加数目与加入的团队。name/number可以设置为RED或是1BLU或是0
-class classname
classname可设置为Demoman, Engineer, HeavyWeapons, Medic, Pyro, Scout, Soldier, Sniper以及Spy
-name botname
botname可以设置为任何参数。如果出现同名的机器人,则会在所有同名机器人前面增加一个数字来区分彼此(从1开始),从最早加入的那个机器人开始编号。例如, joe, (1)joe, (2)joe, 等等。如果不指定名字,则所有加入的机器人都已"bot"加上数字进行命。数字从01开始编号; 例如,第一个加入的机器人名字为 bot01,第二个为bot02,后面以此类推。
例子
bot -team red -class Engineer -name joe这个代码的意思是:为红队添加一名工程师机器人,名字为joe。
bot_changeclass 强制所有机器人选择指定的兵种类型。

此命令好像还不能正常使用。

bot_changeteams

让所有机器人强制更换团队。 这会强制所有的机器人交换团队,例如一个在红队的机器人更换到蓝队去,反之亦然。

bot_command 命令指定的机器人做出特定的行为。
指令语法
bot_command <botname> <console command>
botname填入的是你想要命令的机器人的名称。
console command填入的是你想要机器人所做的事情的指令,请查看控制台指令.
例子 1
bot_command bot01 "voicemenu 0 0" 命令机器人01号使用语音菜单中的0 0选项
例子2 2
bot_command bot01 "taunt" 命令机器人01号使用嘲讽动作
切换指令与bot_command不能同时生效,但是使用bot_forcefireweapon指令,可以让所有机器人切换到指定武器并且不停开火,也可以让它们停止开火。当然,你只能强制命令指定并种类型的机器人这么做。
bot_defend 指定特定团队的所有机器人进行防御,此时指定队伍的所有机器人都将处于防御状态。

例如,重机枪手机器人使它们的机枪旋转起来。

bot_dontmove 允许或禁止机器人进行移动。当指令设置为1时,所以机器人都不能够移动但它们依然能转身和跳跃。配合这个bot_mimic指令,你可以把机器人带到你想它们去的地方并且让它们呆在那里不动。
指令语法
bot_dontmove <0/1>
允许或禁止机器人进行移动。
例子
bot_dontmove 1意为禁止所有机器人移动
bot_forceattack 这会强制所有机器人开火,无论它们手上使用的是什么武器。如果bot_forceattack2指令设置成0,那么机器人会使用主武器开火。如果设置成1,那它们则使用副武器开火。

如果bot_mimic指令生效时(设置成1),那么强制开火指令就不会生效。

指令语法
bot_forceattack <0/1>
设置为0时,机器人则不会开火。设置为1时,机器人则会开火。
例子
bot_forceattack 1 意为机器人会进行自动开火。
bot_forceattack2 参见上一条指令。
bot_forceattack_down 设置机器人的开火方式,分点射和连射两种。当设置为0时,机器人则会像不断点击开火键一样进行点射(对手枪有效,但对机枪手迷你机枪无效)。当设置为1时,机器人则会像按着开火键不放一样进行连射(对重机枪手来说有用)。
指令语法
bot_forceattack_down <0/1>
1为开启,0为关闭
例子
bot_forceattack_down 1 意为所有机器人进行连射。
bot_forcefireweapon 强制拥有指定武器的机器人切换到此武器并进行开火。

如果一个机器人没有此种武器,则不会对其有影响。

指令语法
bot_forcefireweapon <weapon filename>
filename一般填武器的名称tf_weapon_ <weapon name>.
例子
bot_forcefireweapon tf_weapon_fists 会使所有重机枪手使用他们的拳头进行攻击,而其他机器人则会原地待命。

bot_forcefireweapon tf_weapon_shotgun_pyro 会使所有火焰兵机器人使用霰弹枪开火,而且他机器人则原地待命。

如果要想所有机器人停止开火,只需输入一个游戏中不存在的武器的名称即可。而且任何前端没有tf_weapon的武器不算军团要塞2的武器,因此机器人不会开火,例如bot_forcefireweapon ,,
由于机器人的装备无法更换,因此无法命令他们使用非默认武器外的武器。
bot_kill

杀死指定机器人。

指令语法
bot_kill <bot name>
强制指定机器人自杀。
例子
bot_kill bot01 意为强制让机器人01号自杀。
bot_mimic 机器人模拟玩家的动作。

机器人会模仿玩家的按键行为,即模仿玩家的人物动作。例如例如移动、转身、跳跃、开火等。

这个指令的效果会覆盖指令bot_forceattack的效果,但不会覆盖指令bot_dontmove的效果。

指令语法
bot_mimic <0/1>
1表示开启,0表示关闭。
例子
bot_mimic 1 意为机器人模仿玩家动作。
bot_mimic_yaw_offset

指定机器人的朝向。 机器人会转身面向一个指定的方向,其方向根据玩家而定。如果角度设置为180,则所有机器人都会面向玩家。设置为0时,所有机器人都会面向玩家所面向的方向。

指令语法
bot_mimic_yaw_offset <0-360>
设置机器人的朝向
例子
bot_mimic_yaw_offset 180
bot_randomnames 赋予机器人随机名字,名字列表如下

机器人名称

游戏中的机器人已经有很多被设定好的名字,其中一些与Valve出品的某些游戏有联系。当然有些与军团要塞2本本身有联系。有些名字这是根据STEAM社区论坛成员的要求而添加的。如果您遇到了列表中没有出现的名字,请帮助我们补充,谢谢。

未使用的机器人

在泄露的 TF2 源代码版本中发现了以下机器人名称,其中包含由于未知原因从未使用的机器人名称。

  • John Spartan
  • Leeloo Dallas Multipass
  • Sho'nuff
  • Bruce Leroy
  • CAN YOUUUUUUUUU DIG IT?!?!?!?!
  • Big Gulp, Huh?
  • Stupid Hot Dog
  • I'm your huckleberry
  • The Crocketeer
指令格式
bot_randomnames <0/1>
1为开启随机名字,0为关闭。
例子
bot_randomnames 1
bot_refill 为所有机器人补充弹药,包括工程师的金属

指令格式: bot_refill

bot_saveme 强制所有机器人呼叫医生,这相当于对所有机器人使用指令bot_command <botname> "voicemenu 0 0"

指令格式: bot_saveme <0/1>

1为开启,0为关闭。
bot_selectweaponslot 让第一个加入的机器人切换指定的武器。

0 = 主武器; 1 = 副武器; 2 = 近战武器; 3 = 特殊武器(例如间谍的烟盒,工程师的PDA) 这个指令只对最先加入的机器人有效。而且目前并未发现能对特定机器人生效。

指令格式
bot_selectweaponslot <n>
n为上面提到的武器种类代码。
例子
bot_selectweaponslot 2 意为让第一个机器人切换到近战武器。
bot_teleport 传送指定的机器人到给定的坐标。

可以通过在控制台输入Status来查看玩家当前所在位置的地图坐标。

指令格式
bot_teleport <botname> <X> <Y> <Z> <Pitch> <Yaw> <Roll>
botname指的是机器人的名字.
X Y Z指的是地图的坐标。
Pitch Yaw Roll指的是机器人传送后所要面对的方向。
例子
bot_teleport bot01 -4815 1385 -447 0 0 0 意为传送机器人01号到坐标-4815 1385 -447,朝向为正前方。
bot_whack 给予机器人致命的伤害。这种伤害类型取决于玩家当前所使用的武器,这条指令可能是在开发过程中进行测试所用的。
指令格式
bot_whack <botname>
botname指的是指定机器人的名字。
例子
bot_whack bot109 意为给予机器人109号致命的伤害。

参考文献