Nothing Special   »   [go: up one dir, main page]

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 PDF

Info

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
Application number
US12/265,931
Inventor
Sydney G. Chapman
Christopher H. Miller
David S. Renshaw
Christopher E. Sharp
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US12/265,931 priority Critical patent/US20100113159A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHARP, CHRISTOPHER E., CHAPMAN, SYDNEY G., MILLER, CHRISTOPHER H., RENSHAW, DAVID S.
Priority to KR1020090074612A priority patent/KR20100051014A/en
Publication of US20100113159A1 publication Critical patent/US20100113159A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F3/00Board games; Raffle games
    • A63F3/04Geographical or like games ; Educational games
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • A63F13/12
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F3/00Board games; Raffle games
    • A63F3/04Geographical or like games ; Educational games
    • A63F3/0434Geographical games
    • A63F2003/0439Geographical games using geographical maps
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features 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/53Features 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/534Features 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features 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/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • A63F2300/5533Game 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F9/00Games not otherwise provided for
    • A63F9/24Electric 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

    BACKGROUND OF THE INVENTION
  • 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.
  • SUMMARY OF THE INVENTION
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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.
  • DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • 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 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.
  • 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, the proxy servers 14 subscribe to topics relevant for their clients 12. Using a publication service process of the framework 18, 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 (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. 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. Thus, 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.
  • Similarly, 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.
  • 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 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. 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). 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.
  • The system 17 superimposes a logical grid 22 on the map coordinate space. 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. 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 the grid 22 can be considered to have an identity based on their x and y positions. In the example above, the grid 22 extends to five cells 23 in the x-axis and four cells 23 in the y-axis. In overlaying the grid 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 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
  • 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 which management cells 23 are associated with which servers 16 can be computed by different algorithms, typically may be based on the computational capacity of the servers and also the geospatial relationships of the grid cells 23, to provide an essentially balanced computational load on the involved servers 17. 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). Specifically: 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.
  • 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 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. 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 the management grid 22 is based on 10-meter by 10-meter cells 23, then there are eight neighboring cells 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 the framework 18, 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).
  • When 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
  • 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 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.
  • 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 the framework 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.
US12/265,931 2008-11-06 2008-11-06 Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems Abandoned US20100113159A1 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146097A1 (en) * 2008-12-04 2010-06-10 Sony Computer Entertainment Inc. Virtual Space Management System
US20100146409A1 (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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (17)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146097A1 (en) * 2008-12-04 2010-06-10 Sony Computer Entertainment Inc. Virtual Space Management System
US20100146409A1 (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
KR20140081739A (en) * 2012-12-21 2014-07-01 다솔 시스템므 Partition of a 3d scene into a plurality of zones processed by a computing resource
KR102040991B1 (en) * 2012-12-21 2019-11-05 다솔 시스템므 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
JP2014123369A (en) * 2012-12-21 2014-07-03 Dassault Systemes Simulation of physical behavior of object in 3d scene divided into plural zones
CN103971416A (en) * 2012-12-21 2014-08-06 达索系统公司 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
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
Lake et al. Distributed scene graph to enable thousands of interacting users in a virtual environment
US20070094325A1 (en) Hybrid peer-to-peer data communication and management
US20100113158A1 (en) Method and apparatus for hosting a distributed virtual world system
US20080104609A1 (en) System and method for load balancing distributed simulations in virtual environments
JP2010525422A (en) A distributed network architecture that introduces dynamic content into an artificial environment
US20150130814A1 (en) Data collection for multiple view generation
Ricci et al. Distributed virtual environments: From client server to cloud and p2p architectures
US20120079121A1 (en) System and method for dynamic adaptive player cells for multi-player environments
AU2010273177A1 (en) Interest management for a virtual environment of a peer-to-peer network
Nguyen et al. Optimal assignment of distributed servers to virtual partitionsfor the provision of immersive voice communicationin massively multiplayer games
Fischer et al. Exploitation of event-semantics for distributed publish/subscribe systems in massively multiuser virtual environments
US10086288B1 (en) Content item forking and merging
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
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
Almashor et al. Automatic and autonomous load management in peer-to-peer virtual environments
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