Bots on a custom CS 1.6 map do nothing until the map has navigation data. Without it they spawn and stand still, because they have no nodes describing where they can walk, camp, or plant. The two dominant bots — YaPB and POD-Bot mm — use different, incompatible navigation files, and getting them into the right folder is half the battle. This covers both formats and how to create or fetch the data.
1. Know which file your bot uses
The formats are not interchangeable:
- YaPB uses a
.graphfile (its modern navigation format). Newer YaPB builds can also generate a graph automatically. - POD-Bot mm uses a
.pwfwaypoint file (the classic "waypoint" format that predates graphs).
A .pwf from POD-Bot will not drive YaPB and vice versa. Decide which bot you run first; if you are choosing, see installing YaPB. The rest of this assumes you know your bot.
2. Put the file where the bot looks for it
Each bot loads navigation by map name from its own data directory. The files are named after the map (de_rats.graph, de_rats.pwf) and go under the bot's addon folder:
// YaPB addons/yapb/data/graph/de_rats.graph // POD-Bot mm addons/podbot/waypoints/de_rats.pwf
The filename must match the BSP name exactly, or the bot loads nothing for that map. This mismatch — a graph named for the wrong map — is the single most common reason "the waypoints don't work."
3. Fetch an existing graph before making one
Popular maps almost always have community navigation already. YaPB in particular can download a graph for the current map from its online database when one is missing, dropping it straight into data/graph/. If the map is well known, load it, let the bot fetch or check the community waypoint archives, and you may be done without recording anything. Only hand-make navigation for a map that has none.
4. Record nodes in-game
To build navigation yourself, start a local listen server on the map with the bot's waypoint/graph editor enabled, then walk the routes. Both bots expose console commands to add nodes as you move; the workflow is the same in spirit:
- Walk to a spot and add a node; the editor drops a waypoint at your feet.
- Mark special nodes — camp spots, sniper positions, the bomb-plant zone on
de_maps, the goal oncs_maps — using the editor's node-type commands so bots know what to do there. - Let the editor auto-connect nearby nodes into paths, or connect them manually where the auto-linker misses a jump or a ladder.
Cover every route a player would take: both bombsites, every ramp, ladders, and doorways. Bots can only go where a path exists.
5. Save and reload
Save from the editor when the network is complete; it writes the .graph or .pwf under the bot's data folder for the current map. Reload the map to load the fresh file, then add bots and watch them move. Iterate — the first pass always misses a corner.
6. Ship the navigation with the map
If you distribute the map to other servers, include the navigation file. On a server, drop the correct file into the bot's data directory listed above and change the map; no compile step is involved, since navigation is separate from the BSP.
Common errors
- Bots spawn and stand still — no navigation file for this map, or it is in the wrong folder or misnamed. This is the same root cause covered in bots stand still with no waypoints.
- Graph exists but bots ignore it — the filename does not match the BSP name exactly, or you gave a
.pwfto YaPB (or a.graphto POD-Bot). Match the format to the bot. - Bots walk into walls or off ledges — missing or bad path connections. Re-open the editor and fix the links between nodes.
- Bots never plant or defuse — you did not mark the objective nodes (bomb-plant / goal). Add the special node types at those locations.
- Editor commands do nothing — the waypoint/graph editing mode is not enabled, or you are on a real server rather than a local listen server. Edit locally with the editor turned on.
Verification
Load the map, add a few bots, and watch a full round: they should leave spawn, take multiple routes to the objective, use ladders, and plant or defuse. Force a couple of bots to different areas and confirm none get permanently stuck. If a whole region is dead, you are missing nodes there — add them and re-save. For the reverse problem where bots exist but never move at all, work through the no-waypoints fix.









