wiki:Scenarios

Version 14 (modified by jherwitz, 13 years ago) (diff)

--

Scenarios

Quagents revolves around scenarios. A scenario is designed to be a modular cluster of code consisting of:

  • A unique name.
  • A set of maps which the scenario may be executed on.
  • A set of changes to the server, which constitute global "rule" changes. These must be able to be enabled and disabled using Quagents Configuration Options.
  • Initialization code. This is used for preparing the scenario before launching the GUI or executing core code. E.g., the developer may choose to instantiate and instrument all Quagents before opening access to the user.
  • Execution code. This is the core of the scenario, executed after all other component executions have terminated.
  • (Optional) A GUI for the scenario. This may be used for control or data augmentation.

This page describes currently implemented scenarios that users may immediately access. For more information, see Quagents Application? and Scenario Development?.

Wumpus World

We have simulated the Wumpus World in Quake. The goal is for an agent to explore the Wumpus World and find the gold while avoiding the Wumpus and Pits. The agent starts in the room at the lower left corner of the map. The gold and wumpus are placed in random rooms other than the start room. Each room other than the start can also have a 0.2 probability of being a pit. A stench is perceived in all rooms adjacent to the wumpus. A breeze if felt in all rooms adjacent to a pit. A glitter is seen in the room with the gold.

We have a working demo of an agent exploring the Wumpus World. The agent is able to update its view of the world through what it senses in each room. The agent uses breadth first search to plan a path from one room to another, only travelling through rooms that it knows are safe, and depth first search to explore the world. We have two maps for the Wumpus World: WumpusWorld.map and Wumpus2.map. We are currently working on generating random maps.

Capture the Flag

We have implemented a Capture the Flag (CTF) scenario into Quake. The goal of this scenario is to produce data on how players act in throughout the course of the game. Currently, the scenario produces tuples of location data, timestamps, and audio tags. This data will be used for further experiments, such as using machine learning to create a general model for Capture the Flag. The scenario could also be extended by replacing human players with collaborative agents.

There are currently two implementations of the CTF scenario implemented in Quagents - one clientside and one serverside:

  • The clientside scenario is implemented using only the Quagents3 Java API. In it, the player controls a Quagent using Java swing listeners. A simple GUI is provided, which provides experiment control. Additionally, audio recording is automatically handled within the client code, so the user need only attach a microphone. For a more detailed description, see Capture the Flag.
  • The serverside scenario is implemented from within the Quake VM. Enabled using Quagents Configuration Options, it automatically records all player's data (as described above) and uses a trap function to write the data to a logfile within the ioquake3 private filesystem. The user must, however, start up an external voice recorder to record audio tags. The Quagents team has provided one of these for general use, located in quagents/client/auxquagents.

It is important to note that this scenario is distinct from the native Quake 3 Capture the Flag mode. The goal of the scenario is to produce usable data for further research, not to "win" the game and get the highest score.

Sandbox

This scenario is to allow users to easily experiment with Quagents. It provides a simple framework which users may insert code into, so users need only worry about the Quagent code execution, and not the macroscopic scenario model.

Cave Exploration

This scenario gives the user control over a team of Quagents attempting to search and rescue trapped miners after a mining accident. The user controls the Quagents indirectly, via behaviors accessible through drop-down menus in the scenario GUI. Using these behaviors, the user must collaborate with the agents to effectively explore the map and rescue the survivors.

Maze Solution?

This scenario generates a random map and creates a Quagent to solve it. Useful for classroom learning applications. Not yet implemented.