Abstract:
In a decentralised multi-user online virtual environment, object responsibility is efficiently allocated to a controlling peer. The virtual environment is divided into a plurality of cells, and control of each cell is allocated to a responsible peer. Each responsible peer participates in a distributed hash table (DHT) to effect integration of the cells to effect the virtual environment. When a communications and processing load on the responsible peer controlling a cell exceeds a threshold, a second peer creates and takes control responsibility for an object comprising a bounded interest management region covering a region of load. Within the bounded interest management region, objects are removed or de-associated from the associated cell and instead associated with the bounded interest management region.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates to information networks such as the Internet, and in particular relates to the provision of a multi-user network, such as an online gaming environment, in a manner which is scalable to a large number of users. 
       BACKGROUND OF THE INVENTION 
       [0002]    Multi-user networks may be required for a range of reasons. Among the most resource intensive of such multi-user networks are multi-user online gaming environments. Online gaming environments increasingly involve a complex and large virtual environment which is desired to be portrayed or rendered in as much detail as possible, in as close to real time as possible, in order to provide users or game players with a more realistic gaming experience. Further, an ever increasing number of users wish to participate together within such a gaming environment. Thus, large data volumes, high data rates and high data complexity is generally required in order to manage large numbers of users participating in real time in a spatially complex and highly detailed virtual environment. 
         [0003]    For example, massively multiplayer online (MMO) applications such as “World of Warcraft” and “Second Life” have become increasingly popular. Traditionally, a game publisher desiring to deploy an online gaming environment generally must establish a central game server with sufficient resources to handle game sessions for many hundreds or thousands of participants. A client-server architecture is used to host such applications. Server farms provide the necessary infrastructure to maintain the persistent state and handle all the processing required for sending and receiving the updates in real-time. This architecture based on central servers is inflexible as it is extremely expensive, as servers with sufficient processing power to function in this manner are expensive, leading to high deployment costs for game publishers. One proposal is to provide a server farm, upon which multiple game developers may centrally host their games, which can reduce deployment costs to a certain extent. 
         [0004]    However, any system utilising central gaming servers involves substantial expense associated with the gaming servers. 
         [0005]    A further problem with gaming systems relying on central gaming servers is that the central gaming server presents a single point of failure. Consequently, any power failure, server failure or network connection failure or deterioration at the central gaming server can cause the entire gaming environment to deteriorate or fail. Central gaming servers also suffer from performance problems when MMO applications become overpopulated. Central servers have a limited capacity and can handle a certain number of users. When the number of users increases beyond this number, they experience performance problems and the user experience is compromised. 
         [0006]    Any discussion of documents, acts, materials, devices, articles or the like which has been included in the present specification is solely for the purpose of providing a context for the present invention. It is not to be taken as an admission that any or all of these matters form part of the prior art base or were common general knowledge in the field relevant to the present invention as it existed before the priority date of each claim of this application. 
         [0007]    Throughout this specification the word “comprise”, or variations such as “comprises” or “comprising”, will be understood to imply the inclusion of a stated element, integer or step, or group of elements, integers or steps, but not the exclusion of any other element, integer or step, or group of elements, integers or steps. 
       SUMMARY OF THE INVENTION 
       [0008]    According to a first aspect the present invention provides a method for efficiently allocating object responsibility to a controlling peer in a decentralised multi-user online virtual environment, the method comprising:
       dividing the virtual environment into a plurality of cells, and allocating control of each cell to a responsible peer, each responsible peer participating in a distributed hash table (DHT) to effect integration of the cells to effect the virtual environment;   upon a communications and processing load on the responsible peer controlling a cell exceeding a threshold, a second peer creating and taking control responsibility for an object comprising a bounded interest management region covering a region of load; and   within the bounded interest management region, removing objects from the associated cell and associating them with the bounded interest management region.       
 
         [0012]    According to a second aspect the present invention provides a peer node software application for efficiently allocating object responsibility to a controlling peer in a decentralised multi-user online virtual environment, the software application comprising:
       code for dividing the virtual environment into a plurality of cells, and for allocating control of each cell to a responsible peer, each responsible peer participating in a distributed hash table (DHT) to effect integration of the cells to effect the virtual environment;   code for determining whether a communications and processing load on the responsible peer controlling a cell has exceeded a threshold, and if so causing a second peer to create and take control responsibility for an object comprising a bounded interest management region covering a region of load; and   code for removing objects within the bounded interest management region from the associated cell and associating them with the bounded interest management region.       
 
         [0016]    According to a third aspect the present invention provides a computer program product comprising computer program code means to make a computer execute a procedure for efficiently allocating object responsibility to a controlling peer in a decentralised multi-user online virtual environment, the computer program product comprising:
       computer program code means for dividing the virtual environment into a plurality of cells, and for allocating control of each cell to a responsible peer, each responsible peer participating in a distributed hash table (DHT) to effect integration of the cells to effect the virtual environment;   computer program code means for determining whether a communications and processing load on the responsible peer controlling a cell has exceeded a threshold, and if so causing a second peer to create and take control responsibility for an object comprising a bounded interest management region covering a region of load; and   computer program code means for removing objects within the bounded interest management region from the associated cell and associating them with the bounded interest management region.       
 
         [0020]    According to a fourth aspect the present invention provides a system comprised of a plurality of network nodes configured to execute the method of the first aspect. 
         [0021]    According to a fifth aspect the present invention provides a development platform software application enabling game developers to design multi-player online games in which object responsibility is allocated in accordance with the first aspect. 
         [0022]    In some embodiments of the invention, the bounded interest management (IM) region is configured to contain all objects in the load region, so as to reduce network traffic associated with DHT redundancy. 
         [0023]    Additionally or alternatively, the size of the bounded IM region may be altered as the region of load changes size over time. 
         [0024]    Further, in some embodiments the location of the bounded IM region may be altered as objects within the region of load move over time. 
         [0025]    Additional or alternative embodiments of the invention may provide for calving off of a second bounded IM region when objects within a first established IM region disperse beyond a maximum region size threshold. 
         [0026]    Moreover, in some embodiments two or more bounded IM regions may be merged when they happen to come into proximity. 
         [0027]    In some embodiments of the invention, as a fall-back in the event of failure of a bounded IM region, associated objects are re-associated directly with the DHT. 
         [0028]    The present invention may be applied in implementation of a massively multiplayer online game (MMOG). Additionally or alternatively, the present invention may be applied to implement an alternative form of peer-to-peer platform and application. 
         [0029]    Preferred embodiments of the invention are implemented in conjunction with the teachings of PCT patent publication no. WO2008/040092, the content of which is incorporated herein by reference. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0030]    An example of the invention will now be described with reference to the accompanying drawings, in which: 
           [0031]      FIG. 1  schematically illustrates a logical view of peer nodes connected in a ring and having responsibility for respective cells of a peer-to-peer virtual world; 
           [0032]      FIG. 2  illustrates the manner in which objects are inserted and interest region queries are made, using the logical view of  FIG. 1 ; 
           [0033]      FIG. 3  illustrates the manner in which a bounded interest management region is established in accordance with an embodiment of the present invention, using the logical view of  FIG. 1 ; 
           [0034]      FIG. 4  illustrates the manner in which two bounded interest management regions can be merged in accordance with an embodiment of the present invention; 
           [0035]      FIG. 5  illustrates the manner in which a dispersing bounded interest management region may be split into two bounded interest management regions in accordance with an embodiment of the present invention; 
           [0036]      FIG. 6  illustrates a bounded region having two sub-groups; and 
           [0037]      FIG. 7  illustrates a general-purpose computing device that may be used in an exemplary system for implementing the invention. 
       
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0038]    The embodiment of the invention described in the following relates to a peer-to-peer platform for deploying massively multi-player online games (MMOG). The present embodiment improves the scalability of decentralised MMOGs. Notably, the present embodiment provides for a bounded interest management (IM) service as an additional layer between the objects and the distributed hash table (DHT). 
         [0039]    The present invention recognises that decentralised architectures for deploying an online environment may be used to avoid the problems of centralized gaming servers. As decentralized architectures use a peer-to-peer network to manage the MMO, there is no central point of failure and the platform can theoretically scale to a greater number of users. The present invention particularly recognises that when using a structured peer-to-peer network there exists additional overhead in maintaining a distributed hash table (DHT). A DHT is necessary in such architectures as it provides reliability and consistency by replicating game state data several times. However, this puts an additional load on the network and affects the performance of the application that uses the peer-to-peer network. The present invention recognises that such additional load can be a serious problem for near real-time applications such as virtual worlds and online games. 
         [0040]    The present embodiment of the invention is thus related to a method that reduces the load on the DHT thereby improving the performance and scalability of the application. In a peer-to-peer virtual world, the entire world is divided into cells. Typically each cell is controlled by a peer in the network.  FIG. 1  shows a logical view of all the peers connected in the form of a ring. As shown in  FIG. 1 , cell C 1  is controlled by peer P 1 , and so on. Different methods have been proposed in the past to map cells to peers, and any suitable such method may be used in conjunction with the present invention. All the objects (e.g. players) in a cell send and receive discovery messages to and from the controlling peer to obtain and return game state information about that cell. 
         [0041]    Discovery messages convey information about remote objects that each object should communicate with. As the number of objects in a cell increases, the volume of discovery messages also increases, so that the load on the controlling peer&#39;s network connection increases. This results in discovery notification messages being delayed, which can lead to an unacceptable end-user experience in a real-time application such as an MMOG. In accordance with the present invention, this embodiment implements a bounded interest management (IM) region to address this problem. 
         [0042]    In this embodiment, a bounded IM region represents an interest management service that handles interest management in a given region of space, similar to a cell. Unlike a cell, a bounded IM region is dynamic; it can move around in the virtual space and be resized as required. Furthermore, a bounded IM region is an object, so it can be inserted into other interest management services (e.g. cells or other bounded IM regions). A bounded IM region can take on any shape supported by the underlying object system. 
         [0043]    Operation of the system begins with objects inserting themselves and their interest regions into the appropriate cells on the DHT. When load on a cell becomes excessive, a bounded IM region is created covering the loaded region, and the bounded IM region is inserted into the DHT. Detection of excessive load can be performed by any appropriate method. The new bounded IM region would normally be created on an unloaded peer having capacity to manage the bounded IM region. Peer nodes responsible for affected cells will detect intersections between the inserted bounded IM region and the existing objects in the space, and notify these objects of the new service. In turn, these objects remove their regions from the cells and insert them into the bounded IM region. If an object is fully contained by the bounded IM region, the bounded IM service will send a notification to the object informing it that it has separated from the DHT. The net effect is that only one region is inserted into the DHT covering all of the objects, significantly reducing traffic associated with ensuring redundancy on the DHT. Initial results have shown that this embodiment reduces the overall network traffic significantly as the number of objects within a region increase, thereby reducing the latency and improving the scalability and performance of the MMO application. 
         [0044]    Multiple such bounded IM regions may be established to manage multiple regions of high load in the virtual space. In this embodiment, objects are free to enter or leave areas of the virtual space covered by bounded IM regions at any time. The interest management services will inform them of intersections/separations with bounded IM regions and the DHT, and IM subscriptions can then be updated as required. Equally, bounded IM regions can move or resize as required to minimize network traffic and the interest management notifications will still ensure consistency of IM subscriptions. 
         [0045]    The present embodiment further provides for merging and splitting of bounded IM regions. When two bounded IM regions intersect in the manner shown in  FIG. 4 , their controlling nodes are notified of each other by the cell in which the intersection arises. The controlling nodes then initially control the intersecting event between the respective IM regions by inserting all objects in each bounded IM region into the other, to ensure all objects are notified of all bounded IM regions that they overlap. It can further be beneficial to merge nearby or intersecting bounded IM regions to reduce network traffic. The present embodiment achieve this by enlarging one of the regions to encompass the union of the regions, and then removing the other regions. 
         [0046]    Conversely, the present embodiment further provides for splitting of a bounded IM region into multiple regions, which can be done by shrinking the original region and introducing one or more new regions as required to encompass the excluded portions, as illustrated in  FIG. 5 . 
         [0047]    In this embodiment, bounded IM regions have a default size when first established. However, they can be increased in size to accommodate additional objects. The present embodiment imposes a maximum limit, recognising that excessively increasing the size of the bounded IM regions will reduce system performance. The maximum limit in this embodiment is based on several parameters such as the visible region size, cell size of the virtual world, and the like. If a bounded IM region has reached its maximum size, it will not merge with a partially intersecting bounded IM region as it will result in its size increasing beyond the maximum value allowed. 
         [0048]    This embodiment further imposes a maximum limit on the number of objects a bounded IM region can handle. Once a bounded IM region reaches this limit, it will not merge with another bounded IM region even if the two bounded IM regions overlap each other completely. 
         [0049]    Further, when objects within a bounded IM region move through the virtual space, the bounded IM region in this embodiment moves with them. This ensures that the objects and their interest regions are always enclosed within the bounded IM regions. If a particular object moves further away from the rest of the objects within a bounded IM region, the bounded IM region will try and increase its size to accommodate and enclose that object. If the bounded IM region is not able to enclose that object because the bounded IM region has reached its maximum size, the object is split from the bounded IM region and a new bounded IM region is created. 
         [0050]    The present embodiment further recognises that it is possible that bounded IM regions can fail or lose connectivity (temporarily or permanently) with the objects in its region or the DHT. When this happens, all the objects and the interest regions are set to revert to communicating directly with the DHT, and new bounded IM regions will then be formed anew, under the responsibility of a different peer node having connectivity. This provides a fall back mechanism for discovery in the event of a bounded IM region failure, ensuring that bounded IM regions can recover from network and device failures in a smooth manner without loss of connectivity to the individual peers. 
         [0051]    Thus, one of the key benefits of using this embodiment of the invention is a significant reduction in the traffic overheads associated with the DHT (Distributed Hash Table). 
         [0052]    This reduces the load on the DHT and improves the overall performance of the system significantly. 
         [0053]    While this embodiment has been described with reference to the behaviour of the system infrastructure as a whole, it is to be appreciated that the invention can be embodied in a number of forms. Such forms include a technology suite for MMO developers and publishers, providing a generic platform that can be optimised for any MMO application. Such a platform would provide the technology for the networking protocols and handle all the routing and messaging allowing game developers to devote less time to the communications aspects of the game and focus on content development. It is also to be appreciated that the invention may be embodied in a peer node software application provided to peer nodes to implement the invention in the manner described. 
         [0054]    Further optimization of this invention may involve efficient encoding of network traffic, suppression of un-required interest notifications, and improvements to algorithms which position/size IM regions. 
         [0055]    A dynamic bounded interest management region in accordance with this embodiment of the invention is thus a region in space that can be of any shape and size. Unlike a cell, a bounded interest management region is dynamic and can move around in space and resize itself as required. Furthermore, a bounded region is an entity, so it can be inserted into other interest management services (e.g. cells or other bounded IM regions). A bounded IM region can take on any shape supported by the underlying object system. For evaluation purposes, we have assumed a bounded region to have the shape of a sphere. It has a position and a radius. 
         [0056]    Dynamic bounded regions introduce an additional level in the discovery process. Each entity and its associated interest region are managed by a bounded interest management region. The bounded region queries the DHT to find out about other entities and other bounded regions of interest. The entities and the interest region query their bounded region to identify any remote objects of interest. The bounded region is controlled by a manager. The region manager task for a particular bounded region is assigned to a peer on the network. The peer selection is made in such a way that the load is distributed across the network. When there is only one entity in the region, the bounded region is maintained by the local peer (the peer that controls the entity). This eliminates the communication overheads between the entity and the bounded region. 
         [0057]    Operation of the system begins with entities creating a bounded region and inserting themselves and their interest region in the bounded region. The bounded region inserts itself into the DHT using the cell protocol. Cells will detect intersections between the inserted bounded region and existing objects in the space, and notify these objects of the new service. In turn, these objects will remove their regions from the cells and insert them into the bounded region. If an object is fully contained by the bounded region, the bounded region service will send a notification to the object to inform the object that it has separated from the DHT. The net effect is that only one region is inserted into the DHT that covers all the objects, significantly reducing the traffic associated with DHT replication. 
         [0058]    Entities are free to enter or leave areas of space covered by bounded regions at any time. The interest management services will inform them of intersections/separations with bounded interest management regions and the DHT. Interest management subscriptions can then be updated as required. Equally, bounded regions can move or resize as required to minimize network traffic. Interest management notifications will ensure consistency of interest management subscriptions. 
         [0059]    Bounded regions have a default size. However, they can grow and shrink in size to accommodate multiple entities. There is a maximum size limit that is calculated in order to optimize system performance. Bounded regions can merge ( FIG. 4 ) with other regions or they can split ( FIG. 5 ) into multiple bounded regions depending on the movement of the entities within the region. 
         [0060]    The behaviour of bounded regions can be described by the following algorithms. Let us assume that there is a bounded region B i  that contains N entities O 1 , O 2 , . . . , O N . Every time an entity moves out of its subscription region, it will send a request to the bounded region. This will in turn call the Modify_Region( ) function. To understand the algorithms, we introduce the concept of sub-groups. Entities within a region are categorized into sub-groups depending on the overlap of their interest regions. All entities within a sub-group have some degree of overlap or are connected via other entities. For example, in  FIG. 6 , bounded region X has two sub-groups. Even though the interest region for entities A and C do not intersect each other, they are part of the same sub-group as they are connected via entity B. The algorithm for Modify_Region, Merge and Split are as follows: 
         [0000]    
       
         
               
               
             
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 Modify_Region (Region B) 
               
               
                   
                 { 
               
               
                   
                   B&#39;s overlap region list L:= { } 
               
               
                   
                   for each R in L do 
               
               
                   
                     Calculate overlap between B and R; 
               
               
                   
                     if (overlap &gt; 50%) 
               
             
          
           
               
                 Merge (B, R); 
               
             
          
           
               
                   
                   Entity list X:= { } 
               
               
                   
                 Parse each E in X and form sub-groups; 
               
               
                   
                   Resize B so that it encloses all the entities in X; 
               
               
                   
                   for the largest sub-group G 
               
               
                   
                     Split (B, G); 
               
               
                   
                 } 
               
               
                   
                 Merge (Region B, Region C) 
               
               
                   
                 { 
               
               
                   
                   Increase the size of B until it encloses C; 
               
               
                   
                   Shutdown C; 
               
               
                   
                   Transfer all entities from C to B; 
               
               
                   
                 } 
               
               
                   
                 Split (Region B, Subgroup G) 
               
               
                   
                 { 
               
               
                   
                   Create new region C; 
               
               
                   
                   Entity list for sub-group G is X:={ } 
               
               
                   
                   Entity list for region B is Y:={ } 
               
               
                   
                   for each entity E in X do 
               
               
                   
                     Transfer E from region B to region C; 
               
               
                   
                   Reduce the size of B to enclose all entities in Y; 
               
               
                   
                 } 
               
               
                   
                   
               
             
          
         
       
     
         [0061]    Bounded regions can fail or lose connectivity (temporarily or permanently) with the various entities in its region or the DHT. When this happens, all the entities and the interest regions revert to using the cell protocol, and new bounded regions will be formed from scratch. This provides a fall-back mechanism for interest management in the event of a bounded region failure, ensuring that bounded regions can recover from network and device failures in a smooth manner without loss of connectivity. 
         [0062]    Some portions of this detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
         [0063]    As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of the computer of electrical signals representing data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the computer in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the invention is described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operations described may also be implemented in hardware. 
         [0064]    It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the description, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
         [0065]    The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. 
         [0066]    The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. 
         [0067]    A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc. 
         [0068]    Turning to  FIG. 7 , the invention is illustrated as being implemented in a suitable computing environment. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. 
         [0069]    In  FIG. 7  a general purpose computing device is shown in the form of a conventional personal computer  20 , including a processing unit  21 , a system memory  22 , and a system bus  23  that couples various system components including the system memory to the processing unit  21 . The system bus  23  may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read only memory (ROM)  24  and random access memory (RAM)  25 . A basic input/output system (BIOS)  26 , containing the basic routines that help to transfer information between elements within the personal computer  20 , such as during start-up, is stored in ROM  24 . The personal computer  20  further includes a hard disk drive  27  for reading from and writing to a hard disk  60 , a magnetic disk drive  28  for reading from or writing to a removable magnetic disk  29 , and an optical disk drive  30  for reading from or writing to a removable optical disk  31  such as a CD ROM or other optical media. 
         [0070]    The hard disk drive  27 , magnetic disk drive  28 , and optical disk drive  30  are connected to the system bus  23  by a hard disk drive interface  32 , a magnetic disk drive interface  33 , and an optical disk drive interface  34 , respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer  20 . Although the exemplary environment shown employs a hard disk  60 , a removable magnetic disk  29 , and a removable optical disk  31 , it will be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories, read only memories, storage area networks, and the like may also be used in the exemplary operating environment. 
         [0071]    A number of program modules may be stored on the hard disk  60 , magnetic disk  29 , optical disk  31 , ROM  24  or RAM  25 , including an operating system  35 , one or more applications programs  36 , other program modules  37 , and program data  38 . A user may enter commands and information into the personal computer  20  through input devices such as a keyboard  40  and a pointing device  42 . Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit  21  through a serial port interface  46  that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or a universal serial bus (USB) or a network interface card. A monitor  47  or other type of display device is also connected to the system bus  23  via an interface, such as a video adapter  48 . In addition to the monitor, personal computers typically include other peripheral output devices, not shown, such as speakers and printers. 
         [0072]    The personal computer  20  may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer  49 . The remote computer  49  may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer  20 , although only a memory storage device  50  has been illustrated. The logical connections depicted include a local area network (LAN)  51  and a wide area network (WAN)  52 . Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and, inter alia, the Internet. 
         [0073]    When used in a LAN networking environment, the personal computer  20  is connected to the local network  51  through a network interface or adapter  53 . When used in a WAN networking environment, the personal computer  20  typically includes a modem  54  or other means for establishing communications over the WAN  52 . The modem  54 , which may be internal or external, is connected to the system bus  23  via the serial port interface  46 . In a networked environment, program modules depicted relative to the personal computer  20 , or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. 
         [0074]    It will be appreciated by persons skilled in the art that numerous variations and/or modifications may be made to the invention as shown in the specific embodiments without departing from the spirit or scope of the invention as broadly described. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.