TFBot Technicalities

From Valve Developer Community
Jump to: navigation, search
English (en)
Not to be confused with tf_bot (entity page).

TFBots are NextBots used in Team Fortress 2 Team Fortress 2 officially for Mann vs. Machine, training modes, and also competitive in the event that a player leaves before the match completes.

In Mann vs. Machine, 22 slots are reserved for TFBots to use, leading to the recommendation of 32 maxplayers for servers hosting Mann vs. Machine games.

Skill / Difficulty

Bots behave based on the skill value (or difficulty) they have, which can be set through tf_bot_difficulty or with tf_bot_add. Skills are defined in game as follows:

  • Easy (0)
  • Normal (1)
  • Hard (2)
  • Expert (3)
Blank image.pngTodo: Summarize behaviors based on skill value.


TFBot has a tf_bot_taunt_victim_chance chance to perform a taunt upon killing an enemy.

Bots will stay in combat until:

  • They have less than 20% max ammo left.
  • They need to do a full reload and they are Hard or Expert bots.
  • Their friend score is lower than the foe score.
  • Their health percentage is lower than tf_bot_health_critical_ratio.

Bots will search for health kits and dispensers when their health is lower than tf_bot_health_ok_ratio or they are on fire, they are not in combat, and a healer is not healing them already. The range that bots will hunt for health in is

   searchRange = tf_bot_health_search_far_range + (current health / max health) * (tf_bot_health_search_near_range - tf_bot_health_search_far_range );

Bots won't try to get health in the Mann Vs. Machine gamemode.

Threat Level

Confirm:Does this mechanic still exist?

Threat levels are scores used to determine how dangerous something is. This value is between 0 (no danger) and 1 (immediate danger). The following actions give a certain threat level:

Threat Value
Enemy (Class) Varied
Übered enemies 1
Level 3 Sentry 1
Level 2 Sentry 0.8
Level 1 Sentry 0.6
Enemies further than tf_bot_sniper_personal_space_range units from a Sniper 0

Typically the threat level is stored in two variables: the friend score and the foe score. These scores are determined through accumulating the threat level of every visible known ally and enemy respectively. Bots will try to retreat if the friend score is lower than the foe score.

Class Info

TFBots will change classes in spawn with tf_bot_reevaluate_class_in_spawnroom 1, and upon death through tf_bot_keep_class_after_death 0.


ClassSelectionInfo is a structure that determines the conditions for selecting a class.[4] The conditions for selecting a class can be the minimum team size, the player rate, minimum and maximum amount of the class.[4]

Rosters are ClassSelectionInfo arrays that determine how TFBots choose each class.[4]

There are 3 predefined rosters that are used if tf_bot_spawn_use_preset_roster 1 is set; the offensive roster, the defensive roster, and competitive roster for competitive game modes.[4]

Offense Roster
Class Team Size Threshold Player Rate Minimum Amount Easy Normal Hard Expert
Scout 0 0 1 3 3 3 3
Soldier 0 0 0 None None None None
Pyro 0 0 0 2 3 3 3
Demoman 3 0 0 None None None None
Heavy(weapons) 3 0 0 1 1 2 2
Engineer 5 0 0 1 1 1 1
Medic 4 4 1 1 1 2 2
Sniper 5 0 0 0 1 1 1
Spy 5 0 0 1 1 1 1
Defense Roster
Class Team Size Threshold Player Rate Minimum Amount Easy Normal Hard Expert
Soldier 0 0 0 None None None None
Pyro 3 0 0 None None None None
Demoman 3 0 0 2 3 3 3
Heavy(weapons) 3 0 0 1 1 2 2
Engineer 0 4 1 1 2 3 3
Medic 4 4 1 1 1 2 2
Sniper 5 0 0 0 1 1 1
Spy 5 0 0 0 1 2 2
Competitive Roster
Class Team Size Threshold Player Rate Minimum Amount Easy Normal Hard Expert
Scout 0 0 0 0 0 2 2
Soldier 0 0 0 0 0 None None
Pyro 0 -1
Demoman 0 0 0 0 0 2 2
Heavyweapons 3 0 0 0 0 2 2
Engineer 0 -1
Medic 1 0 1 0 0 1 1
Sniper 0 -1
Spy 0 -1


Preferred Weapon Primary
Threat Value 0.6
Medic Bot Priority None


Preferred Weapon Primary
Threat Value 0.8
Medic Bot Priority 2nd

Soldier bots prefer their primary weapon in combat, but will switch to their secondary if they are out of primary weapon ammo and the threat is closer than 500hu.


Preferred Weapon Primary
Threat Value 1
Medic Bot Priority 3rd

Pyro bots are normally offensive and will attack enemies with their primary weapon. However if the enemy is further than 750hu, the bot Pyro will equip its secondary weapon.

They airblast enemies that are closer than tf_bot_pyro_shove_away_range hammer units to the bot pyro, and projectiles if they are visible to the pyro bot and are within tf_bot_pyro_deflect_tolerance angles (in radians) relative to the Pyro bot's FOV. The chance that they will airblast a projectile depends on their skill level.

Skill Level Chance to Airblast
Easy 0% chance
Normal 50% chance
Hard 90% chance
Expert 100% chance


Preferred Weapon Primary and Secondary
Threat Value 0.6
Medic Bot Priority 4th

Demoman bots fire their primary weapon in an arc. The angle they fire grenades is tf_bot_ballistic_elevation_rate × v, v being the distance to the target as a normalized vector. They will not fire with their primary above 45° or 0.79π.

When they encounter Sentries, Demoman bots prefer their secondary over their primary and stack stickybombs on the Sentry to then detonate them.

They will sometimes set up sticky-bomb traps on nav areas where they predict the enemy will pass through. The amount of stickybombs they place is tf_bot_stickybomb_density × the area of the target nav area which will always be ≥1. Demoman bots will stop setting up their trap if they see an enemy that is less than 500hu away.


Preferred Weapon Primary
Threat Value 0.8
Medic Bot Priority 1st

Heavy bots prefer to use their primary weapon when in combat. They will "rev" (hold right click) for at least three seconds if they see an enemy.

They are the most preferred patient to be healed by Medic bots, out of the other classes.


Preferred Weapon Melee and Primary (for combat)
Threat Value 0.4
Medic Bot Priority None

Engineer bots focus on building near sentry spots (func_tfbot_hints with hint KV set to 1). Engineer bots normally just stay around their sentry and constantly hit it with their wrench. If the engineer bot get attacked however, they will attack with their weapon and flee.

Note.pngNote:Engineer bots will not switch to another class if their Sentry or Teleporter Exit is up, regardless if tf_bot_reevaluate_class_in_spawnroom or tf_bot_keep_class_after_death is set.

In Mann Vs. Machine Engineer bots will not attack, unless if they're marked as a squad. They can only build Sentry Guns and Teleporters, and they build around groups of bot_hint_engineer_nests, bot_hint_sentryguns, and bot_hint_teleporter_exits, rather than func_tfbot_hint's.


Non-Medic bots will normally prefer to take active teleporters over walking to the destination, but they will only take them when their incursion distance is less than 350hu + the teleporter area's incursion distance. However Medic bots will only take the teleporter if it's patient also goes through the teleporter; otherwise they ignore teleporters.

Note.pngNote:TFBots will not use Teleporters and Dispensers in MvM by design.


Preferred Weapon Secondary
Threat Value 0.2
Medic Bot Priority None

Medic bots passively heal patients that are in their current viscinity, and will follow their patient when they are between tf_bot_medic_stop_follow_range and tf_bot_medic_start_follow_range from them. They will respond to call for medic from human players that are within tf_bot_medic_max_call_response_range units from the medic bots.

They prefer to heal ally heavies, soldiers, pyros, and demomen over the other classes. If the medic bot is in a squad, they will only heal the squad leader. In the training gamemode, medic bots will always stay on the human player.

If Medic bots have the vaccinator equipped, they will use their über when they or their patient have taken damage. Otherwise medic bots will use their über when:

  • The patient's health ratio is less than 0.5.
  • The patient is not already übered.
  • The medic bot's health is less than 25, 50, or bot_medic_uber_health_threshold attribute.
Icon-Bug.pngBug:Due to an oversight where CTFBotMedicHeal::IsGoodUberTarget( CTFPlayer who* ) always returns false[1], non-übered medic bots will not stick to their current patient regardless if they have über ready.[2]
Confirm:Does this still happen in game?

In MvM medic bots will not attack, unless if marked to be part of a squad in the popfile.


Preferred Weapon Primary
Threat Value 0.4
Medic Bot Priority None

Sniper bots typically look around for up to tf_bot_sniper_spot_max_count Sniper Spots, which are hint-0-func_tfbot_hints in MvM[confirm] or nav areas outside MvM, that are at least tf_bot_sniper_spot_epsilon units away from adjacent sniper spots and attack from those areas; they search for tf_bot_sniper_spot_search_count sniper spots per update frame. However if an enemy gets close to them, the Sniper bot will fight them and then try to retreat to their goal. If the threat is closer than 750hu, then Sniper bots will use their secondary weapon.

When aiming through their primary, Sniper bots choose a target part to hit based on their skill level and take 0.5 to 1.5 seconds to adjust their aim. An error angle between ±π and error radius between 0 and tf_bot_sniper_aim_error is then applied to their aim.[3] Expert and Hard bots always aim for the head, normal bots aim between the head and body (specifically ⅓ of the head's z position), and easy bots just aim for the body. If Sniper bots have the Huntsman equipped, then they will fire in an arc affected by tf_bot_arrow_elevation_rate, and aim for the same body parts.

Sniper bots will stay tf_bot_sniper_spot_point_tolerance units away from an enemy capture point, while they'll stay within this range in an ally capture point.


Preferred Weapon Primary and Melee
Threat Value 0.6
Medic Bot Priority None

Spy bots typically lurk around hiding spots.[game/server/tf/bot/behavior/spy/CTFBotSpyInfiltrate::Update] They prefer to use their melee weapon if the target is closer than tf_bot_spy_knife_range units to the spy. If their target is further than tf_bot_spy_change_target_range_threshold units away, Spy bots will choose another target that is closer than that distance. They will attempt to attack the back of an enemy (or backstab) at an angle based on the difficulty of the bot.

They are suspected by enemies if they collide with an enemy for more than tf_bot_suspect_spy_touch_interval consecutive seconds.

When sapping a building. If a spy bot is less than 300HUs from the sap target; they will not dodge enemies.[5: game/server/tf/bot/behavior/spy/tf_bot_spy_sap.cpp]

Console Variables and Commands

To skip to the next section (Bot Names), click here.

Server Management

Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_add[count|name] [class] [team] [skill] ["noquota"]strings (processed without order)Creates a bot with specified parameters. This entity will borrow from tf_bot_difficulty if skill is omitted.
Icon-Bug.pngBug:When red bots are added in MvM withoutnoquotaspecified, bots will constantly spawn forever.
Fix: Set tf_bot_quota 0.
tf_bot_auto_vacate10 disables, 1 enablesWhether bots will automatically leave to make room for human players.
tf_bot_difficulty1integerSets default skill value.
tf_bot_join_after_player10 disables, 1 enablesIf nonzero, bots wait until a player joins before entering the game.
tf_bot_keep_class_after_death00 disables, 1 enablesIf zero bots will change class upon death, except in MvM.
stringKicks bots based on name and team, or all of them. Will instead move bots to spectator mode if moveToSpectatorTeam is added.
tf_bot_kill[name|"red"|"blue"|"all"]stringKills bots based on name and team, or all of them.
tf_bot_prefix_name_with_difficulty00 disables, 1 enablesAppend the skill level of the bot to the bot's name
tf_bot_quota0arbitrary integerDetermines the total number of tf bots in the game.
tf_bot_quota_modenormalstringDetermines the type of quota; allowed values: 'normal', 'fill', and 'match'. Given N is tf_bot_quota, in 'fill' mode, adjust bots to maintain N players; in 'match' mode, maintain a 1:N ratio of humans to bots.
tf_bot_reevaluate_class_in_spawnroom10 disables, 1 enables If set bots will opportunistically switch class while in spawnrooms if their current class is no longer their first choice.
tf_bot_spawn_use_preset_roster10 disables, 1 enablesBot will pick classes based on a preset class table.
Icon-Bug.pngBug:After the 22nd bot, bots will run out of classes to automatically pick and stay in the class selection forever.

Global Behavior

Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_always_full_reload00 disables, 1 enablesDetermines whether bots perform full reloads before firing.
tf_bot_ammo_search_range5000Hammer unitsHow far bots will search to find ammo around them.
tf_bot_capture_seek_and_destroy_max_duration30arbitrary float If a capturing bot decides to go hunting, this is the max duration he will hunt for before reconsidering.
tf_bot_capture_seek_and_destroy_min_duration15arbitrary float If a capturing bot decides to go hunting, this is the min duration he will hunt for before reconsidering.
tf_bot_choose_target_interval0.3fSeconds (float) How often a bot can reselect his target
tf_bot_defend_owned_point_percent0.5arbitrary floatStay on the contested point we own until enemy cap percent falls below this value.
tf_bot_defense_must_defend_time300arbitrary floatIf timer is less than this value, bots will stay near point and guard.
tf_bot_fire_weapon_min_time1arbitrary integerMinimum time bots will fire their weapon.
tf_bot_health_critical_ratio0.3arbitrary floatTFBots that have health ratios below this value are considered "critically injured".
tf_bot_health_ok_ratio0.8arbitrary floatTFBots that have health ratios below this value are considered "ok".
tf_bot_health_search_far_range2000Hammer unitsCritically-hurt bots will search for health within this range.
tf_bot_health_search_near_range1000Hammer unitsUncritically-hurt bots will search for health within this range.
tf_bot_hitscan_range_limit1800Hammer unitsMaximum range in which bots will try to hit targets with hitscan.
tf_bot_max_point_defend_range1250Hammer unitsHow far (in travel distance) from the point defending bots will take up positions.
tf_bot_melee_attack_abandon_range500Hammer unitsIf threat is farther away than this, bot will switch back to its primary weapon and attack
tf_bot_near_point_travel_distance750Hammer unitsRange in which bots are considered to be "near" the point.
tf_bot_notice_gunfire_range3000Hammer unitsThe range in which gunshots are noticed by bots.
tf_bot_notice_quiet_gunfire_range500Hammer unitsThe range in which quiet gunshots are noticed by bots.
tf_bot_offense_must_push_time120arbitrary floatIf timer is less than this, bots will push hard to cap
tf_bot_offline_practice0arbitrary integer Tells the server that it is in offline practice mode, and also disable achievements.
tf_bot_path_lookahead_range300Hammer unitsHow far a bot should look ahead.
tf_bot_retreat_to_cover_range1000Hammer unitsHow far to search for cover.
tf_bot_taunt_victim_chance20arbitrary float1/value chance for a bot to taunt after killing a bot.
tf_bot_wait_in_cover_max_time2arbitrary floatMaximum time bots will hide in cover.
tf_bot_wait_in_cover_min_time1arbitrary floatMinimum time bots will hide in cover.
tf_bot_warp_team_to_meTeleports all ally bots to !activator.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_debug_ammo_scavenging00 disables, 1 enablesDraws debug informaton for bot ammo-information.
tf_bot_debug_destroy_enemy_sentry00 disables, 1 enablesDraw debug info for bots trying to destroy sentries.
tf_bot_debug_retreat_to_cover00 disables, 1 enablesDraw debug info for bots retreating to cover.
tf_bot_debug_seek_and_destroy00 disables, 1 enablesDraw bot seek-and-destroy debug info.
tf_bot_debug_stuck_log[blank by default]stringGiven a server logfile visually display bot stuck locations.
tf_bot_debug_stuck_log_clearClear currently loaded bot stuck data.
tf_bot_debug_tags00 disables, 1 enablesent_text will only show tags on bots.
tf_bot_defense_debug00 disables, 1 enablesDraw defense areas.
tf_bot_fire_weapon_allowed10 disables, 1 enablesIf zero, bots will not pull the trigger of their weapons (but will act like they did).
tf_bot_force_class[blank by default]stringIf set to a class name, all bots will respawn as that class.
tf_bot_force_jump00 disables, 1 enablesForce bots to continuously jump.
tf_bot_melee_only00 disables, 1 enablesIf nonzero, bots will only use melee weapons

Class Specific


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_pyro_always_reflect00 disables, 1 enablesPyro bots will always reflect projectiles fired at them. For tesing/debugging purposes.
tf_bot_pyro_deflect_tolerance0.5Radian (float)Defines the visible range in which Pyro bots can airblast projectiles.

Technical explanation: Pyro TFBots will not airblast a projectile if the dot product between their normalized vector and a projectile's normalized vector is higher than the negative of this value.
tf_bot_pyro_shove_away_range250Hammer unitsIf a Pyro bot's target is closer than this, then compression (or air)blast them away.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_ballistic_elevation_rate0.01arbitrary floatWhen lobbing grenades at far away targets, this is the degree/range slope to raise our aim.
tf_bot_max_grenade_launch_at_sentry_range1500Hammer unitsDemoman bots will try to launch grenades at sentries in this range.
tf_bot_max_sticky_launch_at_sentry_range1500Hammer unitsDemoman bots will try to launch stickies at sentries in this range.
tf_bot_sticky_base_range800arbitrary integerDemoman bots will charge their stickies if their target sentry is further than this range.
tf_bot_sticky_charge_rate0.01arbitrary floatSeconds of charge per unit range beyond base.
tf_bot_stickybomb_density0.0001arbitrary integerNumber of stickies to place per square inch. (squared hammer unit)


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_debug_sentry_placement00 disables, 1 enablesDraw bot engineer sentry placement debug info.
tf_bot_engineer_building_health_multiplier2unknown typeUnused.
tf_bot_engineer_exit_near_sentry_range2500Hammer unitsMaximum travel distance between a bot's Sentry gun and its Teleporter Exit
tf_bot_engineer_max_sentry_travel_distance_to_point2500Hammer unitsMaximum travel distance between a bot's Sentry gun and the currently contested point
tf_bot_engineer_retaliate_range750Hammer unitsEngineer bots will attack if the attacker who destroyed sentry closer than this, otherwise the engineer bot will retreat.
tf_bot_min_teleport_travel3000Hammer unitsMinimum travel distance between teleporter entrance and exit before bot will build one.
tf_bot_max_teleport_entrance_travel1500Hammer unitsDon't plant teleport entrances farther than this travel distance from our spawn room
tf_bot_max_teleport_exit_travel_to_point2500Hammer unitsIf an offensive engineer bot's tele exit is farther from the point than this, then destroy it.
tf_bot_teleport_build_surface_normal_limit0.99Hammer unitsIf the ground normal Z component is less that this value, Engineer bots won't place their entrance teleporter.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_medic_cover_test_resolution8arbitrary floatDetermines the angular increment when scanning for players to heal.
tf_bot_medic_debug00 disables, 1 enablesDraw debug info for medic bots.
tf_bot_medic_max_call_response_range1000Hammer unitsCalls for medic within this range will be heard.
tf_bot_medic_max_heal_range600Hammer unitsBot medics will heal anyone within this range.
tf_bot_medic_start_follow_range250Hammer unitsMedics will start following their patients when in this range.
tf_bot_medic_stop_follow_range75Hammer unitsMedics will stop following their patients when in this range.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_arrow_elevation_rate0.0001Arbitrary floatWhen firing arrows at far away targets, this is the degree/range slope to raise our aim.
tf_bot_debug_sniper00 disables, 1 enablesDraw Sniper bot debug information.
tf_bot_sniper_aim_error0Hammer unitsMargin of error in sniper aim radius.
tf_bot_sniper_aim_steady_rate10aribtrary floatDetermines the angle rate at which the bot aim becomes steady.
tf_bot_sniper_allow_opportunistic10 disables, 1 enablesIf set, Sniper bots will stop on their way to their preferred lurking spot to snipe at opportunistic targets.
tf_bot_sniper_choose_target_interval3Seconds (float)How often a zoomed-in Sniper can reselect his target.
Note.pngNote:Currently unused.
tf_bot_sniper_flee_range400Hammer unitsSniper bots retreat if their threat is closer than this range.
tf_bot_sniper_goal_entity_move_tolerance500Hammer unitsHow far a sniper spot can be from the point before being ignored.
tf_bot_sniper_linger_time5arbitrary floatHow long Sniper will wait around after losing his target before giving up.
tf_bot_sniper_melee_range200Hammer unitsSniper bots will attack with melee if their threat is closer than this range.
tf_bot_sniper_patience_duration10arbitrary floatHow long a Sniper bot will wait without seeing an enemy before picking a new spot.
tf_bot_sniper_personal_space_range1000Hammer unitsEnemies beyond this range don't worry Sniper bots.
tf_bot_sniper_spot_epsilon100Hammer unitsMaximum distance between sniper spots to consider them one spot.
tf_bot_sniper_spot_max_count10arbitrary integerStop searching for sniper spots when each side has found this many.
tf_bot_sniper_spot_min_range1000Hammer unitsMinimum length for a sightline to be considered usable.
tf_bot_sniper_spot_point_tolerance750Hammer unitsThe range in which a sniper can stand near a vantage point.
tf_bot_sniper_spot_search_count10arbitrary integerSearch this many times per behavior update frame.
tf_bot_sniper_target_linger_duration2arbitrary floatHow long a Sniper bot will keep toward at a target it just lost sight of.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_debug_spy00 disables, 1 enablesDraw Spy bot debug information.
tf_bot_notice_backstab_chance25arbitrary integerChance for bots to notice backstabs.
tf_bot_notice_backstab_max_range750Hammer unitsMaximum range in which bots will notice backstabs.
tf_bot_notice_backstab_min_range100Hammer unitsMinimum range in which bots will notice backstabs.
tf_bot_spy_change_target_range_threshold300Hammer unitsSpy bots will change to newer targets if their current target is further than this range.
tf_bot_spy_knife_range300Hammer unitsSpy Bots will prefer their knife if their threat is closer than this range.
tf_bot_suspect_spy_forget_cooldown5arbitrary integerHow long to consider a suspicious spy as suspicious.
tf_bot_suspect_spy_touch_interval5ticks (integer)How many ticks back to look for touches against suspicious spies.

Mode Specific

Flag-based modes

Includes Capture the Flag, Special Delivery, Mann vs. Machine, etc.

Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_formation_debug00 disables, 1 enablesDraw bot-formation debug info.
tf_bot_flag_escort_give_up_range1000Hammer unitsBots will give up escorts at this range.
tf_bot_flag_escort_max_count4arbitrary integerMaximum amount of escorters allowed.
tf_bot_flag_escort_range500Hammer unitsBots will escort the flag carrier within this range.
tf_bot_flag_kill_on_touch00 disables, 1 enablesIf nonzero, any bot that picks up the flag dies. For testing.
tf_bot_fetch_lost_flag_time10arbitrary float How long until busy bots drop what they're doing and get the dropped flag.

Mann vs. Machine

Cvar/CommandParameters or default valueDescriptorEffect
tf_mvm_bot_flag_carrier_interval_to_1st_upgrade5Seconds (float)The time before the bomb carrier performs the 1st upgrade.
tf_mvm_bot_flag_carrier_interval_to_2nd_upgrade15Seconds (float)The time before the bomb carrier performs the 2nd upgrade.
tf_mvm_bot_flag_carrier_interval_to_3rd_upgrade15Seconds (float)The time before the bomb carrier performs the 3rd upgrade.
tf_bot_squad_escort_range500Hammer unitsIf a bot is using a melee weapon, close and attack while staying near the leader within this range.
Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_engineer_mvm_hint_min_distance_from_bomb1300Hammer unitsBot engineers will move if the bomb is within this range.
tf_bot_engineer_mvm_sentry_hint_bomb_backward_range3000Hammer unitsHow far the MvM bot engineer can build backward.
tf_bot_engineer_mvm_sentry_hint_bomb_forward_range0Hammer unitsHow far the MvM bot engineer can build forwards.
tf_bot_mvm_show_engineer_hint_region00 disables, 1 enablesShow the nav areas MvM engineer bots will consider when selecting sentry and teleporter hints.
Sentry Buster
Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_suicide_bomb_friendly_fire10 disables, 1 enablesSentry Busters can kill ally bots on its team.
tf_bot_suicide_bomb_range300Hammer unitsSentry Busters will kill players in this range and start detonation in a third of this value.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_cart_push_radius60Hammer unitsMaximum distance in which bots will stay within near the payload to push it.
tf_bot_debug_payload_guard_vantage_points00 disables, 1 enablesDraw vantage points for guarding the payload.
tf_bot_payload_guard_range1000Hammer unitsGuard the payload within this range.



Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_npc_archer_arrow_damage75arbitrary floatDetermines the arrow damage of NPC archer arrows.
tf_bot_npc_archer_health100arbitrary integerDetermines the health of NPC archer bots.
tf_bot_npc_archer_shoot_interval2arbitrary floatDetermines the interval at which NPC archer bots fire.
tf_bot_npc_archer_speed100arbitrary integerUnused.


Cvar/CommandParameters or default valueDescriptorEffect
tf_bot_escort_range300Hammer unitsRaid mode leftover; Bots would've escort anyone within this range if there are no enemies.
tf_bot_min_setup_gate_defend_range750Hammer unitsAn unused ConVar that is supposed to determine how close from the setup gate(s) defending bots can take up positions and what areas would have been determined to be "in cover".
tf_bot_min_setup_gate_sniper_defend_range1500Hammer unitsAn unused ConVar that supposedly would determine the distance from the setup gate(s) a defending sniper would go to "take up position".
tf_bot_max_setup_gate_defend_range2000Hammer unitsAn unused ConVar that would have determined how far from the setup gate(s) defending bots can take up positions.
tf_raid_engineer_infinte_metal [sic]10 disables, 1 enablesCheat ConVar that allows engineer bots to gain 1000 metal each update during Mann Vs. Machine. It is development only.

Bot Names

To go back up to the previous section (ConVars/ConCommands), click here.

The following 4 columns of bot names are what the game uses to randomly set a bot name when creating a bot.

  • Chucklenuts
  • CryBaby
  • ThatGuy
  • Still Alive
  • Hat-Wearing MAN
  • Me
  • Numnutz
  • H@XX0RZ
  • The G-Man
  • Chell
  • The Combine
  • Totally Not A Bot
  • Pow!
  • Zepheniah Mann
  • THEM
  • 10001011101
  • DeadHead
  • MindlessElectrons

  • The Freeman
  • Black Mesa
  • Soulless
  • CEDA
  • BeepBeepBoop
  • NotMe
  • CreditToTeam
  • BoomerBile
  • Someone Else
  • Mann Co.
  • Dog
  • Kaboom!
  • AmNot
  • SomeDude
  • GLaDOS
  • Hostage
  • Headful of Eyeballs
  • CrySomeMore
  • Aperture Science Prototype XR7
  • Humans Are Weak

  • AimBot
  • C++
  • GutsAndGlory!
  • Nobody
  • Saxton Hale
  • RageQuit
  • Screamin' Eagles
  • Ze Ubermensch
  • Maggot
  • Herr Doktor
  • Gentlemanne of Leisure
  • Companion Cube
  • Target Practice
  • One-Man Cheeseburger Apocalypse
  • Crowbar
  • Delicious Cake
  • IvanTheSpaceBiker
  • I LIVE!
  • Cannon Fodder
  • trigger_hurt
  • Nom Nom Nom

  • Divide by Zero
  • MoreGun
  • Tiny Baby Man
  • Big Mean Muther Hubbard
  • Force of Nature
  • Crazed Gunman
  • Grim Bloody Fable
  • Poopy Joe
  • A Professional With Standards
  • Freakin' Unbelievable
  • The Administrator
  • Mentlegen
  • Archimedes!
  • Ribs Grow Back
  • It's Filthy in There!
  • Mega Baboon
  • Kill Me
  • Glorified Toaster with Legs

Unused Bot Names

The following bot names were found in a leaked source code version of TF2, containing bot names that were never put into production for unknown reasons.

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

Code References

  • [1] - game/server/tf/bot/behavior/medic/tf_bot_medic_heal.cpp:CTFBotMedicHeal::IsGoodUberTarget(CTFPlayer *who)
  • [2] - game/server/tf/bot/behavior/medic/tf_bot_medic_heal.cpp:CTFBotMedicHeal::SelectPatient(CTFBot *me, CTFPlayer *current)
  • [3] - game/server/tf/bot/behavior/tf_bot_behavior.cpp:CTFBotMainAction::SelectTargetPoint(const INextBot *meBot, const CBaseCombatCharacter *subject)
  • [4] - game/server/tf/bot/tf_bot.cpp:CTFBot::GetNextSpawnClassname()

See also