Quagents: An Intelligent Agent Testbed

Welcome to the TRAC home of the Quagents project.

The goal of the project is the development of an immersive, interactive testbed for intelligent agents in realistic environments. This is one part of a broader effort to develop collaborative assistants for team activities in virtual environments. Quagents is primarily based on id Software's Quake 3 source code, although we have explored other platforms also. Quagents is designed to be open-source and freely-redistributable. It has been tested and works on Linux, Mac, and Windows. Our goal is to make Quagents easy to install, easy to use, and easy to develop for, so it can be easily used for AI research and eduction.

This project is supported by the National Science Foundation, Award No. IIS-1016486. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

A standard Quagent.

What is a Quagent?

At the lowest level, Quagents are much like remote control robots. They can move about their area, jump, rotate, and perform basic actions. They have a variety of sensors to gather data about their environment.  Quagents look like characters of the Quake 3 game.


Quagents can be directed by ProtocolZero commands. With ProtocolZero, you act as a client and send commands over a TCP channel to the “remotely controlled” bot. ProtocolZero commands look something like this: "n mo 90 0". These commands can order a Quagent to execute certain predefined actions, such as move indefinitely, or rotate. They can also get information about the state of Quagent, such as its location or the direction its facing. To learn more about how the TCP channel works, read TutorialTelnet.


There is also a level above ProtocolZero, called ProtocolOne. ProtocolOne is the Java API which abstracts the Quagents game engine to a simple Java interface. If you don't want to deal with input/output on sockets, you can do that instead via function calls in java. So instead of typing commands like “n mo 90 0”, quagent.rotate(90) will execute the same thing for you. Using the ProtocolOne java code, you can program different actions and behaviors for the quagents. You can also program Scenarios.


Scenarios are the main part of Quagents. A scenario is essentially an environment with different rules and features that you set up for your quagents to interact in. Scenarios are launched at the start of Quagents. These are the environments in which AI research can be conducted.

This is an example of the Wumpus World Scenario.


Quagents source code can also be modified to accomplish anything else you can't accomplish with the above options, such as creating a new object in the game. For more information about Quagents source code programming, see ioquake3.


All code is released under the GNU General Public License. See details in individual downloads. Binaries are provided with absolutely no warranty or guarantee. Use at your own risk!

Detailed Table of Contents

Last modified 9 years ago Last modified on May 21, 2013 10:51:27 AM

Attachments (4)

Download all attachments as: .zip