Dynamic player groups for interest management in multi-character virtual environments
Inactive Publication Date: 2006-01-05
MICROSOFT TECH LICENSING LLC
3 Cites 325 Cited by
AI-Extracted Technical Summary
Problems solved by technology
For massive virtual environments that contain thousands of virtual characters, it becomes impossible to send m...
Method used
[0019] The present invention improves the efficiency of virtual environment simulations by reducing the number of filtering operations that need to be performed during each update cycle. As discussed above, under the prior art, filtering operations are performed to reduce the amount of information provided to each client so that the client only receives information that is of interest to the client. Thus, instead of learning about changes to all of the entities in the virtual environment, the client will only learn about changes that affect the portion of the world that is relevant to the client.
[0020] Under the prior art, such filtering was performed on a client-by-client basis, thereby requiring separate filtering operations for each client. The present invention reduces the number of needed filtering operations by grouping client characters into common interest groups and performing filtering operations for the group instead of for the individual client characters within the group. This reduces the total number of filtering operations that need to be performed during any one update cycle.
[0027] The second requirement for a character to remain in a group is that the bandwidth of the client associated with the character must be greater than a minimum required bandwidth for the group. The minimum bandwidth requirement is set so as to prevent a single low bandwidth client from limiting the amount of information that can be passed to the other clients of the group. Under one embodiment, the bandwidth of the client is evaluated at each update cycle during step 406. As a result, if the bandwidth of the client changes over a period of time, the client's character may be dropped from the group to allow for better performance for other clients. Under one embodiment, the minimum bandwidth was set at 750 bits per second.
[0030] The second requirement to join a group is ...
Benefits of technology
[0008] A method and apparatus improve the efficiency of simulating a virtual environment by filtering information about the virtual environm...
Abstract
A method and apparatus improve the efficiency of simulating a virtual environment by filtering information about the virtual environment on a group basis instead of a character basis. The filtered information is sent to each client associated with a character in the group.
Application Domain
Video gamesSpecial data processing applications
Technology Topic
Interest managementHuman–computer interaction
Image
Examples
- Experimental program(1)
Example
[0014] The present invention improves the efficiency of virtual world simulations in which multiple users or machines can control entities within the virtual environment. Such virtual environments are common in massive multi-player on-line games.
[0015] As shown in FIG. 1, the virtual environment typically consists of a map space 100 that is populated with system entities, such as system entity 102, which are shown as small squares in FIG. 1, and player entities (also referred to as characters), such as player entity 104, which are shown as small circles in FIG. 1. The system entities can include mobile entities such as monsters and system-controlled characters that can move within map space 100 as well as stationary entities such as buildings. The system entities are controlled by a central controller, typically a server, while the player entities are controlled by users or machines connected to the system, typically as clients of the server.
[0016] One architecture for simulating a virtual environment under some embodiments of the present invention is shown in FIG. 2. In FIG. 2, an environment server 200 acts as the central controller and is responsible for controlling the state of the environment, the behavior of system controlled entities within the environment, and the coordination and communication of changes in the environment. Environment server 200 communicates with multiple clients 202, 204, and 206 through a network 208 such as an Intranet or the Internet. Clients 202, 204, and 206 are separately responsible for rendering images and sounds that correspond to the virtual environment based on the state of the virtual environment provided by environment server 200. This state information includes the position and state of each character or entity in the environment as well as changes in the typography, weather, lighting and visibility within the environment. Environment server 200 stores state information for the various entities and the world in a database 210.
[0017] The virtual environment system can optionally include other system servers 212 such as authentication servers for authenticating new players, and a communication server. For simplicity in the discussion below, a single server 200 is considered to control the entire environment. However, those skilled in the art will recognize that more complex server architectures, including server networks, are within the scope of the present invention. Further, although FIG. 2 shows a network environment, the present invention may be practiced within a single computer in which multiple clients are designated within the computer. The invention may also be practiced in a distributed peer-to-peer network.
[0018] The servers and clients of FIG. 2 typically include at least some form of computer readable media. Computer readable media can be any available media that can be accessed by the servers, the clients, or both. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the servers or the clients. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
[0019] The present invention improves the efficiency of virtual environment simulations by reducing the number of filtering operations that need to be performed during each update cycle. As discussed above, under the prior art, filtering operations are performed to reduce the amount of information provided to each client so that the client only receives information that is of interest to the client. Thus, instead of learning about changes to all of the entities in the virtual environment, the client will only learn about changes that affect the portion of the world that is relevant to the client.
[0020] Under the prior art, such filtering was performed on a client-by-client basis, thereby requiring separate filtering operations for each client. The present invention reduces the number of needed filtering operations by grouping client characters into common interest groups and performing filtering operations for the group instead of for the individual client characters within the group. This reduces the total number of filtering operations that need to be performed during any one update cycle.
[0021]FIG. 3 provides a flow diagram of a single update cycle for updating the virtual environment under some embodiments of the present invention. In step 300 of FIG. 3, each client provides messages to server 200 and server 200 translates these messages into player actions. At step 302, server 200 determines a set of actions for environment controlled entities such as environment controlled characters based on the previous world state. At step 304, all of the actions determined in steps 300 and 302 are executed and the world state is updated.
[0022] In step 306, dynamic groups of characters are updated, where a dynamic group consists of a collection of client characters that are near each other in the virtual environment such that they are likely to have common interests in the virtual environment and therefore are likely to want to receive the same information about the environment. At step 308, a filtering operation is performed for each group and at step 310, messages are sent to each client with the results of the filtering operation on a group-by-group basis. Thus, every client associated with a particular group receives the same set of messages as every other client in the group. As a result, separate filtering operations do not have to be performed for each client. Instead, they only have to be performed for each group.
[0023] At step 312, the internal states of the environment controlled entities are updated.
[0024]FIG. 4 provides a more detailed flow diagram of a method of updating the dynamic groups of client characters, which is shown as step 306 in FIG. 3. In step 400 of FIG. 4, one of the existing groups in the virtual environment is selected. Initially, each client's character is designated as its own dynamic group consisting of a single client character. At step 402, the known-entity list of the group is examined and a client's character in the known-entity list is selected. A known entity list is a list of entities that members of the group have previously been given detailed information about. This detailed information allows the client to render the entity and allows the server to send a smaller set of information when the state of the entity changes. Thus, instead of sending all of the detailed information for the entity, the server only has to send information on what has changed about the entity if the entity is found in a group's known-entity list. Under one embodiment, each client character that is a member of the group is found in the group's known-entity list.
[0025] At step 404, the server determines if the selected character from the group's known-entity list is a member of the group. It is possible that characters can be a member of the group's known-entity list while not being in the group itself. This will occur if a player is close enough to the group to be of interest to the group but not close enough to the group to be an actual member of the group.
[0026] If the character is a member of the group, the server determines if the character meets the requirements that have been set to stay in the group at step 406. Under one embodiment, there are two requirements for a player to remain within a group. First, the character must be within a threshold distance of the center of the group. For example, in FIG. 1, a group consisting of characters 126, 128 and 130 has a group center 132. The minimum distance required to remain in that group forms a circle 134 around the group. Since characters 126, 128, and 130 are all within circle 134, they all meet the first requirement for remaining in that group. Under one embodiment, the minimum distance calculation is determined using the character's current position as set in step 304 of FIG. 3 and the center of the group as determined in the previous update cycle.
[0027] The second requirement for a character to remain in a group is that the bandwidth of the client associated with the character must be greater than a minimum required bandwidth for the group. The minimum bandwidth requirement is set so as to prevent a single low bandwidth client from limiting the amount of information that can be passed to the other clients of the group. Under one embodiment, the bandwidth of the client is evaluated at each update cycle during step 406. As a result, if the bandwidth of the client changes over a period of time, the client's character may be dropped from the group to allow for better performance for other clients. Under one embodiment, the minimum bandwidth was set at 750 bits per second.
[0028] If the character meets the requirements to stay in the group at step 406, the character is kept in the character's current group at step 408. However, if the character does not meet the requirements to stay in the group, the character is removed from the current group at step 410 and is placed as its own group, as it would have been when the character was first added to the virtual environment.
[0029] If the character selected at step 402 is not a member of the group, the server determines if the character meets the requirements needed to join the group at step 412. Under one embodiment, there are four requirements to join a group. First, the client associated with the character must have a minimum bandwidth. Under one embodiment, this minimum bandwidth is higher than the minimum bandwidth required to drop a character from a group. The reason for setting the bandwidth higher for joining a group is to ensure that even with bandwidth fluctuations, the character is likely to remain a member of the group. This reduces the possibility that a character will alias in its membership of a group due to bandwidth limitations. In one particular embodiment, the minimum bandwidth to join the group is 1000 bits per second.
[0030] The second requirement to join a group is that the client character must be within a minimum distance of the group center where the position of the player is the position achieved after step 304 and the group center is the center determined in the previous update cycle. For example, in FIG. 1 the minimum distance for joining the group consisting of characters 126, 128 and 130 forms a circle 136 around group center 132. In order to join this group, a character would have to be within circle 136. Under one embodiment, the minimum distance for joining a group is less than the minimum distance required to remain a member of the group. FIG. 1 shows an example of such an embodiment where circle 136 for joining a group is smaller than circle 134 for being removed from a group. This reduces aliasing of membership in a group based on position. Under one embodiment, the minimum distance to join the group is 32 while the minimum distance to remain in the group is 64.
[0031] The third requirement for joining a group is that the group that the character is being considered for must be larger than the character's current group. This favors the formation of larger groups and encourages more stable group membership. A character that is alone is considered to be in a group with one member.
[0032] Lastly, a character must be present in the virtual environment for at least a minimum period of time before they can join a group. This is done to ensure that the character's known-entity list has been populated before trying to integrate the character into a group. Under most embodiments of the present invention, when a character is added to a group, the known-entity list for the group must be combined with the known-entity list of the character. Since new characters have an empty known-entity list, this would require a great deal of time and may be difficult to do in one update cycle.
[0033] By waiting to add a character to the group, the character's known-entity list may be updated over a number of update cycles before trying to integrate the two lists. Since the character is close to the group, this progressive updating should result in a known-entity list for the character that is similar to the group's known-entity list. As a result, after the character has been in the environment for a minimum amount of time, it is easier to combine the two known-entity lists and thus is easier to add the character to the group.
[0034] If the character meets the requirements to join the group at step 412, the character is removed from its current group and is merged into the new group at step 414. In order to remove a character from a group, the character is simply marked as being a member of the new group instead of the character's current group.
[0035] In order to merge a character into a group, the known-entity list of the character and the group must be combined. Under one embodiment, this is performed by intersecting the two known-entity lists such that if an entity is not known by both the character and the group, it is dropped from the combined known-entity list. In addition, if a “dirty” bit has been set for any entity in either of the known-entity lists, it continues to be set in the combined known-entity list for the group. Such “dirty” bits indicate that a known entity has changed during the execution of an action in step 304 and that an update for that entity should be sent to the client or the members of the group.
[0036] In addition to the basic intersection of the known-entity lists, the formation of the combined known-entity list must ensure that all of the characters that are members of the group are in the combined known-entity list. This is done in step 414, because later it is assumed that all of the characters in a group know all of the other characters in the group.
[0037] If a character does not meet the requirements to join a group at step 412, the character is kept in their current group at step 408.
[0038] At step 416, the server determines if there are more characters in the current known-entity list. If there are more characters, a new character is selected at step 402 and the steps between step 402 and 416 are repeated. When there are no more characters in the known-entity list of the current group at step 416, the server determines if there are more groups at step 418. If there are more groups in the virtual environment, the process returns to step 400 and selects a new group. Steps 402-416 are then repeated for the new group. When there are no more groups in the virtual environment at step 418, the process of updating the dynamic groups of client characters is complete.
[0039]FIG. 5 provides a more detailed flow diagram of the steps involved in performing filtering operation 308 of FIG. 3 for each group. In step 500, the group center for the group is set using the position of the member characters identified in step 306. Under one embodiment, the group center is set as the average of the position of the client characters that are members of the group. Thus, the x coordinate of all of the client characters is averaged to form the x coordinate of the group center and the y coordinate of the client characters is averaged to form the y coordinate of the group center.
[0040] At step 502, entities in the group's known-entity list that have changed at step 304 are marked by setting their “dirty” bits.
[0041] At step 504, the process determines which cells in the virtual environment are related to the current group. Under this embodiment of the invention, the virtual environment is divided into cells such as cells 106, 108, 114, 116, and 118 of FIG. 1. In FIG. 1, the cells are shown as being equally sized. However, in other embodiments, the cells may be different sizes depending on the location of entities within the virtual world. In particular, smaller cells may be used where there are a large number of entities and larger cells may be used where there are a small number of entities.
[0042] In step 504, the process determines which cells are related to the current group by determining which cells are within a specified distance of the group's center. For example, in FIG. 1, cells 106 and 108 are shown to be within the specified distance of group center 110 as indicated by circle 112. Similarly, cells 114, 116, and 118 are shown to be related to the group that has a group center 120 as indicated by the specified distance circle 122.
[0043] Once the related cells have been identified, one of the related cells is selected at step 506. At step 508, each entity in the selected cell is placed in an interest bucket of a bucket array. Under one embodiment, there are eight interest buckets, each associated with a different level of group interest. Under many embodiments, the interest is judged solely on the distance from the group center to the entity. For example, in one embodiment that uses eight buckets, there is a separate bucket associated with distances between the group center and the entity of 1-2, 3-4, 5-8. 9-16, 17-32, 33-64, 65-128, and 129-256. Entities that are more than some maximum distance from the group center are not placed in any of the buckets. Under some embodiments, different distances are used for different types of entities. For example, a building entity may be visible if the distance is less than 400 while a character entity will only be visible if the distance is less than 200.
[0044] After all of the entities of a cell have been placed in an interest bucket or discarded as being too far from the group center, the process determines if there are more related cells for the group at step 510. If there are more related cells, the process returns to step 506 to select another related cell and step 508 is repeated for the newly selected cell.
[0045] When there are no further related cells for the current group at step 510, the process continues at step 512 where a bucket of entities is selected. In particular, the bucket that contains the entities of most interest is selected. Thus, if the interest determination is based on distance from the group center, the bucket that contains entities that are closest to the group center is selected.
[0046] At step 514, an entity within the selected bucket is selected. At step 516, the bandwidth for each client in the group is determined to determine if the bandwidth for any of the clients is full. If the bandwidth for any of the clients is full, the process ends at step 518. This ensures that all group members receive the same amount of information about the entities.
[0047] If the bandwidth is not full for any of the clients in the group, the process determines if the selected entity is in the group's known-entity list at step 520. If the entity is not in the group's known-entity list, the entity is added to the group's known-entity list and to the known-entity list of each character in the group at step 522. At step 524, a complete set of information for the entity is sent to each client of the group so that each client is able to fully render the entity.
[0048] If the entity is in the group's known-entity list, the process sends an update for the entity to all clients of the group if the “dirty” bit is set for the entity in the known-entity list. Thus, if the entity has changed since the last update cycle, these changes are provided to each client. If the “dirty” bit has not been set for the entity in the group's known-entity list, the entity is deemed to have not changed in this update cycle and no information needs to be sent to any of the clients.
[0049] After the information for the entities has been updated and sent to the clients, the process determines if there are more entities in the current bucket at step 528. If there are more entities, the next entity is selected at step 514 and steps 516-526 are repeated for the newly selected entity. If there are no more entities in the current entity bucket, the process determines if there are more buckets at step 530. If there are more buckets, the next bucket is selected at step 512, by selecting the bucket of next lower interest from the current bucket. Steps 514-528 are then repeated for the new bucket. When there are no more buckets of interest to process at step 530, the filtering process ends at step 532.
[0050] As can be seen in FIG. 5, the filtering operation is performed on a group-by-group basis such that the decisions as to which entities to provide information for is determined for a group instead of each of the individual client characters within the group. This reduces the number of filtering operations that need to be performed and thus reduces the burden on the server processor when performing the update cycle.
[0051] Although the present invention has been described with reference to particular embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.
PUM


Description & Claims & Application Information
We can also present the details of the Description, Claims and Application information to help users get a comprehensive understanding of the technical details of the patent, such as background art, summary of invention, brief description of drawings, description of embodiments, and other original content. On the other hand, users can also determine the specific scope of protection of the technology through the list of claims; as well as understand the changes in the life cycle of the technology with the presentation of the patent timeline. Login to view more.
Similar technology patents
Incremental map generation, refinement and extension with GPS traces
Owner:TOMTOM GLOBAL CONTENT
Image reading apparatus
Owner:FUJIFILM BUSINESS INNOVATION CORP
Method predicting view synthesis in multi-view video coding and method for constituting merge candidate list by using same
Owner:LG ELECTRONICS INC
Method and device for updating data in distributed storage system
Owner:SHANDA INTERACTIVE ENTERTAINMENT
Pre-ordering based on location of a customer
Owner:BANK OF AMERICA CORP
Classification and recommendation of technical efficacy words
- improve efficiency
Video coding methods and apparatuses
Owner:MICROSOFT TECH LICENSING LLC
Method and apparatus for controlling a selectable voltage audio power output stage
Owner:CIRRUS LOGIC INC
Wireless power transmitter and power transmission method thereof
Owner:LG INNOTEK CO LTD
Plasma processing apparatus and plasma processing method
Owner:HITACHI HIGH-TECH CORP