Wumpus World
The Wumpus World scenario represents the canonical Wumpus World AI problem, as presented by Russell & Norvig. Essentially, this involves an explorer attempting to navigate a map to find a treasure. He must navigate through obstacles - monster-like Wumpi and dangerous pitfalls. The explorer may identify these dangers by perceiving identifiers. For example, a stench indicates a Wumpus in an adjacent room and a breeze indiciates a pit in an adjacent room. Using this knowledge, the explorer must utilize AI techniques to safely navigate the maze, find the treasure, and return to the entrance.
Quagents implementation of the Wumpus World
Top Left - Quake III Wumpus World map. This is navigated in realtime using Quagents
Right - Dynamic graphical representation of explorer's internal state.
Making the Wumpus World
- Items: In the Wumpus World, the quagent must be able to perceive senses in each room to update it's knowledge of the world. Items are used to represent the different senses. The classnames of the items are "quagent_sense_breeze", "quagent_sense_stench" and "quagent_sense_glitter". There items are defined in bg_misc.c and are of type IT_QUAGENTSENSE. For more detail about how to create item, see ioquake3 "Adding New Items". Some code was then added to the server so that all IT_QUAGENTSENSE items would become invisible but still exist in the game. The quagent is still able to perceive these 'senses' by calling the radar function. The gold is also represented by an item we have created called "quagent_item_gold" of type IT_QUAGENTITEM. This is the type of item that quagents can pick up and put down.
- Maps: The Map Editor is used to create maps for the Wumpus World. First, create a map with MxN rooms. To make a pit, use the trigger_hurt option to make a brush that will hurt a player if he touches it, and place it in the rooms where there is a pit. We are currently working on representing the Wumpus as another quagent. For now, you can do the same thing you did for the pits. You can not use the map editor to place the senses and gold directly onto the map. Instead, use the default quake items and rename them in the .map file. For example, use "item_health_small" to represent breezes and place them in the center of rooms where there is a breezes. Then, open up the .map file and change the class name to the item you want, in this case, "quagent_sense_breeze". Once you are done making the map, follow the rest of the directions in the map editor page to create the .bsp and .aas files. Make sure to keep the size of the rooms the same and remember that size. We are currently working on generating random maps.
Using the Wumpus World
- Movement: The quagent starts at the center of the lower leftmost room. To move the quagent to an adjacent room, simply face that direction and call the moveBy command and move by the size of a room. The quagent will only need to face east, north, west, or south which are represented in quake as 0, 90, 180, and 270 degrees respectively.
- Sensing: Each time the quagent enters a new room, call the radar function using half the room size as the range. The quagent will always be at the center of the room so a larger radius will allow it to find entities in surrounding rooms which is wrong.
- Gold: The gold is not picked up automatically like the default quake items. Call the pickup function to pick up the gold when it is within the quagent's bounding box.
- Wumpus: Once we have a real Wumpus representation, tell the quagent to face the direction it believes the Wumpus is in and call the fireweapon function.
Attachments (1)
- wumpusworld.png (253.2 KB) - added by jherwitz 13 years ago.
Download all attachments as: .zip