Waypointing For PODBot v1.0 to v2.6

 

All Waypoint Makers please read:

Commands where an "x" is displayed means that u must substitute a value for "x"

With Commands "debuggoal x", "waypoint find x", "pathwaypoint add x" and "pathwaypoint delete x", the "x" must be replaced by a valid waypoint number. With "waypoint setradius x", you manually assign a new value ranged from 0 to 128.

To PODBot v1.2 and v1.3 Waypoint Makers please read:

If you previously did some waypoints for POD-Bot you will notice some differences. First, you are now allowed to have connections between 8 Waypoints at the same time (was 4 before). Also the Wayzone Radius gets calculated instantly now when placing a waypoint (makes "wayzone calcall" somewhat obsolete). And even more important you should now do lots of waypoints since the Bots will try to vary them. Also try to place waypoints at Places where you would like them to take cover (see below for a more lengthy explanation).

First, before you start doing waypoints because you desperately need of them, for a custom map you want to play, try do google search (You don't necessarily have to use google) for them use keywords like 'waypoint' 'packs' (if u want packs) 'podbot' there are also many people who do excellent waypoints so if u like the waypoints of a particular map, pay attention to the name that gets displayed at the beginning of a map to see who made the waypoints and you could search their name too.

Team specific paths has been removed, since the Bots should be free to walk everywhere (and I secretly hated to do waypoints for every team).

Waypoints, what are they ?

Waypoints are locations in the maps that the bots will use when navigating. They allow the bot to roam about the map without having to blindly bump into walls. Waypoints can be thought of like the bread crumbs in the Hansel and Gretel story. They are something marking a path to make it easier to follow. The waypoints are not displayed while the game is being played. The bots "know" which way to go by following the path laid out by these waypoints.

In order to get the bots to cover the entire map when playing the game, waypoints should be laid out all over the map. Without the waypoints the bots will just randomly run around and will tend to stay in the same area. Waypoints also allow the bot to know where specific goals are in the game. You couldn't play capture the flag unless you knew where the flag was and where the flag needed to be taken after being captured. Waypoints are what makes all of these things possible. Bots with sufficiently advanced waypoint information and algorithms would be able to find the shortest distance between points in the map and navigate from their current position to some goal on the other side of the map.

This document describes the commands needed to create or edit a waypoint file (to be used with POD-Bot). When creating or editing a waypoint file it is best NOT to have any bots wandering around at the same time. Create a LAN\Listen Server game, and join the game then start laying out waypoints for a map. Save the waypoint file, disconnect from the server, then start the game again, this time with the bots to see how well (or poorly) they follow the waypoints you have created.

What do waypoints look like in the game ?

The waypoints are displayed using vertical lines that look like lightning or electric streams. The vertical line used to draw the waypoint is the same height as the player. The point in space at the center of this vertical line is what is actually used as the waypoint. Different Types of waypoints have different colours.

Waypoints are stored in a file with the same name as the map file name but using the extension ".pwf" instead of the map file extension of ".bsp". For example, the waypoint file for the map de_dust would be de_dust.pwf. It will be stored in the cstrike\Podbot folder and then in the folder you specified with wptfolder (defaults to "wptdefault"). Waypoint files are automatically loaded when the map is loaded (if they exist). If the waypoint file does not exist, you will need to create it using the directions contained in this document.

Summary of Waypoint Console Commands:

The following Waypoint commands are available (note these ARE case sensitive):

"waypoint on" - Turns on displaying of waypoints.
"waypoint off" - Turns off displaying of all waypoints.

"waypoint add" - Adds a waypoint at the current player location. A menu will pop up where you have to select the different types of waypoints
"waypoint delete" - Deletes the waypoint nearest to the player.

"waypoint showflags" - Shows all of the Flags which are set manually on this waypoint
"waypoint addflag" - Allows you to manually add Flags to a waypoint.
"waypoint delflag" - Let's you select a waypoint Flag to delete
"waypoint find x" - Shows you the direction to a specific waypoint number x
"waypoint on noclip" - Turns on waypoint editing with noclip cheat. This allows you to fly and you don't collide with walls which is useful for doing swim waypoints.
"waypoint setradius x" - Manually sets the Wayzone Radius for this waypoint to value 'x'
"waypoint stats" - Shows the number of different waypoints you did already set.
"wayzone calcall" - Calculates the Wayzone Radius for all waypoints in the Map. (Obsolete since v1.3 because wayzones are automatically set when a waypoint is created)

"waypoint check" - Checks if all Waypoints are valid (automatically done when saving them too)
"waypoint save" - Saves the current waypoint list to a file (with Waypoint and Path Checking)
"waypoint save nocheck" - Same as above but forcing to save even if they are full of errors..
"waypoint load" - Loads the waypoint list from a waypoint file (and initialises all Data's).

"autowaypoint" - Displays the status of the autowaypoint setting.
"autowaypoint on" - Turns on autowaypoint setting.
"autowaypoint off" - Turns off autowaypoint setting.

"pathwaypoint" - Displays the status of the pathwaypoint setting.
"pathwaypoint on" - Turns on the pathwaypoint setting.
"pathwaypoint off" - Turns off the pathwaypoint setting.
"pathwaypoint add x" - Connects the nearest Waypoint to you, with the waypoint whose number specified with Value x.
"pathwaypoint delete x" - Disconnects the nearest Waypoint to you, with the waypoint whose number specified with Value x.

"debuggoal x" - Forces Bots to use Waypoint Nr. x as a Destination Waypoint

To use the waypoint commands, you will have to use the console. You must start the game with the console option enabled (use "hl.exe -console" in the Target: line of a shortcut or use "Half-Life Console" in your SIERRA menu from the Windows Start button). Use the '~' key to bring down the console. Enter the console commands that you wish, then use the '~' key again to return to the game.

You can make things easier by binding console commands to keys on the keyboard. (see: Waypoint Pt2)

Usage of Waypoint Console Commands:

Using "waypoint add" will place a waypoint at the location that the player is currently at in a map. You then have to specify the Type of waypoint you want to place here. Waypoints can be placed anywhere the player can go. When placing a waypoint, you will hear a sound to indicate that the waypoint has been dropped (the sound is the same sound the crossbow bolt makes when striking an wall).

Using "waypoint delete" will remove the waypoint closest to the player. The waypoint MUST be within 40 units from the player (about 1/2 the player height) in order to be removed. You will need to stand fairly close to the waypoint to be able to remove it. This prevents you from accidentally removing a waypoint on the other side of the room. When removing a waypoint you will hear a sound indicating that the waypoint was removed (the same sound the tripmine makes when placed on a wall).

The "waypoint addflag/deleteflag" gives you some additional options for waypoints. The first, "blockwithhostage" is rarely used. If you set this flag on a waypoint Bots won't take this waypoint if a hostage is following them. With the other two, you can make a campwaypoint team-specific.

Using "waypoint save" will save the waypoint data to the waypoint file. Before saving (if you didn't add the 'nocheck' argument, the Waypoints and Paths will be checked for major mistakes and if something is wrong you'll be told so and nothing will be saved. During the checking time CS freezes and depending on the speed of your computer it could easily last for a minute. Don't worry your computer hasn't crashed!
Waypoint files will have the same name as the current map with an extension of ".pwf". The file will be saved into the "cstrike/podbot" Folder. Your current player name will be saved as the waypoint file creator.

Using "waypoint load" will clear out all waypoints in the current map and load them from the waypoint file in the maps folder. This is a good way to undo a bunch of waypoints that you have created but do not wish to save. There is no way to undo a single waypoint. You will have to use the "waypoint delete" command to remove waypoints one-by-one.

The "autowaypoint" command allows you to automatically drop waypoints as you run around in a map. To turn autowaypointing on use "autowaypoint on". As you run around the level waypoints will be dropped every 200 units automatically. No waypoint will be dropped if another waypoint is already within 200 units of your current position. So if you want to place lots of waypoints fairly close together you may have to manually place some of
the waypoints using the "waypoint add" command. Autowaypointing keeps track of where the last waypoint was dropped (either manually or from autowaypointing) and will place another waypoint when you are 200 units from the last waypoint. If you don't like where autowaypointing placed a waypoint and want to move it a little bit, you can delete the waypoint using "waypoint delete" (but turn off autowaypointing before, since it will place a new waypoint otherwise).

When using autowaypointing, try to stay in the center of narrow hallways and always place a waypoint on BOTH sides of a door. You may have to place some of these waypoints manually using "waypoint add" since places like intersections of hallways and doorway entrances and exits don't usually fall exactly at the location where autowaypoint would want to place a waypoint.Don't use autowaypointing for locations like ladders or jumps!

The pathwaypoints allows you to see what the bots would consider to be a valid path from one waypoint to other waypoints. Turn pathwaypoints on using "pathwaypoint on" and whenever you get close to a waypoint, yellow or white lines will be drawn to all of the other waypoints that the bot would consider to be 'reachable'. If the connection is a two-way connection the line is yellow, one-way connections appear white. These 'reachable' waypoints would be waypoints that are clearly visible from the current location. Certain waypoints will be disallowed as reachable for one reason or another. For example, waypoints suspended in mid-air above the bot would not be considered reachable since the bot couldn't jump high enough to get to them. Also waypoints that are too far away from the current location would not be considered reachable. You may have waypoints that are close enough to each other, but across a wide gap that would be too wide to jump. If the far waypoint is close enough and clearly visible, it would still show as 'reachable' since I currently don't have a method to determine if the bot can get to that waypoint or not.

The bots will ONLY move from one waypoint to another if there is a path between them. Get in the habit of turning on the pathwaypoint setting when creating  waypoint files so that you can see the waypoint paths and will know whether or not a path exists between two waypoints. Also get in the habit of checking that paths exist BOTH WAYS between waypoints. Just because a path is drawn from point A to point B, doesn't mean that a path exists from point B to point A.

The "pathwaypoint add x " command allows you to manually assign a path between 2 waypoints. This is needed in some cases where the waypoints are blocked (by doorways or other objects) and you wish to create a path between these waypoints. Also ladder waypoints need to be manually connected most of the time. Move close to the waypoint you wish the path to start from and use the "pathwaypoint add x" command.
Of course the "x" must be replaced by a valid waypoint number. The actual Waypoint Number you're standing on, will be shown in the upper corner of your HUD (if you turned pathwaypoint on). For example to manually assign a path between Waypoint Nr. 250 and 251, you first should stand in the near of Waypoint Nr. 250. Then type in: "pathwaypoint add 251" and it will get connected. You should now see a white waypoint path line being draw from the start waypoint to the end waypoint. Note that this is a ONE-WAY connection. If you wish to create a path back in the other direction you will have to start with the second waypoint and end the path back at the first waypoint.

A 1-Way Connection

A 2-Way Connection

2 Way

The "pathwaypoint delete x" command is just like the "pathwaypoint add x" command except that it removes a path (connection) from the starting point to the ending point. This is necessary in some cases where you may have a door that opens from one side and allows you to go through but once the door closes you can't go back through the other way.

When adding waypoints use the pathwaypoint feature to verify that waypoints are actually reachable. Sometimes you add a waypoint and it appears close enough and it also appears to be in plain sight, but the Half-Life engine doesn't indicate that the waypoint is 'reachable'. Be sure to check this in BOTH directions when defining a waypoint path. Usually you don't have to be too careful about waypoint placement, but in some situations, you may have to spend more time carefully laying out waypoints to get them to be 'reachable' (ladders are a good example).

To set Crouch waypoints, simply crouch when adding the waypoint. You will notice that the waypoint line is shorter than a Normal waypoint.

Try placing waypoints at intersections in hallways (do use some "important" waypoints at crossings). Try not to place waypoints in places where the bots would bump into corners of walls or other obstacles when trying to get from one waypoint to the next. Remember the bots won't always take what you consider to be the 'obvious' choice when choosing the next waypoint. Try to limit the choices that they have to keep them from heading off in the wrong direction. Also remember that the Bots could go backwards in a fight and might not find a waypoint. In that special case they wouldn't find a near enough waypoint (they only search in-between 200 Units) and get stuck forever. Since v1.4 it's important to have a lot of waypoints together to allow the Bots a wider choice. Also put some waypoints in corners or behind walls/doors so they can take good cover positions. The Bots will try to take cover at waypoints not seen by the enemy and  the one's with the smallest wayzone radius in their range 

What are the Wayzones?

Bots will pick a point inside this radius for their destination origin (based on things like orientation etc.), this just makes movement not that "static". Ladder waypoints, camp waypoints and goal waypoints will always have a radius of 0. Don't try to change it! After POD-Bot calculated all Zones you should walk all over your waypoints to verify that they are reachable within their radius. Try to be careful with the radius. If your path bends around corners it's better to lower the radius. You should set the radius to 0 if the Path goes through some narrow doorways or similar. You manually assign a new value by standing near to the waypoint and typing "waypoint setradius x". Valid ranges are 0-128. The bigger, the wider it is. You'll also notice, if you turned on pathwaypointing some lines will show you the radius of the actual waypoint (if it's not 0).

Type of Waypoints:

"Normal Waypoint" (also known as Standard Waypoint) sets a Waypoint which is used for normal walking from one point to each other. From v1.4 on you should place lots of them (but still caring for some distance between them), since the Bots use them for hiding and varying their paths. Colour is green.

A Normal Waypoint

Normal Wp

"Terrorist Important Waypoint" and "Counter Important Waypoint". These are strategically waypoints for that team, bots use these waypoints to patrol the map and how they use this, heavily depends on the map type.
In a DE_ Map you should place a lot of Counter Waypoints around the Bomb Plant Zone and only 2 or 3 strategically waypoints for Terrorists.
On a DE_ Map Counter Bots will most of the time pick a Counter Waypoint as a destination and only sometimes pick a Terrorist waypoint. Terrorists are allowed to pick any of them as a Goal waypoint. This behaviour changes with the map type, in a CS_ map for example it is vice versa.

It helps to think of the important waypoints like strategically positions in a sports game. Imagine the team which defends the Map Goal is the 'Home Team' and the other one is the 'Away Team'. Now you need to have more important waypoints for the Home Team, because the Away Team will go for them anyway. On a DE_ Map the CT Team is the Home Team, on a CS_ and AS_ Map the Terrorist Team is the Home Team. The average number of 'Home Team' Important Waypoints should be about twice as much as the important waypoints for the 'Away Team'. Terrorists Waypoint Colour is red, Counter Waypoints are blue.

A Terrorist Important Waypoint

Terrorist Wp

A Counter-Terrorist Important Waypoint

Counter Terrorist Wp

"Ladder Waypoint"
These need to be placed on a ladder if you want the Bots to climb it. Set the bottom waypoint at a position where you're already "stuck" to the ladder. At the top of the ladder you should place another ladder waypoint. Set this at a position where you can hardly look ever the edge. If the ladder is quite a long one, you might want to place another ladder waypoint in between the other ones. In most cases you need to connect the waypoints manually by using pathwaypoint. If there is no connection between the waypoints the Bots won't climb the ladder! Colour is pink.

A Ladder Waypoint

Ladder

"Rescue Waypoint"
This is only needed on Hostage Maps. It's the location where you want the Counter-Terrorist Bots to rescue the hostages. Usually only 1 is needed (depending on how much Rescue Zones there are it might be more). Colour is white.

A Rescue Waypoint

Rescue Wp

"Goal Waypoint"
Place this at a position where Goals of the Map need to be achieved. In DE_ maps this is a bomb plant spot and on CS_ maps Counter-Terrorist look here to rescue some hostages. In AS_ maps these are the Escape points for the VIP. Colour is pink same as Ladder waypoints.

A Goal Waypoint

"CampStart Waypoint"
This is a camping waypoint (also known as Sniper Waypoint). To place it, look into the direction you want the Bot to start looking at when camping. To let him crouch at that position just press the duck button while adding it. You also need to specify the:

"CampEnd Waypoint"
Selecting this will set the end direction for the Bot to look at when camping. Look straight into the direction where you want the Bot to look and select it. Note: you can't set a campend waypoint before doing a campstart waypoint. Colour is cyan, if you made it team specific it will have a touch of Red if it was specifically for Terrorist  or Blue if it's for Counter-Terrorist.

A Camp Waypoint where the Bot will duck while camping

"Jump Connection "
This is the very first of the upcoming learning Features in PODBot. By selecting it, your moves will be monitored and if you jump, a normal waypoint will be placed at the position you started to jump and another will be placed where you landed. The Waypoint Type as said before is a Normal waypoint but a red connection line will show you that there is a jump connection between the two. But it doesn't necessarily have to be between Normal waypoints you could have it between any two waypoints. You can also create jump connections between already existing waypoints, just make sure you're in the near of the first when jumping and land in the near of the destination waypoint. Note that this will adjust the waypoints origin on the average position of the previous position and your jump position. You can even have the Bots jump to a ladder or do several jumps after each other!

Waypoints connected with a Jump Connection

Jump Wp

"Crouch Waypoint"
To set a Crouch waypoint, just keep holding your 'duck' key when adding the waypoint. After when u look back at it should be half the size of you. This can be done using any waypoint above but is normally done for Normal waypoints. Bot will crouch automatically when approaching a Crouch waypoint (if it's not a camping waypoint).

A Crouch Waypoint

Now that that's explained Happy Waypointing!