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.
Navigation and graph
| 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.