Recent Changes

Monday, January 2

Friday, November 11

  1. page FAQ edited ... 3. the server then send the results of this message (in the form of some updates, for example,…
    ...
    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.
    ...
    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.
    ...
    in response-time. This dynamic mechanism to send or receive updates from areas, is what VAST essentially does.
    (view changes)
    11:01 pm
  2. page FAQ edited ... 1. Can you explain in plain English, what does VAST do? Let's say you're in Second Life, basi…
    ...
    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.
    ...
    of Interest (AOI),(AOI, which is
    ...
    within some radius, which works like this: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.
    ...
    may cover this event.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.
    see this video:
    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
    The most basic
    ...
    machine power-on). The
    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
    (view changes)
    11:00 pm
  3. page space.menu edited ... Installation Usage FAQ About SPS
    ...
    Installation
    Usage
    FAQ
    About
    SPS
    (view changes)
    10:57 pm
  4. page FAQ edited Frequently Asked Questions (FAQ) 1. Can you explain in plain English, what does VAST do? Let's s…
    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, which works like this:
    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 this event.
    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.
    see this video:
    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 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). 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.

    (view changes)
    10:53 pm

Friday, September 9

  1. page Usage edited ... // a user message sent between nodes, consisting of a message type, priority number, data, and…
    ...
    // a user message sent between nodes, consisting of a message type, priority number, data, and targets
    class Message
    ...
    the following function:function in the VASTVerse class (the factory class for VAST nodes):
    bool createVASTNode (const IPaddr &gateway, Area &area, layer_t layer);
    where gateway refers to the IP address of the Gateway node, area refers to the initial subscribed area, and layer refers to which layer to subscribe (VAST supports from 1 to 65,535 different user-defined layer numbers). A VAST node will only receive publications fall within its subscribed area, but also at the same layer. Once a subscription request is made, the application can just keep calling the following function to obtain a pointer to the created VAST node (NULL is returned before the VAST node has joined successfully).
    ...
    int send (Message &message);
    move () basically changes the subscribed area for the given subscription ID. publish () sends a message to an area at a specific layer. and send () sends a custom message to one or more nodes stored within the Message's targets.
    Socket Communications
    Direct socket communications are also provided by VAST if the application needs to use them. You can pass an IP/port info to open a TCP connection to a remote server (with optional SSL encryption), and to send and receive any byte string once the connection is opened. The four main functions to use are:
    // open a new socket specified given in the IPaddr, a socket id is returned
    id_t openSocket (IPaddr &ip_port, bool is_secure = false);
    // send a message of a given size to the socket (based on its id)
    bool sendSocket (id_t socket, const char *msg, size_t size);
    // receive messages, by passing in references to receive socket id and message size
    // NULL is received is no more messages
    char *receiveSocket (id_t &socket, size_t &size);
    // close up an existing socket
    bool closeSocket (id_t socket);
    // check whether a given socket is still connected
    bool isSocketConnected (id_t socket);

    Sample Program
    We use the sample code in "/Demo/demo_console/demo_console.cpp" as a skeleton to explain what a minimal VAST-based program might look like. Note that this is only a skeleton, you will want to fill in other parts to suit your particular needs. The sample serves to provide an idea of how to initialize a VAST node, and how the main loop should run VAST.
    (view changes)
    7:27 am

Sunday, July 17

  1. page VSO edited ... Below is a video demonstration of VSO (to load balance 100 entities in motion). Note that the …
    ...
    Below is a video demonstration of VSO (to load balance 100 entities in motion). Note that the lines are the Voronoi partitioning of regions, and each region is handled by a VON node.
    Video Demo
    For more information, please refer to VSO's research publications
    (view changes)
    11:51 am
  2. user_add ganos ganos joined vastlib
    11:50 am

Tuesday, May 10

  1. page VON edited Voronoi-based Overlay Network (VON) ... can be asked to check {VON-move.jpg} MOVE procedure…

    Voronoi-based Overlay Network (VON)
    ...
    can be asked to check
    {VON-move.jpg} MOVE procedure (a) Triangle (▲) indicates the intended new position. Squares (▓) are new neighbors about to be discovered. Stars (★) are the boundary neighbors. (b) After the move, crosses (╳) are the neighbors no longer inside the AOI, therefore are disconnected.
    To join a VON, a join request is forwarded from any existing node (but often a gateway node), towards the direction of the joining position via greedy forward (i.e., at each hop, the message is sent to the node whose coordinate is closest to the destination, also known as geographic routing). Once the request has reached the acceptor node whose Voronoi region covers the joining spot, the acceptor can return a list of initial neighbors for the joining node to contact. Additional nodes within the joiner's AOI are discovered via notifications from known AOI neighbors. To maintain the overlay connectivity, each node should be aware of its closest enclosing neighbors, even if those neighbors are outside of its AOI (see below for the join procedure and neighbor definitions in a VON).
    (view changes)
    6:46 pm

Thursday, May 5

  1. page Protocol edited ... to send messages to all child nodes that integrate the AOI msg 22 VOROCAST_REDIRECT_MSG a…
    ...
    to send messages to all child nodes that integrate the AOI
    msg
    22
    VOROCAST_REDIRECT_MSG
    a flag where is defined the way to redirect the messages (0 directly, 1 forwarding)

    *A list of enclosing neighbors' IDs is sent
    Interaction Flow
    (view changes)

More