Skip to content

YaPB (Yet Another Ping Bot)

CSRetro vendors YaPB under client/3rdparty/yapb/ and installs it as a Metamod plugin (dlls/csr_yapb_amd64.so on 64-bit Linux). YaPB is not part of the ReGameDLL game DLL — it is a separate native plugin loaded by Metamod.

Version and vendored tree revision: see VENDOR.md, Vendor table (VENDOR.md), and csr version / meta list at runtime.

Source of cvar names in this build

YaPB registers most plugin cvars with the prefix yb_ (product.cmdPri is yb in client/3rdparty/yapb/inc/product.h; see ConVar::setPrefix in client/3rdparty/yapb/src/engine.cpp). Var::GameRef entries keep the engine cvar name (no yb_ prefix) — they mirror existing game variables.

The complete set for this vendored tree is defined in client/3rdparty/yapb/src/*.cpp (search for ConVar cv_). The tables below list every registered name; use cvarlist yb_ on a running server to see live values.

What you need in CSRetro (paths)

Topic CSRetro path / note
Metamod load addons/metamod/dlls/plugins.ini must list dlls/csr_yapb_amd64.so (or your platform name). See Metamod.
Plugin file cstrike/dlls/csr_yapb_amd64.so after build:full / install.
Config cstrike/addons/yapb/conf/ — YAML configs (YaPB 4.x style); yapb.cfg may apply.
Waypoints .pwf files under addons/yapb/data/graph/ (per-map filenames follow YaPB’s graph naming rules in the vendored sources).
Bots vs ReGame ReGameDLL’s built-in bots use bot_quota etc. and .nav files. YaPB is separate and uses its own waypoint system — do not mix the two. See Client (section YaPB — Yet another Podbot).

Server CVars — yb_* (vendored registrations)

Registration strings are shown as yb_<name> as exposed in-game. Defaults are typical build-time defaults from source; a running server may differ after configs.

CVar Default Description
yb_has_team_semiclip 0 When enabled, bots do not avoid teammates (assumes semiclip plugins).
yb_graph_slope_height 24.0 Max slope height change for jump links on generated graphs (bounded).
yb_graph_fixcamp 0 Do not “fix” camp directions when loading old PWF.
yb_graph_url (product default) URL to download a missing graph; empty disables download.
yb_graph_url_upload (product default) URL for graph upload to database.
yb_graph_auto_save_count 15 Auto-save graph every N nodes placed (editor).
yb_graph_draw_distance 400 Max distance to draw graph nodes from the editor view.
yb_graph_auto_collect_db 1 Allow exchanging graph files with the graph database.
yb_graph_analyze_auto_start 1 Autostart analyzer when other cases fail.
yb_graph_analyze_auto_save 1 Auto-save analysis results and re-add bots.
yb_graph_analyze_distance 64 Minimum distance between analyzer nodes (bounded).
yb_graph_analyze_max_jump_height 44 Max jump height for reachability tests (bounded).
yb_graph_analyze_fps 30.0 Analyzer tick rate to avoid freezing (bounded).
yb_graph_analyze_clean_paths_on_finish 1 Remove unnecessary paths when analysis finishes.
yb_graph_analyze_optimize_nodes_on_finish 1 Merge nearby highly-connected nodes when finishing.
yb_graph_analyze_mark_goals_on_finish 1 Mark goal nodes automatically when finishing.

Pathfinding

CVar Default Description
yb_path_heuristic_mode 0 Heuristic mode for pathfinder (debug; bounded).
yb_path_floyd_memory_limit 6 Floyd–Warshall memory cap (MB); falls back to Dijkstra.
yb_path_dijkstra_simple_distance 1 Use simple distance when Floyd matrices are unavailable.
yb_path_astar_post_smooth 0 Post-smoothing for A* paths.
yb_path_randomize_on_round_start 1 Randomize pathfinding each round start.

Quota, join, and autovacate

CVar Default Description
yb_autovacate 1 Kick bots to make room for humans.
yb_autovacate_keep_slots 1 Slots reserved for humans (bounded).
yb_kick_after_player_connect 1 Kick a bot when a human joins (requires autovacate).
yb_quota 9 Target bot count / fill behaviour (bounded).
yb_quota_mode normal normal, fill, or match (see in-code help).
yb_quota_match 0 Used when mode is match (bounded).
yb_quota_adding_interval 0.10 Interval for adding bots (bounded).
yb_quota_maintain_interval 0.40 Interval for quota maintenance (bounded).
yb_think_fps 30.0 Bot think rate per second (bounded).
yb_think_fps_disable 1 Disable think FPS on Xash3D (Xash3D-only flag).
yb_autokill_delay 0.0 Kill bots after N seconds if no humans alive (bounded).
yb_first_human_restart 0 Restart when first human joins a bot-only game.
yb_join_after_player 0 Bots join only after at least one human is present.
yb_join_team any Force all bots to a team.
yb_join_delay 5.0 Delay before bots join after changelevel (bounded).
yb_name_prefix "" Prefix for all bot names.
yb_rotate_bots 0 Randomly disconnect/connect bots (simulated churn).
yb_rotate_stay_min 360.0 Min connected time when rotation is on (bounded).
yb_rotate_stay_max 3600.0 Max connected time when rotation is on (bounded).
yb_restricted_weapons "" Weapon restriction list (string).

Difficulty, skins, scoreboard

CVar Default Description
yb_difficulty 3 Global skill 0–4.
yb_difficulty_min -1 Min random skill on create; -1 uses only yb_difficulty.
yb_difficulty_max -1 Max random skill on create; -1 uses only yb_difficulty.
yb_difficulty_auto 0 Per-bot KD-based balancing.
yb_difficulty_auto_balance_interval 30 Balance interval (bounded).
yb_show_avatars 0 Show bot avatars in scoreboard (Steam friends only).
yb_show_latency 0 Scoreboard latency: 0 none, 1 “BOT”, 2 fake ping.
yb_save_bots_names 1 Persist bot names across changelevel.
yb_botskin_t 0 T-side skin index (bounded).
yb_botskin_ct 0 CT-side skin index (bounded).
yb_preferred_personality none Default personality for quota bots (none, normal, careful, rusher).
yb_language en Language for bot messages/menus.
yb_whose_your_daddy 0 Extra-hard difficulty mode.

Vision, tasks, support

CVar Default Description
yb_max_nodes_for_predict 22 Nodes used to predict enemy path (bounded).
yb_walking_allowed 1 Allow “walk” when enemy may be near.
yb_camping_allowed 1 Allow camping (not bomb/hostage defence tasks).
yb_camping_time_min 15.0 Min camp time (bounded).
yb_camping_time_max 45.0 Max camp time (bounded).
yb_random_knife_attacks 1 Random knife attacks when rushing with no enemy.
yb_display_welcome_text 1 Welcome message to host on game start.
yb_enable_query_hook 0 Fake server query (bots as real players in browser).
yb_enable_fake_steamids 0 Allow fake Steam IDs for bots.
yb_smoke_grenade_checks 1 Smoke affects bot vision (bounded).
yb_greande_checks_radius 220 Smoke check radius (typo preserved from source; bounded).

Engine integration, modes, threads

CVar Default Description
yb_csdm_mode 0 CSDM/FFA mode (0–3; see in-code help).
yb_ignore_map_prefix_game_mode 0 Ignore fy_ / ka_ prefix-based modes.
yb_threadpool_workers -1 Worker threads; -1 uses half of CPU cores.
yb_grenadier_mode 0 Skip grenade throw conditions.
yb_ignore_enemies_after_spawn_time 0 Ignore enemies for N seconds after round start.
yb_breakable_health_limit 500.0 Max breakable health to attack (bounded).

Combat and aim

CVar Default Description
yb_shoots_thru_walls 2 Fire at heard/suspected enemies through walls (bounded).
yb_ignore_enemies 0 Disable enemy search.
yb_check_enemy_rendering 0 Check enemy render flags (mods).
yb_check_enemy_invincibility 0 Check invincibility (mods).
yb_stab_close_enemies 1 Knife stab when close and healthy.
yb_use_engine_pvs_check 0 Use engine PVS for visibility.
yb_use_hitbox_enemy_targeting 0 Hitbox-based targeting (pairs with PVS check).
yb_aim_trace_consider_glass 0 Consider glass in aim traces (special maps).

Bot behaviour (economy, radio, objects)

CVar Default Description
yb_debug 0 Verbosity 0–4.
yb_debug_goal -1 Force all bots to path to node index (bounded).
yb_user_follow_percent 20 Percent of bots that may follow a leader (bounded).
yb_user_max_followers 1 Max followers per user (bounded).
yb_jasonmode 0 Force knife only.
yb_radio_mode 2 0 off, 1 radio only, 2 radio + chatter.
yb_economics_rounds 1 Team buy coordination / eco rounds.
yb_economics_disrespect_percent 25 Ignore eco rules (bounded).
yb_check_darkness 1 Darkness checks (flashlight/NVG).
yb_avoid_grenades 1 Partial grenade avoidance.
yb_tkpunish 1 Revenge on team damage/kills.
yb_freeze_bots 0 Disable bot think (frozen in place).
yb_spraypaints 1 Allow spray logos.
yb_botbuy 1 Allow buying.
yb_destroy_breakables_around 1 Break distant breakables.
yb_object_pickup_radius 450.0 Item search radius (bounded).
yb_object_destroy_radius 400.0 Breakable destroy radius (bounded).
yb_chatter_path sound/radio/bot Chatter sound path.
yb_attack_monsters 0 Attack monsters.
yb_pickup_custom_items 0 Pick up custom items.
yb_pickup_ammo_and_kits 0 Pick up mod ammo/health/suit items.
yb_pickup_best 1 Prefer best weapons.
yb_ignore_objectives 0 Ignore bomb/hostage objectives.

Chat

CVar Default Description
yb_chat 1 Bot chat.
yb_chat_percent 30 Chance for random dead chat (bounded).

Fake ping

CVar Default Description
yb_ping_base_min 5 Min base fake ping (bounded).
yb_ping_base_max 20 Max base fake ping (bounded).
yb_ping_count_real_players 1 Include real player pings in average.
yb_ping_updater_interval 1.25 Fake ping update interval (bounded).
CVar Default Description
yb_display_menu_text 1 Show menu text (Xash3D / Android-oriented flag).
yb_password "" Password value for bot admin commands.
yb_password_key _ybpw setinfo key for password.
yb_bots_kill_on_endround 0 Classic bot kill on end-round from menus.
yb_bind_menu_key = Key bound to open bot menu.
yb_ignore_cvars_on_changelevel yb_quota,yb_autovacate Comma-separated cvars not overwritten on changelevel.

Read-only

CVar Default Description
yb_version (read-only) YaPB build/version string.

Game CVars referenced by YaPB (Var::GameRef)

These register without the yb_ prefix — they mirror existing game/engine variables:

CVar Role
mp_flashlight Game flashlight rule.
mp_limitteams Team limit rule.
mp_autoteambalance Auto-balance teams.
mp_roundtime Round time.
mp_timelimit Map time limit.
mp_freezetime Freeze time.
mp_c4timer C4 timer.
mp_buytime Buy time.
mp_startmoney Starting money.
mp_footsteps Footsteps.
mp_friendlyfire Friendly fire.
sv_gravity Gravity.
sv_skycolor_r / sv_skycolor_g / sv_skycolor_b Sky colour (game DLL).

Console commands

Commands are implemented in client/3rdparty/yapb/src/control.cpp (and related). Use the server console cmdlist to enumerate commands registered by this build, or search that file for BotControl::cmd handlers.

Troubleshooting

Issue Check
YaPB not in meta list plugins.ini, file name, meta load, path under dlls/.
Bots do not move Waypoints (.pwf) for the map; graph download may populate addons/yapb/data/graph/.
Conflict with ReGame bots Disable one system (bot_quota 0 for ReGame, or unload YaPB).

Attribution

YaPB is developed by jeefo and contributors. See Credits for full attribution.