This waypoint tutorial was created by Jowo and Envinyatar.
1. SturmBot 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. 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. Waypoints are what makes all of these things possible. Bots with sufficiently advanced waypoint informationand algorithms would be able to navigate from their current position to somegoal on the other side of the map.
This document describes the commands needed to create or edit a waypoint file.When creating or editing a waypoint file it is best NOT to have any bots wandering around at the same time. Create a LAN game, and join the game then start layingout waypoints for a map. Save your waypoints often, use the "waypoint quicksave" if the normal save is too slow. Disconnect from the server, then start the game again, this time with the bots to see how good (or poorly) they follow the waypointsyou have created.
2. What do waypoints look like in the map?
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 colors.
Waypoints are stored in a file with the same name as the map file name but using the extension ".wpt" instead of the map file extension of ".bsp". For example, the waypoint file for the map dod_caen would be dod_caen.wpt. It will be stored in the Half-Life\DoD\SturmBot\waypoints folder. 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.
3. Waypoint Console Commands
The following Waypoint commands are available (note these ARE case sensitive):
|editwaypointmenu||Displays the "Waypoint Menu" (See below).|
|waypoint on||Displays all waypoints.|
|waypoint off||Hides all waypoints.|
|waypoint add||Adds a waypoint at the current player location.|
|waypoint readd||Creates paths from the last added waypoint to the other surrounding team-specific waypoints, and simultaneously removes any paths that are not of the same team as the last added waypoint. This also works for waypoints that are not team-specific as well.|
|waypoint delete||Deletes the waypoint nearest to the player.|
|waypoint save||Saves all waypoint data to a file, and also generates all routes (this may take some time).|
|waypoint quicksave||Saves all waypoint data to a file (without generating routes).|
|waypoint load||Loads all waypoints for the current map.|
|waypoint menu||Brings up a menu were you can edit the waypoint options and tags nearest to the player.|
|waypoint team||Turn it off and you will be able to edit waypoints for the other team.|
|waypoint teamspecific||Will make the next waypoint that you add teamspecific.|
|waypoint connect||Brings up a menu where you can select a flag that you wish to connect to your current waypoint.|
|waypoint creator||(See below).|
|waypoint help||Prints all console commands in the console (See below).|
|autowaypoint||Displays the status of the autowaypoint setting.|
|autowaypoint on||Turns on the autowaypoint setting.|
|autowaypoint off||Turns off the autowaypoint setting.|
|autopath||Displays the status of the autopath setting.|
|autopath on||Turns on the autopath setting.|
|autopath off||Turns off the autopath setting (waypoints must be manually connected with pathways).|
|pathwaypoint||Displays the status of the pathwaypoint setting.|
|pathwaypoint on||Displays all paths.|
|pathwaypoint off||Hides all paths.|
|pathwaypoint create1||(See below).|
|pathwaypoint create2||(See below).|
|pathwaypoint remove1||(See below).|
|pathwaypoint remove2||(See below).|
|ways||Displays the status of the ways setting.|
|ways on||Displays all routes.|
|ways off||Hides all routes.|
|ways rebuild||Rebuild all navigation routes.|
|ways create1||Manually start building a route (very rarely used).|
|ways create2||Manually finnish a route (very rarely used).|
|ways remove1||Manually start deleting a route (very rarely used).|
|ways remove2||Manually removes a route (very rarely used).|
|connection create1||Start creating a connection.|
|connection create2||Creates the connection.|
|connection remove1||Start removing an connection.|
|connection remove2||Removes the connection.|
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 your DoD 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 consolecommands 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. Just type "bind" followed by the key you want to bind to, followed by the console command. You will have to use double quotes on the console command if it's more than one word. Here is an example of console commands that help when editing waypoints:
bind n "waypoint add"
bind m "waypoint delete"
bind l "waypoint menu"
bind o "waypoint info"
The 'a' key will manually add a waypoint. The 'd' key will delete a waypoint. The 'l' key will open the waypoint menu (if you are close enough to a waypoint) and the 'o' key will print the information about the waypoint nearest to you .
4. The Waypoint Menu
Typing "editwaypointmenu" in the console will display the following "Waypoint Menu":
Waypoint Menu 1. Add waypoint 2. Delete waypoint 3. Load waypoints 4. Save waypoints 5. Paths 1. Show paths 2. Don't build paths 3. Add path 4. Delete path 5. CANCEL 6. Waypoint Info 7. Waypoint Options/Tags 1. Crouch Jump 2. Door Waypoint 3. Bazooka Target 4. Sniper Spot 5. MORE... 1. Flag Location 2. Capture/Bomb Location 3. Object Location 4. Precision Waypoint 5. MORE... 1. Guard Spot 2. Bottom Ladder 3. Button Waypoint 4. Navigation Waypoint 5. MORE... 1. Break Waypoint 2. Capture Area 3. Wait Waypoint 4. Sprint Waypoint 5. MORE... 1. Obstruction Waypoint (Bazooka) 5. CANCEL 9. CANCEL
5. Placing Waypoints
Turn on the displaying of waypoints and paths between waypoints by typing "pathwaypoint on" in the console.
By presing the key you have bound to "waypoint add" a waypoint will be added to your current location. 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. You then have to specify the type of waypoint by pressing the key you have bound to "waypoint menu". You should place lots of waypoints (but still caring for some distance betweenthem), since the Bots use them for hiding and varying their paths.
6. Types of Waypoints
There are different types of waypoints. All of the following waypoints can be placed by using the "waypoint menu" while standing on the waypoint that you wish to change properties for.
This will force the bots to crouch when they are heading for the waypoint. These waypoints are automatically created if you crouch while adding a waypoint.
Forces the bot to crouch and jump when he is heading for this waypoint. Place this one on the top of an obstacle which you want the bots to jump over. Note: Make sure that the object isn't too high to actually jump over.
The bots will slow down and push the "use" button when it is heading towards a door waypoint.
Explanation: Going through doors is not the easiest maneuver for the bots. Most doors need to be pushed open. In addition to that, there is also a delay for the door to swing open wide enough, and then the door closes. Also, the bots tend to "look" left and right as they walk. When they are looking around and encounter a door (and happen to be looking left or right at the same time), the door may open towards them in the wrong direction.
To help with these issues, we have the "door waypoint". The door waypoint prevents the bots from looking sideways, and also forces them to pause for a short period. Note: Place a door waypoint in the middle of the door frame.
The bots will use their bazooka at this location. Make this waypoint a "break" waypoint and an "obstruction" waypoint if the bots need to break a wall or something to get through.
This will force the bot to snipe at that place. The bots will look at the same direction as you when you changed the waypoint to a sniper spot
This will let the bot know where he can find a flag. Make sure you place these exactly at the same point as the flag.
The bot will leave the object or the bomb at this location. Make this waypoint a "break" waypoint if the bots need to break a wall or something to get through.
This will let the bot know where he can find an object or a bomb. The bot will try to find a capture waypoint as soon as he has picked up the object.
The bot will make sure he "hits" the waypoint before he continues (useful if the bots get stuck because they turn to the next waypoint too early).
This waypoint works the same as the sniper waypoint. Place it close to a flag, and the bots will guard it if necessary. Place these behind turrets or mounted machine guns (along with a "Button Waypoint") if you want the bots to use them. The bots will also head towards a guard waypoint if their team is defending.
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 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 will need to connect the waypoints manually by using "pathwaypoint create1" and "pathwaypoint create2" (See below) For better climbing, use a "Bottom Ladder" waypoint at the bottom of the ladder so they will jump off the ladder. If there is no connection between the waypoints the bots will NOT climb the ladder!
The bot will try to push the nearest button when it has reached a button waypoint.
The bots will shoot breakable objects at this waypoint (breakable windows, doors, mortars, etc...). If the waypoint is also a bazooka or a capture waypoint, then they will use their bazooka / bomb to break it. If a bot doesn't have a bazooka or a bomb, then he won't try to use this waypoint unless it's already destroyed.
This will let the bot know that it have to hold this area for a time, and in some cases be at least 2 or 3 players to capture it.
You have to connect this waypoint with the nearest flag waypoint so the bot knows which team that controls the area.
You can do this exactly the same way that you add a path between waypoints (See below), but exchange the "pathwaypoint create1/create2" command to "connection create1/create2". Or, simply use the "waypoint connect" command when you stand at the capture area waypoint.
The bots will wait until there are no other players at the next waypoint (useful if the bots congregate and get stuck in "choke" areas, such as narrow doorways).
The bots will run when towards this waypoint as they approach it. Note that SturmBots do NOT loose stamina when they are running (like the human players do)!
"Obstruction Waypoint" (Bazooka)
This waypoint is used in conjunction with a "bazooka target" waypoint, and a "break" waypoint. The addition of this waypoint instructs the bots that this obstruction will need to be destroyed in order to pass through.
Compared to only a simple "bazooka target" waypoint (which is generally used for map objectives that need to be destroyed in order to win the map; such as tanks, gun placements, etc...), this waypoint instructs the bots that the obstruction only needs to be destroyed with a bazooka in order to navigate through the area.
7. Navigation Waypoints
Navigation waypoints are used for better bot navigation. If no navigation waypoints exist, the bots will always use the shortest path (and won't "learn" which paths are most dangerous). Navigation waypoints shall be placed where the bot diverge to other routes, near goals (like flags or capture waypoints) and in the middle of some long routes.
You can place Navigation waypoints by using the "waypoint menu" while standing on a waypoint that shall become a navigation waypoint. If the waypoint you are standing at is non-teamspecific, then it will make 2 waypoints (one for each team).
After placing some navigation waypoints, you will have to rebuild the navigation routes (using the command "ways rebuild"), and then save the waypoints in order to make the bots use them and learn from them. Turn on the displaying of the ways by using "ways on" and add new navigation waypoints where it's necessary.
Fig. 1 Fig. 2
Navigation waypoints are created at the start of the map and on the flag.
A navigation waypoint is placed in the middle of the long route.
8. Miscellaneous Waypoint Information
If you want to see a list of all waypoint commands while playing, you can type "waypoint help". You will then see a list of all waypoint commands used by SturmBot in the console.
Manually Creating a Path
Type "pathwaypoint create1" when you are standing at the waypoint the path should start at. Run to the next waypoint and type "pathwaypoint create2".You can do the same to remove paths by using "pathwaypoint remove1" and "pathwaypoint remove2"
Note: If you want the path to be a two-way path (not just a one-way path), you will have to do the same again but start at the waypoint without any path.
Waypoint Creator Information
You can let SturmBot show a message when the map starts by using the "waypoint creator" command. Here is an example
waypoint creator command "This message will be shown when the map starts. \n This is a new line."
After you have placed some waypoints and added a bot to test how good the waypoints are, the bot might spin and say "Warning no route from waypoint *** to waypoint ***".
This is probably because you haven't saved your waypoints after you have changed some of them, or because there actually is no path from the waypoint that the bot is standing near to the waypoint he is talking about. To fix that, find the waypoints by using the "waypoint find" command (See below), and then check if there are any paths from the waypoint to another.
Finding a Specific Waypoint
To find a specific waypoint, you will have to enter the command "waypoint find ***", where "***" is the number of the waypoint that you want to find. You will then see a light beam from your current position to the waypoint that needs to be found.
Forcing a Bot to go to a Specific Waypoint
You can force all of the bots in the game go to a specific waypoint by entering the command "waypoint test". All bots in the game will react, and try to find the waypoint nearest to you.
This can be very useful if you want to test if the bots can get up a specific area in the map (e.g. a sniper location, an area where a bot must jump, etc...).
Join a team (i.e. do not play in "spectator" mode), and type "flagdebug" in the console window. This will list the various flag entities in the map.
If you assigned the waypoints properly, this command will also list the teams associated with the flag entities in the map like the following example (example using the map "DoD_Avalanche"):
Controllpoint 0 (POINT_AXISSTREET) index = 4 team = 2 alliedwpt = 158 axiswpt = 202 Controllpoint 1 (POINT_AVALANCHE_MARKET) index = 2 team = 0 alliedwpt = 16 axiswpt = 375 Controllpoint 2 (POINT_ALLIEDSTREET) index = 0 team = 1 alliedwpt = 2 axiswpt = 237 Controllpoint 3 (POINT_AVALANCHE_AXISGUNPOSITION) index = 3 team = 2 alliedwpt = 3 axiswpt = 377 Controllpoint 4 (POINT_AVALANCHE_ALLIEDGUNPOSITION) index = 1 team = 1 alliedwpt = 4 axiswpt = 378
Phew! I hope I didn't miss anything. Remember... the better the waypoint file, the more fun it is to play with the bots! If they are stuck somewhere on a map, it's usually the fault of the waypoint file creator.
Happy SturmBot Waypointing!
This waypoint tutorial was created by Jowo and Envinyatar.