V-World is an artificial life programming environment created by Donald Nute at the Artificial Intelligence Center of the University of Georgia. This document is a user's manual for the software. This document is still under construction.


Building V-Agents

Building V-Worlds

The V-World Workbook (Last Revised 11/15/2005)

Download V-World Software (Last Revised12/08/2005)



Introduction to V-World

V-World is a system for developing and testing "softbots", artificial agents that can be inserted into a simulated environment. The V-World driver allows the user to load a "world file" that defines a simulated environment and an "agent file" that defines an artificial agent or softbot. The agent can then "run" in the world that has been loaded. V-World is written in LPA WIN-PROLOG 4.300 and runs under MicroSoft Windows 95, 98, 2000, Me, or XP. It includes a graphic display that allows the user to watch the agent as it moves about and interacts with other actors and objects in the world.

The latest version of the V-World code can be down-loaded as a zipped file by clicking the Download V-World link above. The package includes a stand-alone version of V-World consisting of the two files vworld.exe and vworld.ovl. Sample V-World world files (extension .vw) and one sample V-World agent file (bumble.agt) can be loaded and tested in the stand-alone version of V-World. Also included in the package is an icon library (vworld .icl) used by the V-World driver and the V-World world files. New world files and agent files can also be written with a text editor and then loaded into the stand-alone version of V-World. However, it is nearly impossible to debug these files using only the stand-along version. The source code for V-World (vworld.pl) is included in the package. By acquiring WIN-PROLOG from Logic Programming Associates , you can develop and test world and agent files using the source code and examples. You can download a free 28-day trial version from their website. This is WIN-PROLOG 4.520, and the latest version of vworld.pl is compatible with it.

Basic Ontology

The V-World Interface

V-World is both spatially and temporally discrete. A world consists of one or more screens where each screen is divided into distinct cells. Each screen is surrounded by an impenetrable wall of red bricks. Time is divided into "moves". In each move, the agent and every other actor (animate object) on the same screen as the agent have an opportunity to perform one action. The agent always performs its action first, and then the other actors take turns performing their actions in random order.

Strength and Damage

Agents have two important parameters called Strength and Damage. Typically, an agent's initial Strength is 1000 and an agent's initial Damage is 0. The agent's Strength usually diminishes as the agent interacts with its environment, but certain activities increase the agent's Strength. The agent's Damage is usually only affected when the agent interacts with objects having specific harmful or curative properties.

An agent's Strength can never exceed a maximum value of 4000. If the agent's strength drops to 0 or less, the agent dies. An agent's Damage can never be lower than a minimum value of 0. If the agent's Damage reaches 100, the agent dies. When the agent dies, its image on the display is transformed into a tombstone.

Perception and Action

V-World agents have limited and clearly defined abilities to perceive their environments and to act.

An agent can perceive a 5 x 5 square of cells centered on the agent. Nothing can block the agent's view of this area. The agent can also perceive certain properties of objects. The agent's ability to perceive qualities of objects may depend upon the agent's Strength or Damage, upon earlier actions the agent has taken, or upon objects the agent is carrying.

The only primitive actions an agent can perform is to move one cell in any direction, including diagonally, to do nothing (sit) for one turn, or to drop an object in inventory (listed in the box at the left of the screen.) However, an object or actor may be consumed, picked up, moved, attacked, or otherwise affected when the agent attempts to move into the space it occupies. How objects and actors respond to an agent depends upon the ontology of the particular world that has been loaded.

An agent is defined by a predicate agent(+Perception,-Action). Perception is a structure that includes information about the agent's Strength and Damage, the set of objects it is carrying (if any,) the direction of the Last position the agent occupied, and the objects occupying the 25 spaces around it:

Perception =

[Strength, Damage, Inventory, Last,


























Each variable in the 5 x 5 grid in this pattern will become instantiated a Prolog structure representing the type of object occupying that space. Of course, the agent will always be in the position Here in the grid, and Here will always be instantiated to the atom a. Strength and Damage will be instantiated to integers, and Inventory will be instantiated to a list of atoms representing whatever objects the agent is carrying. The agent's Strength, Damage, and Last Move are also displayed at the top of the V-World screen where the user can see them, and the agent's Inventory is displayed in a listbox at the right of the screen.

Some objects the agent will encounter in the sample worlds are represented by the following Prolog atoms.

Perceiving Properties

All objects of the same type have similar properties. Some basic properties that objects can have are that they can be animate, consumable, collectable, movable, or harmful. Suppose the agent perceives a mysterious object thing nearby. The agent can test the properties of thing with one or all of the following queries.

Some entities may be structures and the properties of the entity may be represented by features of the structure. For example, banana([consumable,strength = +100]) could be a consumable object that will increase the agent's strength by 100.

The properties of a thing may or may not be perceivable. The agent may have to interact with a thing to discover its properties.

The Sample Agent, Bumble

Bumble is a sample agent program. The source code is available as an example. Bumble is a rather stupid fellow. He does not have any explicit internal goals, he does not create an internal representation of his world, and he does not learn from experience. He is a completely reactive agent. He chooses his actions by applying the following list of priorities.

Notice that Bumble does not even take notice of the entire 5 x 5 square area accessible to him. He only reacts to object in the eight squares immediately adjacent to him.

The Menus


Load World

A dialog box will appear that includes a list of files with extension .vw. Select a V-World world file from this list. If you try to load a file that is not an agent file, you should get an error message. The world files included in the package are

risk-level-0.vw - risk-level-6.vw, a set of simple worlds containing trees, crosses, hornets, and snails. These worlds are increasingly hostile.

bird-1.vw - bird-3.vw are worlds in which the agent's goal is to find and capture a blue bird. It may be impossible to capture the bird unless the agent has something the bird wants or if the agent is holding something the bird fears.

castle.vw takes a page from Dungeons and Dragons. The agent's goal is to return the princess to the throne.

Load Agent

A dialog box will appear that includes a list of files with extension .agt. Select a V-World agent file from this list. The file bumble.agt is a sample agent file. You will want to create your own agent files. If you try to load a file that is not an agent file, you should get an error message.


Before exiting V-World, you will be given an opportunity to save your agent file.


Run Agent

When you select this item, the program will run until the agent "dies", your agent code causes some kind of error, or you select Stop Agent.

Step Agent

If your select this item, your agent will complete one move and stop.

Set Run Limit

You can set the program to run until a certain number of moves have been made by the agent. A dialog box will appear that allows you to enter the number of moves at which you want the program to stop. If you have set a stop point previously, you can also cancel it in this dialog box. After setting a stop point, select the Run option from the Actions menu to run your agent until it "dies", there is an error in your agent code, or your agent has completed the designated number of moves.

Stop Agent

You can stop the agent when it is running by clicking this menu item.


Change Agent Icon

There are twenty different icons that can be used to represent the agent. Most of these are icons of familiar cartoon characters that have been found on the Web. A dialog box will pop up displaying the available agent icons. Just click on the icon you want to use.

Change Agent Location

This allows you to relocate the agent to any empty space in the current screen. After clicking this menu item, click on an empty space on the display. The agent's icon will move to this space.

Reset Agent Strength

This resets the agent's strength to 1000. This will allow you to restart your agent after he has starved to death.

Reset Agent Damage

This resets the agent's damage to 0. This will allow you to restart your agent after he has died from injury.

Agent View Mode

This toggles the display between two modes, one in which the entire screen is visible (god's eye view mode) and one in which only the 25 squares centered on the agent are visible (agent view mode.)

Manual Testing Mode

This allows you to determine the agent's movements directly using the numeric keypad and the mouse. First, turn off Num Lock if it is on. Then the key pad can be used to move the agent in the desired direction. Press the Ins key to sit still for a turn. To drop an object in Inventory, first select the item in the list box, then click anywhere on the world view, then press the Del key.

Quick Time

The agent normally moves slowly enough that you can watch the action. If you have an agent that takes an unusually long time to move, you can speed up the action a bit by selecting this option.



This gives version and copyright information. At present, this is the only help available in V-World.

Last modified 12/08/2005 by Donald Nute .