Frequently Asked Questions (FAQ)

1. Can you explain in plain English, what does VAST do?

Let's say you're in Second Life, basically at any given time there's at least 50,000 people on the system. However, to get the updates (movement, chat, buy/sell, etc.) from all 50,000 is not practical, nor is it really needed.

So, the way most games work is by specifying what's called an Area of Interest (AOI, which is basically your visibility within some radius), and do the following:

1. each user sends a message (a movement event, chat, or action request) to a server.

2. the server checks and processes the message, updates some "game states" if necessary.

3. the server then send the results of this message (in the form of some updates, for example, a change in the user's location on the map) to all those people who can "see it". So the server basically delivers the update not to "everyone", but only to a subset of users, whose AOI may cover the changes.

So, the ability to publish a message to an area, or to subscribe for events within an area, are very primitive and basic in a game scenario.

The most basic way to provide this service, is simply by a server. However, any server, no matter how powerful, has a limit on its CPU or bandwidth, so the way to scale up often is to have more servers, each is responsible for a particular region / area. However, the problem is that often user movement / density is always changing, during different dates, and different hours within a day. So, it's very likely with a fixed partitioning, you will have overloaded server (too many users) or underloaded server (too few to little users). Overload will degrade your response time (so not a real-time system any more), underload is a waste of resources (you still need to have the machine power-on).

See this video for an example. What you see is that each moving dot is a user, the big circle is a particular user's AOI, and color means that this user is "aware" (that is, "see") the other users around it.

The video shows that by using dynamic partitioning and load balancing, we may be able to use just the right number of regions, each with roughly the same loading, this way we won't have to worry about the change in user density, or a degrade in response-time. This dynamic mechanism to send or receive updates from areas, is what VAST essentially does.