US20100113159A1 - Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems - Google Patents
Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems Download PDFInfo
- Publication number
- US20100113159A1 US20100113159A1 US12/265,931 US26593108A US2010113159A1 US 20100113159 A1 US20100113159 A1 US 20100113159A1 US 26593108 A US26593108 A US 26593108A US 2010113159 A1 US2010113159 A1 US 2010113159A1
- Authority
- US
- United States
- Prior art keywords
- game
- servers
- cell
- computer
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000638 solvent extraction Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000005192 partition Methods 0.000 claims abstract description 29
- 230000008859 change Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004088 simulation Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F3/00—Board games; Raffle games
- A63F3/04—Geographical or like games ; Educational games
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A63F13/12—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1025—Dynamic adaptation of the criteria on which the server selection is based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F3/00—Board games; Raffle games
- A63F3/04—Geographical or like games ; Educational games
- A63F3/0434—Geographical games
- A63F2003/0439—Geographical games using geographical maps
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5526—Game data structure
- A63F2300/5533—Game data structure using program state or machine event data, e.g. server keeps track of the state of multiple players on in a multiple player game
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F9/00—Games not otherwise provided for
- A63F9/24—Electric games; Games using electronic circuits not otherwise provided for
Definitions
- the present invention relates generally to online applications, and in particular to online gaming applications.
- MMOGs massively multiplayer online games
- virtual worlds such as Second Life
- the limits to scaling in this scenario are the network bandwidth of the single system and, more significantly, the processor capacity of a game server in the system.
- the game server functioning as a game engine, is required to provide the simulation capabilities for every object and player in the virtual world.
- Certain game servers, particularly those providing FPS (First Person Shooter) styles of games are only capable of supporting tens of users due to the complexity of the simulation and the low latency requirements of the game.
- each of multiple game servers runs a map part within the current sphere of interest of the client.
- the map of the online game can be divided based on the game representation of the map, as a Binary Space Partition (BSP) tree.
- BSP Binary Space Partition
- the tree can then be used to control how game entities are moved between servers running the game engine, such that responsibility for areas of the game map is distributed among a number of servers.
- a disadvantage of this approach is that said tree is not designed to be used as the basis of a partitioning exercise, being originally designed for the rapid creation of views within the world and for deducing the sphere of influence of any given object within the map.
- such approaches require detailed knowledge of, and access to, the map definition. As there are many data formats for the storage of map data, requiring detailed knowledge of the formats makes it more difficult to build a scalable system that can support multiple game/world engines.
- the invention provides a method and system for hosting an online virtual world system on game engine servers.
- One embodiment involves obtaining a map representing a virtual world in the game, partitioning the map into multiple partitions, and selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
- FIG. 1 shows a functional block diagram of a virtual world system embodying aspects of the present invention.
- FIG. 2 shows a flowchart of a process for partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention.
- FIG. 3 shows a space map for a game.
- FIG. 4 shows a grid superimposed on the map.
- FIG. 5 illustrates partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention.
- the invention provides a method and apparatus for partitioning virtual worlds using prioritized topic spaces in a virtual world system. This allows reliably partitioning a virtual world to increase scalability and permit dynamic load balancing.
- One embodiment of the invention involves using an externally computed management grid, based on key factors of the map (such as the bounding box data), and a prioritized topic space approach to implement a highly scalable virtual world solution that can be dynamically load balanced across a grid of servers.
- the prioritized topics space approach distributes the workload of running a virtual world or game simulation across a cluster of network connected servers.
- the responsibility for running the simulation is divided up amongst the servers such that each takes responsibility for one or more areas of the virtual world and the objects and avatars within those areas.
- the virtual world map is divided into individual grid squares (for a 2 dimensional division) or cubes (for a 3 dimensional division), such that the computing resources for running the simulation of any grid element, when fully populated with the maximum possible number of objects and/or avatars, does not exceed the capabilities of the least capable server in the system.
- Clients connect to the system via a client proxy element which takes incoming data packets and publishes them to topics that represent the area of the map in which the client's avatar is currently resident.
- the simulation engine responsible for the area of the map containing the players avatar subscribes to the topic representing that map area and thus receives the inbound data packets from the client.
- the simulation engines periodically output update data reflecting changes in the state of objects and avatars within the areas of the map they are responsible for. These data updates are published to topics representing the map area within which the object to which the state change corresponds is situated.
- the client proxy processes subscribe to the topics for the area of the map the avatar of the client is in and the neighboring areas that are visible to the client and thus receive all relevant outbound update packets from the simulation engines that are then formatted into a packet understandable by the client.
- the simulation engine outputs a complete data update packet for each and every client within its map and each packet is tailored for the client so that it receives only data that is relevant to it and for objects and avatars within sight. This leads the game engine to potentially send the same data multiple times once for each client to which the object is visible. This is an expensive operation.
- each state change for an object is published to the pub/sub framework once and is delivered to each client proxy that needs it by the pub/sub framework, thus reducing the work of the simulation engine.
- prioritization of state change data is used to reduce the network bandwidth used.
- a normal priority state change may be the movement of the avatar of a player
- a high priority change may be the movement of a projectile towards the player or the playing of a sound effect
- a low priority state change may be the movement of another player that is some distance from the avatar of the client.
- the lower priority data can be discarded or transmitted later without undue loss of fidelity to the players gaming experience.
- the invention reduces the amount of time any quantity of state change data is sent by the simulation from potentially hundreds to just once.
- a priority is assigned with the publication in just the same way as the current systems associate a priority, high for a projectile or immediate sound effect, medium for movement of objects close by, and low for movement of distant objects.
- This prioritization provides guidance to the pub/sub framework as to the order data that should be sent across the network to subscribers. Different pieces of data published to the same topic may be assigned different priorities and thus the order of receipt of data may be different from the order of sending.
- a separate priority can be assigned to a topic.
- the client proxy will set up subscriptions on behalf of its client for the topics that represent the grid areas surrounding the avatar of the client.
- the grid square that the client is in will have the highest priority and the priorities of topics for the squares surrounding will have decreasing priority the further they are away from the avatar of the client.
- FIG. 1 shows an example system 10 embodying aspects of the invention.
- the system 10 provides a virtual world hosting architecture, including a topology where world/game clients 12 connect to one of a number m of client proxy servers 14 which in turn communicate with a grid of n game engine servers 16 over which the world map is spread.
- Each game engine server 16 is interfaced to a publication and subscription (pub/sub) framework 18 and managed by a corresponding engine agent 19 that isolates the game engine from the details of the pub/sub mechanism.
- the clients 12 communicate with the proxies 14 using the UDP protocol over a network 15 .
- the proxies 14 communicate with the game engines 16 using the pub/sub framework 18 which may operate e.g., using a very high performance network mechanism, such as UDP multicasting, a reliable transport such as TCP (transport control protocol), or a very specialized system such as a high speed processor interconnection mechanism.
- a very high performance network mechanism such as UDP multicasting, a reliable transport such as TCP (transport control protocol), or a very specialized system such as a high speed processor interconnection mechanism.
- the pub/sub framework 18 services game and world clients (players) 12 , and connects them to a grid of game and world servers (game engines) 16 .
- Data is published to topics, which may represent logical server identities or roles, and is delivered by the pub/sub framework 18 to those processes that expressed an interest (subscribed) to the topic.
- the proxy servers 14 subscribe to topics relevant for their clients 12 .
- a game engine 16 publishes data changes for each object or player it is managing once per game cycle (i.e., publishing data to named topics).
- the subscribing proxies then aggregate the received data from the framework 18 and forward the aggregated data to their clients 12 .
- the system uses a 2-dimensional or 3-dimensional management grid that is logically overlaid on the game world map.
- This grid is defined using a computational method based on the coordinate system of the game engine, and arranged so as to encompass the whole of the virtual world map.
- Individual grid square cells are defined such that the number of player avatars that can be contained within the area/volume of a grid cell can be supported by the least capable computer system.
- Each game engine server within the solution may have responsibility for one or more cells. In practice, each engine is likely to have responsibility for a large number of cells (e.g., in the thousands).
- Each game engine server in the solution executes the simulation and outputs data concerning state changes to entities within its area of the game. The game server also receives state change data from game clients that are represented by avatars within the cells the server is responsible for.
- Each cell within the management grid is assigned a unique topic name within the topic space of the framework 18 .
- the topics name is used to publish data relevant to the cell and interested proxies may subscribe to the topics in order to receive such data.
- the game servers publish state change data for objects within any particular cell to the topic assigned to that cell.
- the proxies 14 subscribe to the topics associated with the cells which lie within the sphere of interest of each of the player avatars representing the players that are connected to them.
- each proxy receives all data relevant to corresponding clients 12 and can aggregate this information into a normal outbound game protocol message on the client connection.
- state change data from game clients 12 is received by the client proxies 14 through the normal game network protocol and is then published via the framework 18 to the cell topic that represents the cell that the player's avatar is currently in.
- Each game engine server 16 subscribes to the cell topic and thus receives the state change data.
- the routing of inbound state change data to the proper engine server 16 is entirely managed by the pub/sub framework 18 .
- FIG. 2 shows a flowchart of a process 40 for partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention. The process blocks in FIG. 2 are described below.
- FIG. 3 shows an example virtual world map 20 which represents a number of interlinked rooms 21 , shown on a 2-dimensional coordinate system centered on (0, 0).
- the map may be defined to the game/virtual world engine and client as a BSP (Binary Space Partitioning) tree, or other data format.
- BSP Binary Space Partition
- the map is constructed around a description, wherein an example herein is based on a top-down, or ground view, 2-dimensions (the techniques described herein can easily by extended to 3 dimensions).
- the example map 20 extends from ⁇ 500 to +500 in the x-axis and from ⁇ 400 to +400 in the y-axis.
- a world management system 17 ( FIG. 1 ) includes a partitioner module 17 a for partitioning the map, and a load balancer 17 b for balancing the load between servers.
- the load balancing function 17 b can also be distributed among the servers, as discussed in the example herein.
- FIG. 4 shows an example logical grid 22 superimposed on the map 20 , wherein the example grid 22 includes twenty cells 23 .
- the grid 22 is not directly related to the original map data except to ensure the grid encompasses the total coordinate space and that the size of the individual grid cells 23 is such that all servers within the cluster are capable of supporting at least one grid cell when the activity within the cell is at a maximum.
- the smallest grid cell size is defined such that each cell is capable of containing 100 avatars (10 ⁇ 10), and in certain game engines this relates to a map floor area of e.g., 10 meters by 10 meters.
- the cells 23 in the grid 22 can be considered to have an identity based on their x and y positions.
- the grid 22 extends to five cells 23 in the x-axis and four cells 23 in the y-axis.
- the size of the grid cell has been selected in terms of the map coordinate system.
- the selected grid square size is 200 ⁇ 200 units. Other number of grid cells and of different sizes may be selected.
- a grid cell containing any point within the map can be expressed as a (x, y) coordinate. Knowing the cell size in map coordinate units, the minimum x coordinate (min_x_coord) and the minimum y coordinate (min_y_coord) of the map bounding box, and assuming integer arithmetic, then the cell identifiers gx and gy for each cell can be determined as:
- gx ( x _cord ⁇ min — x _coord)/cell_size
- gy ( y _cord ⁇ min — y _coord)/cell_size.
- x and y cell identifiers gx, gy are then mapped to a unique topic name by simple concatenation of the text representation of the gx and gy values with a separator.
- the twenty individual cells 23 would be mapped to twenty unique topic names “1-1”, “1-2”, “1-3”, “1-4”, “2-1”, “2-2”, etc.
- Block 42 World Partitioning and Load Balancing
- FIG. 5 graphically illustrates an example distribution 30 for cells 23 to game engines. In this case the world map has been partitioned between 9 game servers (e.g., Engine 1 -Engine 9 ).
- cells “1-2”, “1-1”, “2-1” and “2-2” are assigned to Engine 1 ; cells “1-4” and “1-3” are assigned to Engine 2 ; cells “4-4” and “4-3” are assigned to Engine 3 ; cells “3-1” and “3-2” are assigned to Engine 4 ; cells “4-1”, “4-2”, “5-1” and “5-2” are assigned to Engine 5 ; cell “3-4” is assigned to Engine 6 ; cell “2-4” is assigned to Engine 7 ; cells “2-3” and “3-3” are assigned to Engine 8 ; and, cells “5-4” and “5-3” are assigned to Engine 9 .
- This partitioning is preferably performed initially on system start-up based upon externally provided information, automated map analysis, or historical usage information.
- the load on individual servers may change. For example, if a number of players (clients) move into a single small area (e.g., moving from a lobby area into an auditorium or meeting room), the load on a single server may start to increase. In this situation, the partitioning of the system may be changed dynamically by publishing requests with the framework 18 to the different servers within the cluster to move responsibility for one or more cells between them. If in the example shown in FIG. 5 , several players move into the room in the right-hand lower corner of the map, then sever Engine 5 may become too heavily loaded. In this case, server Engine 4 may be instructed to take responsibility for cells “4-1” and “4-2” thus dividing up the work required to support activity within the room. To achieve this, entities “transition” between the servers as described further below.
- Block 43 Game Client and Server Data Flow Control
- Each client proxy 14 handles inbound client connection requests, forwards client state change data to the appropriate game server 16 , and outputs server state change data to the client 12 .
- the establishment of new connections is known to those skilled in the art.
- the game servers 16 execute (run) the simulation, and output state changes for the entities within the game.
- Block 44 Data Flow Control from the Game Client
- Each game client 12 delivers state change packets across a connection to the corresponding client proxy 14 e.g., via UDP, using a game or virtual world specific protocol per game cycle (e.g., 10 times per second).
- the client proxy has sufficiently detailed information about the game protocol to extract the player's current position information from the inbound messages.
- the proxy 14 calculates the management grid cell 23 that a player is currently in, and the associated topic name using the steps described above.
- the proxy 14 then publishes the inbound data packet unchanged to the topic name computed, using the framework 18 .
- Block 45 Data Flow Control to the Game Client
- the proxy 14 tracks a management grid cell 23 that each of corresponding client 12 is currently in. Whenever the proxy 14 detects a new client in a cell or that the client has moved from one cell to another, the proxy 14 determines which management grid cells 23 are currently relevant to that client. In the grid 22 of FIG. 5 , consider the x-axis from left to right, and the y-axis from bottom to top.
- the proxy 14 subscribes to the topics for these cells, so that it can receive game engine update data relevant to said client (i.e., reflecting any state changes of entities, such as other player avatars, within the neighboring cells).
- each game server 16 executes its part of the simulation, using the framework 18 , the server 16 publishes state change data for each entity under its control, to the topic for the grid cell in which the entity resides. State changes are delivered by the framework 18 to relevant client proxies 14 based on the topics each proxy subscribed to. Thus, each proxy 14 only receives state changes needed for its corresponding clients 12 . Each proxy 14 then aggregates the individual state change data into a protocol message for each of its clients, based on their individual areas of interest.
- Block 46 Entity Transition Control
- each game server 16 is responsible for an area of the world map 20 as determined by the aforementioned partitioning (e.g., FIG. 5 ). As the avatar moves around the map 20 , responsibility for the avatar must be transitioned between game servers 16 . To facilitate this, game data is again published via the framework 18 .
- a game engine server 16 determines that an entity (player/client) is moving out of its area (cell) of control, that server packages up the state of the entity (e.g., state data, current script execution state, etc.) and publishes the state information to the topic for the management grid cell the entity is moving into.
- that game engine server receives from the framework 18 the state of the moving entity as published by the previous owner game engine server.
- the new game engine server of the transitioned (moved) entity resurrects the entity from the packaged state information and takes responsibility for publishing future outbound state change data for the transitioned entity.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Educational Technology (AREA)
- Tourism & Hospitality (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Human Resources & Organizations (AREA)
- General Health & Medical Sciences (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A method and system for hosting an online virtual world system on game engine servers, is provided. One implementation involves obtaining a map representing a virtual world in the game, partitioning the map into multiple partitions, and selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
Description
- 1. Field of the Invention
- The present invention relates generally to online applications, and in particular to online gaming applications.
- 2. Background Information
- Conventional massively multiplayer online games (MMOGs) and virtual worlds (such as Second Life) are unable to scale to support very large numbers of players within a single game/world. This is because such games and virtual worlds are reliant on a single instance of the game, running on a single physical computer system, acting as the authority for all activities within the game. Typically, the limits to scaling in this scenario are the network bandwidth of the single system and, more significantly, the processor capacity of a game server in the system. The game server, functioning as a game engine, is required to provide the simulation capabilities for every object and player in the virtual world. As the number of players (clients) increases the computing resources required increases dramatically. Certain game servers, particularly those providing FPS (First Person Shooter) styles of games, are only capable of supporting tens of users due to the complexity of the simulation and the low latency requirements of the game.
- In another approach, each of multiple game servers (game engines) runs a map part within the current sphere of interest of the client. The map of the online game can be divided based on the game representation of the map, as a Binary Space Partition (BSP) tree. The tree can then be used to control how game entities are moved between servers running the game engine, such that responsibility for areas of the game map is distributed among a number of servers. A disadvantage of this approach is that said tree is not designed to be used as the basis of a partitioning exercise, being originally designed for the rapid creation of views within the world and for deducing the sphere of influence of any given object within the map. In addition, such approaches require detailed knowledge of, and access to, the map definition. As there are many data formats for the storage of map data, requiring detailed knowledge of the formats makes it more difficult to build a scalable system that can support multiple game/world engines.
- The invention provides a method and system for hosting an online virtual world system on game engine servers. One embodiment involves obtaining a map representing a virtual world in the game, partitioning the map into multiple partitions, and selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
- Other aspects and advantages of the present invention will become apparent from the following detailed description, which, when taken in conjunction with the drawings, illustrate by way of example the principles of the invention.
- For a fuller understanding of the nature and advantages of the invention, as well as a preferred mode of use, reference should be made to the following detailed description read in conjunction with the accompanying drawings, in which:
-
FIG. 1 shows a functional block diagram of a virtual world system embodying aspects of the present invention. -
FIG. 2 shows a flowchart of a process for partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention. -
FIG. 3 shows a space map for a game. -
FIG. 4 shows a grid superimposed on the map. -
FIG. 5 illustrates partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention. - The following description is made for the purpose of illustrating the general principles of the invention and is not meant to limit the inventive concepts claimed herein. Further, particular features described herein can be used in combination with other described features in each of the various possible combinations and permutations. Unless otherwise specifically defined herein, all terms are to be given their broadest possible interpretation including meanings implied from the specification as well as meanings understood by those skilled in the art and/or as defined in dictionaries, treatises, etc.
- The invention provides a method and apparatus for partitioning virtual worlds using prioritized topic spaces in a virtual world system. This allows reliably partitioning a virtual world to increase scalability and permit dynamic load balancing. One embodiment of the invention involves using an externally computed management grid, based on key factors of the map (such as the bounding box data), and a prioritized topic space approach to implement a highly scalable virtual world solution that can be dynamically load balanced across a grid of servers.
- The prioritized topics space approach distributes the workload of running a virtual world or game simulation across a cluster of network connected servers. The responsibility for running the simulation is divided up amongst the servers such that each takes responsibility for one or more areas of the virtual world and the objects and avatars within those areas.
- The virtual world map is divided into individual grid squares (for a 2 dimensional division) or cubes (for a 3 dimensional division), such that the computing resources for running the simulation of any grid element, when fully populated with the maximum possible number of objects and/or avatars, does not exceed the capabilities of the least capable server in the system.
- Clients connect to the system via a client proxy element which takes incoming data packets and publishes them to topics that represent the area of the map in which the client's avatar is currently resident. The simulation engine responsible for the area of the map containing the players avatar subscribes to the topic representing that map area and thus receives the inbound data packets from the client.
- As the simulation runs, the simulation engines periodically output update data reflecting changes in the state of objects and avatars within the areas of the map they are responsible for. These data updates are published to topics representing the map area within which the object to which the state change corresponds is situated. The client proxy processes subscribe to the topics for the area of the map the avatar of the client is in and the neighboring areas that are visible to the client and thus receive all relevant outbound update packets from the simulation engines that are then formatted into a packet understandable by the client.
- In a typical conventional game system, the simulation engine outputs a complete data update packet for each and every client within its map and each packet is tailored for the client so that it receives only data that is relevant to it and for objects and avatars within sight. This leads the game engine to potentially send the same data multiple times once for each client to which the object is visible. This is an expensive operation. By contrast, according to an embodiment of the invention each state change for an object is published to the pub/sub framework once and is delivered to each client proxy that needs it by the pub/sub framework, thus reducing the work of the simulation engine.
- In a virtual world and game engine, prioritization of state change data is used to reduce the network bandwidth used. A normal priority state change may be the movement of the avatar of a player, a high priority change may be the movement of a projectile towards the player or the playing of a sound effect, and a low priority state change may be the movement of another player that is some distance from the avatar of the client. When computing resources or when network bandwidth is scarce, the lower priority data can be discarded or transmitted later without undue loss of fidelity to the players gaming experience.
- According to the invention, by using prioritized topic spaces, such techniques are extended to further reduce the computing resources required. The invention reduces the amount of time any quantity of state change data is sent by the simulation from potentially hundreds to just once. When the state change data is published, a priority is assigned with the publication in just the same way as the current systems associate a priority, high for a projectile or immediate sound effect, medium for movement of objects close by, and low for movement of distant objects. This prioritization provides guidance to the pub/sub framework as to the order data that should be sent across the network to subscribers. Different pieces of data published to the same topic may be assigned different priorities and thus the order of receipt of data may be different from the order of sending.
- On the subscriber side, a separate priority can be assigned to a topic. Thus the client proxy will set up subscriptions on behalf of its client for the topics that represent the grid areas surrounding the avatar of the client. The grid square that the client is in will have the highest priority and the priorities of topics for the squares surrounding will have decreasing priority the further they are away from the avatar of the client.
- The combination of the priorities associated with the data packets by the publisher, effectively based on the category of the state change, combined with the priorities associated with the topics by the subscriber based on geospatial relevance, provide an efficient method to ensure the most relevant data is delivered to and thus processed by the client proxy, and therefore client, first.
-
FIG. 1 shows anexample system 10 embodying aspects of the invention. Thesystem 10 provides a virtual world hosting architecture, including a topology where world/game clients 12 connect to one of a number m ofclient proxy servers 14 which in turn communicate with a grid of ngame engine servers 16 over which the world map is spread. Eachgame engine server 16 is interfaced to a publication and subscription (pub/sub)framework 18 and managed by acorresponding engine agent 19 that isolates the game engine from the details of the pub/sub mechanism. Theclients 12 communicate with theproxies 14 using the UDP protocol over anetwork 15. Theproxies 14 communicate with thegame engines 16 using the pub/sub framework 18 which may operate e.g., using a very high performance network mechanism, such as UDP multicasting, a reliable transport such as TCP (transport control protocol), or a very specialized system such as a high speed processor interconnection mechanism. - The pub/
sub framework 18 services game and world clients (players) 12, and connects them to a grid of game and world servers (game engines) 16. Data is published to topics, which may represent logical server identities or roles, and is delivered by the pub/sub framework 18 to those processes that expressed an interest (subscribed) to the topic. Using a subscription service process of the pub/sub framework 18, theproxy servers 14 subscribe to topics relevant for theirclients 12. Using a publication service process of theframework 18, agame engine 16 publishes data changes for each object or player it is managing once per game cycle (i.e., publishing data to named topics). The subscribing proxies then aggregate the received data from theframework 18 and forward the aggregated data to theirclients 12. - The system uses a 2-dimensional or 3-dimensional management grid that is logically overlaid on the game world map. This grid is defined using a computational method based on the coordinate system of the game engine, and arranged so as to encompass the whole of the virtual world map. Individual grid square cells (or cubes in the 3-dimensional grid), are defined such that the number of player avatars that can be contained within the area/volume of a grid cell can be supported by the least capable computer system.
- Responsibility for executing the game/world simulation associated with each cell of the management grid is assigned to one or more game engine servers. Each game engine server within the solution may have responsibility for one or more cells. In practice, each engine is likely to have responsibility for a large number of cells (e.g., in the thousands). Each game engine server in the solution executes the simulation and outputs data concerning state changes to entities within its area of the game. The game server also receives state change data from game clients that are represented by avatars within the cells the server is responsible for.
- Each cell within the management grid is assigned a unique topic name within the topic space of the
framework 18. The topics name is used to publish data relevant to the cell and interested proxies may subscribe to the topics in order to receive such data. - Using the
framework 18, the game servers publish state change data for objects within any particular cell to the topic assigned to that cell. Theproxies 14 subscribe to the topics associated with the cells which lie within the sphere of interest of each of the player avatars representing the players that are connected to them. Thus, each proxy receives all data relevant tocorresponding clients 12 and can aggregate this information into a normal outbound game protocol message on the client connection. - Similarly, state change data from
game clients 12 is received by theclient proxies 14 through the normal game network protocol and is then published via theframework 18 to the cell topic that represents the cell that the player's avatar is currently in. Eachgame engine server 16 subscribes to the cell topic and thus receives the state change data. The routing of inbound state change data to theproper engine server 16 is entirely managed by the pub/sub framework 18. -
FIG. 2 shows a flowchart of aprocess 40 for partitioning virtual worlds using prioritized topic spaces in a virtual world system, according to an embodiment of the invention. The process blocks inFIG. 2 are described below. - Block 41: Determination of the Management Grid and Topic Names
- The system is controlled by applying an arbitrarily sized grid to the coordinate space of the map.
FIG. 3 shows an examplevirtual world map 20 which represents a number of interlinkedrooms 21, shown on a 2-dimensional coordinate system centered on (0, 0). The map may be defined to the game/virtual world engine and client as a BSP (Binary Space Partitioning) tree, or other data format. Binary Space Partition (BSP) trees, a common form of expressing a virtual world or game map, are well known within the art of computer gaming. Generally, the map is constructed around a description, wherein an example herein is based on a top-down, or ground view, 2-dimensions (the techniques described herein can easily by extended to 3 dimensions). Theexample map 20 extends from −500 to +500 in the x-axis and from −400 to +400 in the y-axis. - A world management system 17 (
FIG. 1 ) includes apartitioner module 17 a for partitioning the map, and aload balancer 17 b for balancing the load between servers. Theload balancing function 17 b can also be distributed among the servers, as discussed in the example herein. - The
system 17 superimposes alogical grid 22 on the map coordinate space.FIG. 4 shows an examplelogical grid 22 superimposed on themap 20, wherein theexample grid 22 includes twentycells 23. Thegrid 22 is not directly related to the original map data except to ensure the grid encompasses the total coordinate space and that the size of theindividual grid cells 23 is such that all servers within the cluster are capable of supporting at least one grid cell when the activity within the cell is at a maximum. In a preferred embodiment, the smallest grid cell size is defined such that each cell is capable of containing 100 avatars (10×10), and in certain game engines this relates to a map floor area of e.g., 10 meters by 10 meters. - The
cells 23 in thegrid 22 can be considered to have an identity based on their x and y positions. In the example above, thegrid 22 extends to fivecells 23 in the x-axis and fourcells 23 in the y-axis. In overlaying thegrid 22 on the map coordinate space the size of the grid cell has been selected in terms of the map coordinate system. In the example above, where the map coordinate space is effectively 1000 units (−500 to +500) in the x-axis and 800 units in the y-axis, the selected grid square size is 200×200 units. Other number of grid cells and of different sizes may be selected. - Since the grid spans the entire map coordinate space, a grid cell containing any point within the map can be expressed as a (x, y) coordinate. Knowing the cell size in map coordinate units, the minimum x coordinate (min_x_coord) and the minimum y coordinate (min_y_coord) of the map bounding box, and assuming integer arithmetic, then the cell identifiers gx and gy for each cell can be determined as:
-
gx=(x_cord−min— x_coord)/cell_size, -
gy=(y_cord−min— y_coord)/cell_size. - These x and y cell identifiers gx, gy are then mapped to a unique topic name by simple concatenation of the text representation of the gx and gy values with a separator. Thus, for the
example grid 22, the twentyindividual cells 23 would be mapped to twenty unique topic names “1-1”, “1-2”, “1-3”, “1-4”, “2-1”, “2-2”, etc. - Block 42: World Partitioning and Load Balancing
- Using the calculated management grid identifiers grid (i.e., gx, gy), responsibility for running the world simulation can be divided up between a number of
game engine servers 16. The selection of whichmanagement cells 23 are associated with whichservers 16 can be computed by different algorithms, typically may be based on the computational capacity of the servers and also the geospatial relationships of thegrid cells 23, to provide an essentially balanced computational load on theinvolved servers 17.FIG. 5 graphically illustrates anexample distribution 30 forcells 23 to game engines. In this case the world map has been partitioned between 9 game servers (e.g., Engine 1-Engine 9). Specifically: cells “1-2”, “1-1”, “2-1” and “2-2” are assigned toEngine 1; cells “1-4” and “1-3” are assigned toEngine 2; cells “4-4” and “4-3” are assigned toEngine 3; cells “3-1” and “3-2” are assigned toEngine 4; cells “4-1”, “4-2”, “5-1” and “5-2” are assigned toEngine 5; cell “3-4” is assigned toEngine 6; cell “2-4” is assigned toEngine 7; cells “2-3” and “3-3” are assigned toEngine 8; and, cells “5-4” and “5-3” are assigned toEngine 9. This partitioning is preferably performed initially on system start-up based upon externally provided information, automated map analysis, or historical usage information. - During execution of the world simulation, the load on individual servers may change. For example, if a number of players (clients) move into a single small area (e.g., moving from a lobby area into an auditorium or meeting room), the load on a single server may start to increase. In this situation, the partitioning of the system may be changed dynamically by publishing requests with the
framework 18 to the different servers within the cluster to move responsibility for one or more cells between them. If in the example shown inFIG. 5 , several players move into the room in the right-hand lower corner of the map, then severEngine 5 may become too heavily loaded. In this case,server Engine 4 may be instructed to take responsibility for cells “4-1” and “4-2” thus dividing up the work required to support activity within the room. To achieve this, entities “transition” between the servers as described further below. - Block 43: Game Client and Server Data Flow Control
- Each
client proxy 14 handles inbound client connection requests, forwards client state change data to theappropriate game server 16, and outputs server state change data to theclient 12. The establishment of new connections is known to those skilled in the art. Thegame servers 16 execute (run) the simulation, and output state changes for the entities within the game. - Block 44: Data Flow Control from the Game Client
- Each
game client 12 delivers state change packets across a connection to thecorresponding client proxy 14 e.g., via UDP, using a game or virtual world specific protocol per game cycle (e.g., 10 times per second). The client proxy has sufficiently detailed information about the game protocol to extract the player's current position information from the inbound messages. Theproxy 14 calculates themanagement grid cell 23 that a player is currently in, and the associated topic name using the steps described above. Theproxy 14 then publishes the inbound data packet unchanged to the topic name computed, using theframework 18. - Block 45: Data Flow Control to the Game Client
- The proxy 14 tracks a
management grid cell 23 that each of correspondingclient 12 is currently in. Whenever theproxy 14 detects a new client in a cell or that the client has moved from one cell to another, theproxy 14 determines whichmanagement grid cells 23 are currently relevant to that client. In thegrid 22 ofFIG. 5 , consider the x-axis from left to right, and the y-axis from bottom to top. If the current position of a client defines that it is in cell x=2, y=3, and if the game defines that a client can only see twenty meters in any direction, and themanagement grid 22 is based on 10-meter by 10-meter cells 23, then there are eight neighboringcells 23 that may contain entities that are relevant to the client (i.e., cells “1-2”, “2-2”, “2-3”, “1-3”, “3-3”, “1-4”, “2-4”, and “3-4”) as well as the cell the client resides in (i.e., cell “2-3”). Using theframework 18, theproxy 14 subscribes to the topics for these cells, so that it can receive game engine update data relevant to said client (i.e., reflecting any state changes of entities, such as other player avatars, within the neighboring cells). - When each
game server 16 executes its part of the simulation, using theframework 18, theserver 16 publishes state change data for each entity under its control, to the topic for the grid cell in which the entity resides. State changes are delivered by theframework 18 torelevant client proxies 14 based on the topics each proxy subscribed to. Thus, each proxy 14 only receives state changes needed for its correspondingclients 12. Eachproxy 14 then aggregates the individual state change data into a protocol message for each of its clients, based on their individual areas of interest. - Block 46: Entity Transition Control
- As players move around the virtual world, their avatars come under the control of different game engine servers. As noted, each
game server 16 is responsible for an area of theworld map 20 as determined by the aforementioned partitioning (e.g.,FIG. 5 ). As the avatar moves around themap 20, responsibility for the avatar must be transitioned betweengame servers 16. To facilitate this, game data is again published via theframework 18. - When a
game engine server 16 determines that an entity (player/client) is moving out of its area (cell) of control, that server packages up the state of the entity (e.g., state data, current script execution state, etc.) and publishes the state information to the topic for the management grid cell the entity is moving into. As the new game engine server that now owns the cell into which the entity is moving has subscribed to the topics of all the cells it controls, that game engine server receives from theframework 18 the state of the moving entity as published by the previous owner game engine server. As such, the new game engine server of the transitioned (moved) entity resurrects the entity from the packaged state information and takes responsibility for publishing future outbound state change data for the transitioned entity. - As is known to those skilled in the art, the aforementioned example embodiments described above, according to the present invention, can be implemented in many ways, such as program instructions for execution by a processor, as software modules, as computer program product on computer readable media, as logic circuits, as silicon wafers, as integrated circuits, as application specific integrated circuits, as firmware, etc. Though the present invention has been described with reference to certain versions thereof; however, other versions are possible. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein.
- Those skilled in the art will appreciate that various adaptations and modifications of the just-described preferred embodiments can be configured without departing from the scope and spirit of the invention. Therefore, it is to be understood that, within the scope of the appended claims, the invention may be practiced other than as specifically described herein.
Claims (21)
1. A method for hosting an online virtual world system on game engine servers, comprising:
obtaining a map representing a virtual world in the game;
partitioning the map into multiple partitions; and
selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
2. The method of claim 1 further including performing dynamic load balancing among the servers.
3. The method of claim 2 further including:
determining a management grid for the map, the grid including multiple cells, wherein:
partitioning the map further includes partitioning the map into multiple partitions, each partition corresponding to one or more grid cells; and
selecting a game engine server further includes selecting a game engine sever for each partition for executing the game for detected clients in each cell of the partition.
4. The method of claim 3 , wherein dynamic load balancing further includes selecting servers to balance the load on the servers based on the computational capacities and the geospatial relationships of the areas of responsibility.
5. The method of claim 4 further including:
for each cell, determining a unique topic name within a topic space of a publication and subscription framework, wherein the topics name may be used to publish data relevant for the cell to the framework, and wherein interested servers may subscribe to the topics in order to receive such data from the framework.
6. The method of claim 5 , wherein dynamic load balancing further includes:
dynamically changing the partitioning by publishing requests with the framework to the different servers, and dynamically adjusting responsibility for one or more cells between the servers for balancing the load therebetween.
7. The method of claim 6 , wherein dynamic load balancing further includes:
detecting a game entity is moving out of a current cell into a destination cell;
a first server responsible for the current cell publishing the game state information of the entity to the topic for the destination cell;
a second server responsible for the destination cell, having previously subscribed to the topics of all the cells it is responsible for, receiving from the framework the state of the moving entity as published by the first server; and
the second server resurrecting state information of the entity, as responsible for publishing future state change data for the entity;
thereby achieving dynamic load balancing between the first and second servers.
8. A computer program product for hosting an online virtual world system on game engine servers, comprising a computer usable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to perform:
partitioning a map representing a virtual world in the game, into multiple partitions; and
selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
9. The computer program product of claim 8 , wherein the computer readable program when executed on the computer further causes the computer to further perform dynamic load balancing among the servers.
10. The computer program product of claim 9 , wherein the computer readable program when executed on the computer further causes the computer to further perform:
determining a management grid for the map, the grid including multiple cells, wherein:
partitioning the map further includes partitioning the map into multiple partitions, each partition corresponding to one or more grid cells; and
selecting a game engine server further includes selecting a game engine sever for each partition for executing the game for detected clients in each cell of the partition.
11. The computer program product of claim 10 , wherein the computer readable program when executed on the computer further causes the computer to further perform dynamic load balancing by selecting servers to balance the load on the servers based computational capacities and the geospatial relationships of the areas of responsibility.
12. The computer program product of claim 11 , wherein the computer readable program when executed on the computer further causes the computer to further perform:
for each cell, determining a unique topic name within a topic space of a publication and subscription framework, wherein the topics name may be used to publish data relevant for the cell to the framework, and wherein interested servers may subscribe to the topics in order to receive such data from the framework.
13. The computer program product of claim 12 , wherein the computer readable program when executed on the computer further causes the computer to further perform dynamic load balancing by dynamically changing the partitioning by publishing requests with the framework to the different servers, and dynamically adjusting responsibility for one or more cells between the servers for balancing the load therebetween.
14. The computer program product of claim 13 , wherein the computer readable program when executed on the computer further causes the computer to further perform:
detecting a game entity is moving out of a current cell into a destination cell;
for a first server responsible for the current cell, publishing the game state information of the entity to the topic for the destination cell;
for a second server responsible for the destination cell, having previously subscribed to the topics of all the cells it is responsible for, receiving from the framework the state of the moving entity as published by the first server; and
for the second server, resurrecting state information of the entity, as responsible for publishing future state change data for the entity;
thereby achieving dynamic load balancing between the first and second servers.
15. A system for hosting an online virtual world game, comprising:
a manager including a partitioner configured for partitioning a map representing a virtual world in the game into multiple partitions; and
a load balancer configured for selecting a game engine server for each partition as responsible for executing the game for detected game entities in that partition, wherein the selection is based on load balancing between the game engine servers.
16. The system of claim 15 , wherein the load balancer is further configured for performing dynamic load balancing among the servers.
17. The system of claim 16 , wherein the partitioner is further configured for determining a management grid for the map, the grid including multiple cells, wherein partitioning the map further includes partitioning the map into multiple partitions, each partition corresponding to one or more grid cells, and the load balancer is further configured for selecting a game engine sever for each partition for executing the game for detected clients in each cell of the partition.
18. The system of claim 17 , wherein the load balancer is further configured for dynamic load balancing by selecting servers to balance the load on the servers based on computational capacities and the geospatial relationships of the areas of responsibility.
19. The system of claim 18 , wherein the partitioner is further configured for determining a unique topic name for each cell, within a topic space of a publication and subscription framework, wherein the topics name may be used to publish data relevant for the cell to the framework, and wherein interested servers may subscribe to the topics in order to receive such data from the framework.
20. The system of claim 19 , wherein the load balancer is further configured for dynamically changing the partitioning by publishing requests with the framework to the different servers, and dynamically adjusting responsibility for one or more cells between the servers for balancing the load therebetween.
21. The system of claim 20 , wherein the load balancer includes distributed modules for dynamic load balancing by:
detecting a game entity is moving out of a current cell into a destination cell;
a first server responsible for the current cell publishing the game state information of the entity to the topic for the destination cell;
a second server responsible for the destination cell, having previously subscribed to the topics of all the cells it is responsible for, receiving from the framework the state of the moving entity as published by the first server; and
the second server resurrecting state information of the entity, as responsible for publishing future state change data for the entity;
thereby achieving dynamic load balancing between the first and second servers.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/265,931 US20100113159A1 (en) | 2008-11-06 | 2008-11-06 | Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems |
KR1020090074612A KR20100051014A (en) | 2008-11-06 | 2009-08-13 | Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/265,931 US20100113159A1 (en) | 2008-11-06 | 2008-11-06 | Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100113159A1 true US20100113159A1 (en) | 2010-05-06 |
Family
ID=42132101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/265,931 Abandoned US20100113159A1 (en) | 2008-11-06 | 2008-11-06 | Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100113159A1 (en) |
KR (1) | KR20100051014A (en) |
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146409A1 (en) * | 2008-12-04 | 2010-06-10 | Sony Computer Entertainment Inc. | Virtual Space Management System |
US20100146097A1 (en) * | 2008-12-04 | 2010-06-10 | Sony Computer Entertainment Inc. | Virtual Space Management System |
US20100197405A1 (en) * | 2009-02-03 | 2010-08-05 | Microsoft Corporation | Method and apparatus for thwarting traffic analysis in online games |
US20110131404A1 (en) * | 2009-12-02 | 2011-06-02 | Lee Dongchun | Apparatus and method for visualizing game packet data |
US20120079121A1 (en) * | 2010-09-28 | 2012-03-29 | Disney Enterprises, Inc | System and method for dynamic adaptive player cells for multi-player environments |
WO2012054405A3 (en) * | 2010-10-20 | 2012-06-21 | 1Microsoft Corporation | Placing objects on hosts using hard and soft constraints |
US8296267B2 (en) | 2010-10-20 | 2012-10-23 | Microsoft Corporation | Upgrade of highly available farm server groups |
US8386501B2 (en) | 2010-10-20 | 2013-02-26 | Microsoft Corporation | Dynamically splitting multi-tenant databases |
US20140031122A1 (en) * | 2012-07-24 | 2014-01-30 | Issc Technologies Corp. | System to deliver prioritized game audio wirelessly with a minimal latency |
US20140095660A1 (en) * | 2012-10-02 | 2014-04-03 | Nextbit Systems Inc. | Device connection proxy through cloud to optimize network messages |
US8751656B2 (en) | 2010-10-20 | 2014-06-10 | Microsoft Corporation | Machine manager for deploying and managing machines |
EP2745892A1 (en) * | 2012-12-21 | 2014-06-25 | Dassault Systèmes | Partition of a 3D scene into a plurality of zones processed by a computing resource |
US20140180653A1 (en) * | 2012-12-21 | 2014-06-26 | Dassault Systemes | Simulation Of The Physical Behavior Of An Object In A 3D Scene Divided Into A Plurality Of Zones |
US8799453B2 (en) | 2010-10-20 | 2014-08-05 | Microsoft Corporation | Managing networks and machines for an online service |
US20140228115A1 (en) * | 2013-02-14 | 2014-08-14 | Nocturnal Innovations LLC | Highly scalable cluster engine for hosting simulations of objects interacting within a space |
US20140243100A1 (en) * | 2012-10-02 | 2014-08-28 | Nextbit Systems Inc. | Optimization of gaming application execution using proxy connection |
US8850550B2 (en) | 2010-11-23 | 2014-09-30 | Microsoft Corporation | Using cached security tokens in an online service |
US20150092557A1 (en) * | 2013-09-27 | 2015-04-02 | Sudarshan Deshmukh | Dynamic resource repositioning load balancing and location management system and method |
US9043370B2 (en) | 2010-10-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Online database availability during upgrade |
WO2015081022A1 (en) * | 2013-12-01 | 2015-06-04 | Interdigital Patent Holdings, Inc. | Quality of experience optimization using policy-based decision engines |
US20150238867A1 (en) * | 2012-10-03 | 2015-08-27 | Gree, Inc. | Method of synchronizing online game, and server device |
CN106209963A (en) * | 2016-05-27 | 2016-12-07 | 北京畅游天下网络技术有限公司 | The method, server and the cluster that realize object transmission in a kind of MMORPG game |
EP3301572A1 (en) * | 2016-09-30 | 2018-04-04 | Dassault Systèmes | Method, program and system for simulating a 3d scene with a set of computing resources running in parallel |
WO2018215942A1 (en) * | 2017-05-23 | 2018-11-29 | Constructive Labs | Server system for processing a virtual space |
US10356165B2 (en) * | 2013-09-27 | 2019-07-16 | Sudarshan Deshmukh | Dynamic resource repositioning load balancing and location management system and method |
US10467315B2 (en) | 2010-12-09 | 2019-11-05 | Microsoft Technology Licensing, Llc | Codeless sharing of spreadsheet objects |
US10671773B2 (en) * | 2016-12-21 | 2020-06-02 | Dassault Systemes | Automatic partitioning of a 3D scene into a plurality of zones processed by a computing resource |
US10755525B2 (en) * | 2016-11-18 | 2020-08-25 | Angel Playing Cards Co., Ltd. | Inspection system, inspecting device and gaming chip |
US10769825B1 (en) * | 2018-12-19 | 2020-09-08 | EffectiveTalent Office LLC | Matched array talent alignment system and method |
US10803085B1 (en) | 2018-12-19 | 2020-10-13 | Airspeed Systems LLC | Matched array airspeed and angle of attack alignment system and method |
GB2584638A (en) * | 2019-06-03 | 2020-12-16 | Masters Of Pie Ltd | Method for server load balancing |
US20210012557A1 (en) * | 2017-05-31 | 2021-01-14 | LiveCGI, Inc. | Systems and associated methods for creating a viewing experience |
US10896529B1 (en) | 2018-12-19 | 2021-01-19 | EffectiveTalent Office LLC | Matched array talent architecture system and method |
US11010941B1 (en) | 2018-12-19 | 2021-05-18 | EffectiveTalent Office LLC | Matched array general talent architecture system and method |
US11016988B1 (en) | 2018-12-19 | 2021-05-25 | Airspeed Systems LLC | Matched array flight alignment system and method |
EP3846058A1 (en) * | 2019-12-30 | 2021-07-07 | TMRW Foundation IP SARL | Multi-dimensional 3d engine computing and virtualization-based dynamic load balancing of virtual or real worlds |
JP2022509882A (en) * | 2018-12-03 | 2022-01-24 | ソニー・インタラクティブエンタテインメント エルエルシー | Resource allocation driven by machine learning |
US11533367B2 (en) * | 2016-08-24 | 2022-12-20 | Improbable Worlds Ltd | Simulation systems and methods using query-based interest |
US11550621B2 (en) | 2016-08-24 | 2023-01-10 | Improbable Worlds Ltd | Distributable and customizable load-balancing of data-associated computation via partitions and virtual processes |
WO2023164244A1 (en) * | 2022-02-25 | 2023-08-31 | Constructive Labs Inc. | Methods and systems for facilitating the cooperation of large numbers of computing devices with particular application to maintaining, presenting and editing a shared 3-dimensional virtual space to multiple users |
US11816402B2 (en) | 2016-08-24 | 2023-11-14 | Improbable Worlds Limited | Simulation systems and methods |
US12033271B2 (en) | 2019-06-18 | 2024-07-09 | The Calany Holding S. À R.L. | 3D structure engine-based computation platform |
WO2024198679A1 (en) * | 2023-03-31 | 2024-10-03 | 腾讯科技(深圳)有限公司 | Virtual world-based information transmission method and apparatus, device, and medium |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274977B (en) * | 2017-07-18 | 2022-03-25 | 腾讯科技(深圳)有限公司 | Virtual item allocation method, server and client |
WO2024090960A1 (en) * | 2022-10-24 | 2024-05-02 | 삼성전자 주식회사 | Electronic device for distributing server load and method for operating same |
WO2024106602A1 (en) * | 2022-11-16 | 2024-05-23 | 주식회사 컴투버스 | Distributed processing method and apparatus for physical simulation server |
WO2024122729A1 (en) * | 2022-12-09 | 2024-06-13 | 주식회사 컴투버스 | Scaling method and device of physics simulation servers |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6329986B1 (en) * | 1998-02-21 | 2001-12-11 | U.S. Philips Corporation | Priority-based virtual environment |
US20030177187A1 (en) * | 2000-11-27 | 2003-09-18 | Butterfly.Net. Inc. | Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications |
US20050155035A1 (en) * | 2004-01-14 | 2005-07-14 | International Business Machines Corp. | Information kit objects for publish/subscribe integration architecture |
US20050193120A1 (en) * | 2000-03-16 | 2005-09-01 | Sony Computer Entertainment America Inc. | Data transmission protocol and visual display for a networked computer system |
US20050210109A1 (en) * | 2004-03-22 | 2005-09-22 | International Business Machines Corporation | Load balancing mechanism for publish/subscribe broker messaging system |
US20060075055A1 (en) * | 2004-10-06 | 2006-04-06 | Andrew Littlefield | System and method for integration of instant messaging and virtual environment clients |
US20060167968A1 (en) * | 2003-03-06 | 2006-07-27 | Reynolds Andrew D | System and method for publish/subcribe messaging |
US20060217201A1 (en) * | 2004-04-08 | 2006-09-28 | Viktors Berstis | Handling of players and objects in massive multi-player on-line games |
US20070094325A1 (en) * | 2005-10-21 | 2007-04-26 | Nucleoid Corp. | Hybrid peer-to-peer data communication and management |
US7291070B2 (en) * | 2001-04-19 | 2007-11-06 | Cyberview Technology, Inc. | Methods and systems for electronic virtual races |
US7373377B2 (en) * | 2002-10-16 | 2008-05-13 | Barbaro Technologies | Interactive virtual thematic environment |
US20080215995A1 (en) * | 2007-01-17 | 2008-09-04 | Heiner Wolf | Model based avatars for virtual presence |
US7440428B2 (en) * | 2003-06-04 | 2008-10-21 | Sony Computer Entertainment Inc. | Method and system for persisting content in decentralized network |
US20090083670A1 (en) * | 2007-09-26 | 2009-03-26 | Aq Media, Inc. | Audio-visual navigation and communication |
US20100113158A1 (en) * | 2008-11-06 | 2010-05-06 | International Business Machines Corporation | Method and apparatus for hosting a distributed virtual world system |
US7778273B2 (en) * | 2005-10-21 | 2010-08-17 | Microsoft Corporation | Application-level multicasting architecture |
US8083586B2 (en) * | 2005-06-22 | 2011-12-27 | Nokia Corporation | System and method for providing interoperability of independently-operable electronic games |
-
2008
- 2008-11-06 US US12/265,931 patent/US20100113159A1/en not_active Abandoned
-
2009
- 2009-08-13 KR KR1020090074612A patent/KR20100051014A/en active IP Right Grant
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6329986B1 (en) * | 1998-02-21 | 2001-12-11 | U.S. Philips Corporation | Priority-based virtual environment |
US20050193120A1 (en) * | 2000-03-16 | 2005-09-01 | Sony Computer Entertainment America Inc. | Data transmission protocol and visual display for a networked computer system |
US20030177187A1 (en) * | 2000-11-27 | 2003-09-18 | Butterfly.Net. Inc. | Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications |
US7291070B2 (en) * | 2001-04-19 | 2007-11-06 | Cyberview Technology, Inc. | Methods and systems for electronic virtual races |
US7373377B2 (en) * | 2002-10-16 | 2008-05-13 | Barbaro Technologies | Interactive virtual thematic environment |
US20060167968A1 (en) * | 2003-03-06 | 2006-07-27 | Reynolds Andrew D | System and method for publish/subcribe messaging |
US7440428B2 (en) * | 2003-06-04 | 2008-10-21 | Sony Computer Entertainment Inc. | Method and system for persisting content in decentralized network |
US20050155035A1 (en) * | 2004-01-14 | 2005-07-14 | International Business Machines Corp. | Information kit objects for publish/subscribe integration architecture |
US20050210109A1 (en) * | 2004-03-22 | 2005-09-22 | International Business Machines Corporation | Load balancing mechanism for publish/subscribe broker messaging system |
US20060217201A1 (en) * | 2004-04-08 | 2006-09-28 | Viktors Berstis | Handling of players and objects in massive multi-player on-line games |
US20060075055A1 (en) * | 2004-10-06 | 2006-04-06 | Andrew Littlefield | System and method for integration of instant messaging and virtual environment clients |
US8083586B2 (en) * | 2005-06-22 | 2011-12-27 | Nokia Corporation | System and method for providing interoperability of independently-operable electronic games |
US20070094325A1 (en) * | 2005-10-21 | 2007-04-26 | Nucleoid Corp. | Hybrid peer-to-peer data communication and management |
US7778273B2 (en) * | 2005-10-21 | 2010-08-17 | Microsoft Corporation | Application-level multicasting architecture |
US20080215995A1 (en) * | 2007-01-17 | 2008-09-04 | Heiner Wolf | Model based avatars for virtual presence |
US20090083670A1 (en) * | 2007-09-26 | 2009-03-26 | Aq Media, Inc. | Audio-visual navigation and communication |
US20100113158A1 (en) * | 2008-11-06 | 2010-05-06 | International Business Machines Corporation | Method and apparatus for hosting a distributed virtual world system |
Non-Patent Citations (2)
Title |
---|
DUONG, T.; and ZHOU, S.; pp. 131-136; "A Dynamic Load Sharing Algorithm for Massively Multiplayer Online Games," Networks, 2003, ICON2003 * |
FIEDLER et al., "A Communication Architecture for Massive Multiplayer Games", April 16-17, 2002, NetGames 2002, ACM, All Sections * |
Cited By (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146409A1 (en) * | 2008-12-04 | 2010-06-10 | Sony Computer Entertainment Inc. | Virtual Space Management System |
US20100146097A1 (en) * | 2008-12-04 | 2010-06-10 | Sony Computer Entertainment Inc. | Virtual Space Management System |
US8332499B2 (en) * | 2008-12-04 | 2012-12-11 | Sony Computer Entertainment Inc. | Virtual space management system |
US20100197405A1 (en) * | 2009-02-03 | 2010-08-05 | Microsoft Corporation | Method and apparatus for thwarting traffic analysis in online games |
US8719336B2 (en) * | 2009-02-03 | 2014-05-06 | Microsoft Corporation | Method and apparatus for thwarting traffic analysis in online games |
US20110131404A1 (en) * | 2009-12-02 | 2011-06-02 | Lee Dongchun | Apparatus and method for visualizing game packet data |
US20120079121A1 (en) * | 2010-09-28 | 2012-03-29 | Disney Enterprises, Inc | System and method for dynamic adaptive player cells for multi-player environments |
WO2012054405A3 (en) * | 2010-10-20 | 2012-06-21 | 1Microsoft Corporation | Placing objects on hosts using hard and soft constraints |
US8386501B2 (en) | 2010-10-20 | 2013-02-26 | Microsoft Corporation | Dynamically splitting multi-tenant databases |
US8751656B2 (en) | 2010-10-20 | 2014-06-10 | Microsoft Corporation | Machine manager for deploying and managing machines |
US8799453B2 (en) | 2010-10-20 | 2014-08-05 | Microsoft Corporation | Managing networks and machines for an online service |
US8296267B2 (en) | 2010-10-20 | 2012-10-23 | Microsoft Corporation | Upgrade of highly available farm server groups |
US9043370B2 (en) | 2010-10-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Online database availability during upgrade |
US9015177B2 (en) | 2010-10-20 | 2015-04-21 | Microsoft Technology Licensing, Llc | Dynamically splitting multi-tenant databases |
US8850550B2 (en) | 2010-11-23 | 2014-09-30 | Microsoft Corporation | Using cached security tokens in an online service |
US10467315B2 (en) | 2010-12-09 | 2019-11-05 | Microsoft Technology Licensing, Llc | Codeless sharing of spreadsheet objects |
US20140031122A1 (en) * | 2012-07-24 | 2014-01-30 | Issc Technologies Corp. | System to deliver prioritized game audio wirelessly with a minimal latency |
US9233300B2 (en) * | 2012-07-24 | 2016-01-12 | Microchip Technology Incorporated | System to deliver prioritized game audio wirelessly with a minimal latency |
US20140095660A1 (en) * | 2012-10-02 | 2014-04-03 | Nextbit Systems Inc. | Device connection proxy through cloud to optimize network messages |
US10671634B2 (en) | 2012-10-02 | 2020-06-02 | Razer (Asia-Pacific) Pte. Ltd. | Adjusting push notifications based on location proximity |
US9026665B2 (en) * | 2012-10-02 | 2015-05-05 | Nextbit Systems Inc | Optimization of gaming application execution using proxy connection |
US20140243100A1 (en) * | 2012-10-02 | 2014-08-28 | Nextbit Systems Inc. | Optimization of gaming application execution using proxy connection |
US9270719B2 (en) * | 2012-10-02 | 2016-02-23 | Nextbit Systems Inc. | Device connection proxy through cloud to optimize network messages |
US20200038760A1 (en) * | 2012-10-03 | 2020-02-06 | Gree, Inc. | Method of synchronizing online game, and server device |
US10456688B2 (en) * | 2012-10-03 | 2019-10-29 | Gree, Inc. | Method of synchronizing online game, and server device |
US20180369697A1 (en) * | 2012-10-03 | 2018-12-27 | Gree, Inc. | Method of synchronizing online game, and server device |
US10987591B2 (en) * | 2012-10-03 | 2021-04-27 | Gree, Inc. | Method of synchronizing online game, and server device |
US10080968B2 (en) * | 2012-10-03 | 2018-09-25 | GREE Inc. | Method of synchronizing online game, and server device |
US9849389B2 (en) * | 2012-10-03 | 2017-12-26 | Gree, Inc. | Method of synchronizing online game, and server device |
US11878251B2 (en) | 2012-10-03 | 2024-01-23 | Gree, Inc. | Method of synchronizing online game, and server device |
US20150238867A1 (en) * | 2012-10-03 | 2015-08-27 | Gree, Inc. | Method of synchronizing online game, and server device |
US10176278B2 (en) * | 2012-12-21 | 2019-01-08 | Dassault Systemes | Simulation of the physical behavior of an object in a 3D scene divided into a plurality of zones |
KR102089110B1 (en) | 2012-12-21 | 2020-04-14 | 다솔 시스템므 | Simulation of the physical behavior of an object in a 3d scene divided into a plurality of zones |
EP2745892A1 (en) * | 2012-12-21 | 2014-06-25 | Dassault Systèmes | Partition of a 3D scene into a plurality of zones processed by a computing resource |
US9454842B2 (en) * | 2012-12-21 | 2016-09-27 | Dassault Systemes | Partition of a 3D scene into a plurality of zones processed by a computing resource |
US20140180653A1 (en) * | 2012-12-21 | 2014-06-26 | Dassault Systemes | Simulation Of The Physical Behavior Of An Object In A 3D Scene Divided Into A Plurality Of Zones |
US20140176552A1 (en) * | 2012-12-21 | 2014-06-26 | Dassault Systemes | Partition Of A 3D Scene Into A Plurality Of Zones Processed By A Computing Resource |
KR20140081740A (en) * | 2012-12-21 | 2014-07-01 | 다솔 시스템므 | Simulation of the physical behavior of an object in a 3d scene divided into a plurality of zones |
KR102040991B1 (en) * | 2012-12-21 | 2019-11-05 | 다솔 시스템므 | Partition of a 3d scene into a plurality of zones processed by a computing resource |
KR20140081739A (en) * | 2012-12-21 | 2014-07-01 | 다솔 시스템므 | Partition of a 3d scene into a plurality of zones processed by a computing resource |
JP2014123368A (en) * | 2012-12-21 | 2014-07-03 | Dassault Systemes | Partition of 3d scene into plural zones processed by computing resource |
CN103971416A (en) * | 2012-12-21 | 2014-08-06 | 达索系统公司 | Partition of a 3D scene into a plurality of zones processed by a computing resource |
JP2014123369A (en) * | 2012-12-21 | 2014-07-03 | Dassault Systemes | Simulation of physical behavior of object in 3d scene divided into plural zones |
US10521520B2 (en) * | 2013-02-14 | 2019-12-31 | Nocturnal Innovations LLC | Highly scalable cluster engine for hosting simulations of objects interacting within a space |
US20140228115A1 (en) * | 2013-02-14 | 2014-08-14 | Nocturnal Innovations LLC | Highly scalable cluster engine for hosting simulations of objects interacting within a space |
US10356165B2 (en) * | 2013-09-27 | 2019-07-16 | Sudarshan Deshmukh | Dynamic resource repositioning load balancing and location management system and method |
US9584423B2 (en) * | 2013-09-27 | 2017-02-28 | Sudarshan Deshmukh | Dynamic resource repositioning load balancing and location management system and method |
US20150092557A1 (en) * | 2013-09-27 | 2015-04-02 | Sudarshan Deshmukh | Dynamic resource repositioning load balancing and location management system and method |
CN105794177A (en) * | 2013-12-01 | 2016-07-20 | 交互数字专利控股公司 | Quality of experience optimization using policy-based decision engines |
WO2015081022A1 (en) * | 2013-12-01 | 2015-06-04 | Interdigital Patent Holdings, Inc. | Quality of experience optimization using policy-based decision engines |
CN106209963A (en) * | 2016-05-27 | 2016-12-07 | 北京畅游天下网络技术有限公司 | The method, server and the cluster that realize object transmission in a kind of MMORPG game |
US11936734B2 (en) | 2016-08-24 | 2024-03-19 | Improbable Worlds Ltd | Simulation systems and methods using query-based interest |
US11816402B2 (en) | 2016-08-24 | 2023-11-14 | Improbable Worlds Limited | Simulation systems and methods |
US11550621B2 (en) | 2016-08-24 | 2023-01-10 | Improbable Worlds Ltd | Distributable and customizable load-balancing of data-associated computation via partitions and virtual processes |
US11533367B2 (en) * | 2016-08-24 | 2022-12-20 | Improbable Worlds Ltd | Simulation systems and methods using query-based interest |
US10504271B2 (en) | 2016-09-30 | 2019-12-10 | Dassault Systemes | Method, program and system for simulating a 3D scene with a set of computing resources running in parallel |
EP3301572A1 (en) * | 2016-09-30 | 2018-04-04 | Dassault Systèmes | Method, program and system for simulating a 3d scene with a set of computing resources running in parallel |
US11615672B2 (en) | 2016-11-18 | 2023-03-28 | Angel Group Co., Ltd. | Inspection system and inspection device |
US11094167B2 (en) | 2016-11-18 | 2021-08-17 | Angel Playing Cards Co., Ltd. | Inspection system and inspection device |
US12056982B2 (en) * | 2016-11-18 | 2024-08-06 | Angel Group Co., Ltd. | Inspection system, inspecting device and gaming chip |
US10755525B2 (en) * | 2016-11-18 | 2020-08-25 | Angel Playing Cards Co., Ltd. | Inspection system, inspecting device and gaming chip |
US10671773B2 (en) * | 2016-12-21 | 2020-06-02 | Dassault Systemes | Automatic partitioning of a 3D scene into a plurality of zones processed by a computing resource |
US11087052B2 (en) * | 2016-12-21 | 2021-08-10 | Dassault Systemes | Automatic partitioning of a 3D scene into a plurality of zones processed by a computing resource |
US11595480B2 (en) * | 2017-05-23 | 2023-02-28 | Constructive Labs | Server system for processing a virtual space |
WO2018215942A1 (en) * | 2017-05-23 | 2018-11-29 | Constructive Labs | Server system for processing a virtual space |
US12094053B2 (en) * | 2017-05-31 | 2024-09-17 | LiveCGI, Inc. | Systems and associated methods for creating a viewing experience |
US20210012557A1 (en) * | 2017-05-31 | 2021-01-14 | LiveCGI, Inc. | Systems and associated methods for creating a viewing experience |
JP7259033B2 (en) | 2018-12-03 | 2023-04-17 | ソニー・インタラクティブエンタテインメント エルエルシー | Resource allocation driven by machine learning |
JP2022509882A (en) * | 2018-12-03 | 2022-01-24 | ソニー・インタラクティブエンタテインメント エルエルシー | Resource allocation driven by machine learning |
US11010940B2 (en) | 2018-12-19 | 2021-05-18 | EffectiveTalent Office LLC | Matched array alignment system and method |
US10803085B1 (en) | 2018-12-19 | 2020-10-13 | Airspeed Systems LLC | Matched array airspeed and angle of attack alignment system and method |
US11508103B2 (en) | 2018-12-19 | 2022-11-22 | EffectiveTalent Office LLC | Matched array general talent architecture system and method |
US10769825B1 (en) * | 2018-12-19 | 2020-09-08 | EffectiveTalent Office LLC | Matched array talent alignment system and method |
US11010941B1 (en) | 2018-12-19 | 2021-05-18 | EffectiveTalent Office LLC | Matched array general talent architecture system and method |
US11016988B1 (en) | 2018-12-19 | 2021-05-25 | Airspeed Systems LLC | Matched array flight alignment system and method |
US11630836B2 (en) | 2018-12-19 | 2023-04-18 | Airspeed Systems LLC | Matched array flight alignment system and method |
US10896529B1 (en) | 2018-12-19 | 2021-01-19 | EffectiveTalent Office LLC | Matched array talent architecture system and method |
GB2584638B (en) * | 2019-06-03 | 2023-04-12 | Masters Of Pie Ltd | Method for server load balancing |
GB2584638A (en) * | 2019-06-03 | 2020-12-16 | Masters Of Pie Ltd | Method for server load balancing |
US12033271B2 (en) | 2019-06-18 | 2024-07-09 | The Calany Holding S. À R.L. | 3D structure engine-based computation platform |
US11798119B2 (en) | 2019-12-30 | 2023-10-24 | Tmrw Foundation Ip S. À R.L. | Multi-dimensional 3D engine computing and virtualization-based dynamic load balancing of virtual or real worlds |
CN113117317A (en) * | 2019-12-30 | 2021-07-16 | 明日基金知识产权有限公司 | Virtual or real world multidimensional 3D engine computation and virtualization-based dynamic load balancing |
JP7540769B2 (en) | 2019-12-30 | 2024-08-27 | ティーエムアールダブリュー ファウンデーション アイピー エスエーアールエル | Virtual or real world multi-dimensional 3D engine computing and virtualization-based dynamic load balancing |
EP3846058A1 (en) * | 2019-12-30 | 2021-07-07 | TMRW Foundation IP SARL | Multi-dimensional 3d engine computing and virtualization-based dynamic load balancing of virtual or real worlds |
WO2023164244A1 (en) * | 2022-02-25 | 2023-08-31 | Constructive Labs Inc. | Methods and systems for facilitating the cooperation of large numbers of computing devices with particular application to maintaining, presenting and editing a shared 3-dimensional virtual space to multiple users |
WO2024198679A1 (en) * | 2023-03-31 | 2024-10-03 | 腾讯科技(深圳)有限公司 | Virtual world-based information transmission method and apparatus, device, and medium |
Also Published As
Publication number | Publication date |
---|---|
KR20100051014A (en) | 2010-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100113159A1 (en) | Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems | |
US8057307B2 (en) | Handling of players and objects in massive multi-player on-line games | |
CN101266633B (en) | Seamless super large scale dummy game world platform | |
US7702784B2 (en) | Distributing and geographically load balancing location aware communication device client-proxy applications | |
CN103270492B (en) | Method and system for the hardware-accelerated graphics of network-enabled application | |
US8380843B2 (en) | System and method for determining affinity groups and co-locating the affinity groups in a distributing network | |
CN111522661A (en) | Micro-service management system, deployment method and related equipment | |
US20070094325A1 (en) | Hybrid peer-to-peer data communication and management | |
US20080104609A1 (en) | System and method for load balancing distributed simulations in virtual environments | |
US20100113158A1 (en) | Method and apparatus for hosting a distributed virtual world system | |
JP2010525422A (en) | A distributed network architecture that introduces dynamic content into an artificial environment | |
US20150130814A1 (en) | Data collection for multiple view generation | |
Lake et al. | Distributed scene graph to enable thousands of interacting users in a virtual environment | |
US20150130815A1 (en) | Multiple parallel graphics processing units | |
US20120079121A1 (en) | System and method for dynamic adaptive player cells for multi-player environments | |
US10105596B1 (en) | Broadcast dependent content delivery | |
EP3632086B1 (en) | Server system for processing a virtual space | |
JP6383336B2 (en) | Server management apparatus and server management method | |
Kohana | Dynamic Data Allocation Method for Web-Based Multiserver Systems | |
Abdulazeez et al. | Survey of solutions for Peer-to-Peer MMOGs | |
Fischer et al. | Exploitation of event-semantics for distributed publish/subscribe systems in massively multiuser virtual environments | |
Bauer et al. | Communication architectures for massive multi-player games | |
Zhang et al. | MACVE: A mobile agent based framework for large-scale collaborative virtual environments | |
Nguyen et al. | A distributed server architecture for providing immersive audio communication to massively multiplayer online games | |
Tsipis et al. | A Cloud Gaming Architecture Leveraging Fog for Dynamic Load Balancing in Cluster-Based MMOs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION,NEW YO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHAPMAN, SYDNEY G.;MILLER, CHRISTOPHER H.;RENSHAW, DAVID S.;AND OTHERS;SIGNING DATES FROM 20080721 TO 20080728;REEL/FRAME:021795/0751 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |