GB2584638A - Method for server load balancing - Google Patents

Method for server load balancing Download PDF

Info

Publication number
GB2584638A
GB2584638A GB1907886.4A GB201907886A GB2584638A GB 2584638 A GB2584638 A GB 2584638A GB 201907886 A GB201907886 A GB 201907886A GB 2584638 A GB2584638 A GB 2584638A
Authority
GB
United Kingdom
Prior art keywords
user
user presence
geometric
environment
presences
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.)
Granted
Application number
GB1907886.4A
Other versions
GB201907886D0 (en
GB2584638B (en
Inventor
Thielker Melanie
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.)
Masters Of Pie Ltd
Original Assignee
Masters Of Pie Ltd
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 Masters Of Pie Ltd filed Critical Masters Of Pie Ltd
Priority to GB1907886.4A priority Critical patent/GB2584638B/en
Publication of GB201907886D0 publication Critical patent/GB201907886D0/en
Publication of GB2584638A publication Critical patent/GB2584638A/en
Application granted granted Critical
Publication of GB2584638B publication Critical patent/GB2584638B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • 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
    • 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/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • 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/51Server architecture
    • A63F2300/513Server architecture server hierarchy, e.g. local, regional, national or dedicated for different tasks, e.g. authenticating, billing
    • 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/531Server assignment

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A method for balancing load amongst servers involved in generating a multi-user virtual environment such as for a multi-player game, the virtual environment comprising: a geometric environment representing one or more objects; and a plurality of user presences (e.g. avatars) representing a user in the geometric environment, the method comprising: managing the geometric environment on one or more geometric server instances, to each of which is allocated a spatial region within the geometric environment; managing the plurality of user presences on a plurality of user presence server instances; wherein the user presences are managed by assigning a user presence to one of the user presence server instances based on the proximity of the user presence to an object in the geometric environment, such that if two or more user presences are proximate an object they are assigned to the same user presence server instance. The users use local devices to display a representation of the virtual environment from a perspective of their user presence and are used to send and receive data to/from the geometric server instance(s) and user presence server instance(s) to move around and/or interact with geometric environment and other user presences.

Description

Intellectual Property Office Application No. GII1907886.4 RTM Date:7 November 2019 The following terms are registered trade marks and should be read as such wherever they occur in this document: Amazon Web Services Microsoft Azure Intellectual Property Office is an operating name of the Patent Office www.gov.uk/ipo Method for Server Load Balancing
Field of the invention
This invention relates to a computer-implemented method for balancing load amongst servers involved in generating a multi-user virtual environment.
Background
Multi-user virtual environments, such as those found in multiplayer games, virtual meeting spaces and virtual collaboration spaces may run on a sever instance. Users may be represented in a virtual environment by user presences, such as avatars. Users using the virtual environment (i.e. the load of a server instance) utilise resources associated with a server instance, such as bandwidth, processing and/or memory resources. If there are too many users using the virtual environment, the server instance may need more resources than are available to run the virtual environment and the users may experience undesirable effects such as lag and stuttering.
It is desirable to balance the load associated with running a virtual environment across more than one server instance in order to avoid users experiencing the undesirable effects such as lag and stuttering associated with running out of server instance resources.
Methods for balancing the load associated with running a virtual environment across more than one server instance are known in the art. One known way of balancing the load associated with running a virtual environment is to assign users to a server instance running a copy of the virtual environment based on the users' physical locations. As an example, all the users physically located in Europe are assigned to a first server instance and all the users physically located in Asia are assigned to a second server instance. In this way, the number of users assigned to a server instance is limited and the likelihood of too many resources being consumed is reduced. One issue associated with this way of load balancing is that any changes made to the environment on the first server are not reflected on the second server. Likewise, any changes made to the environment on the second server are not reflected on the first server. As such, users who are assigned to different servers cannot experience the same virtual environment.
Another known way of balancing the load associated with running a virtual environment is to assign different portions of the virtual environment to different server instances, such that users are assigned to a server instance based on their locations within the virtual environment. This has the advantage of allowing all users to see a change that has been made to the virtual environment. One issue associated with this way of load balancing is that a user may experience undesirable lag or stuttering when their user presence moves from a first portion of the virtual environment to a second portion of the virtual environment and hence is moved from a first server instance to a second server instance. Another issue associated with this way of load balancing is that if one area of a virtual environment becomes busy, a server instance can still become overloaded.
Summary
In a first aspect of the invention, there is provided a computer implemented method for balancing load amongst servers involved in generating a multi-user virtual environment, the virtual environment comprising: a geometric environment comprising a representation of one or more objects; and a plurality of user presences, wherein a user presence represents a user in the geometric environment, the method comprising: managing the geometric environment on one or more geometric server instances, to each of which is allocated a spatial region within one geometric environment; managing the plurality of user presences on a plurality of user presence server instances, wherein the one or more user presence server instances are different to the geometric server instances; wherein the user presences are managed by assigning a user presence of the plurality of user presences to the one or more user presence server instances based on the proximity of the user presence to an object in the geometric environment, such that if two or more user presences are proximate an object they are assigned to the same user presence server instance; wherein the user uses a local device to receive and combine data from the one or more geometric server instances and the one or more user presence server instances, the received data for showing a representation of the virtual environment from a perspective of the user presence; and wherein the user uses the local device to send data to the one or more geometric server instances and/or the one or more user presence server instances, the data for at least one of: moving the user presence within the geometric environment, interacting with the one or more objects, and/or interacting with the one or more other user presences.
In this way, users can experience the same virtual environment irrespective of their physical location as all users make use of the same geometric environment server instances. Additionally, users do not experience undesirable lag or stuttering when their user presence moves around the geometric environment, as the user presence is hosted on a single server instance and the user presence does not need to be transmitted across the network in order to interact with different geometry servers.
Throughout, the term "user presence" is used to cover a representation of a user, "geometric environment" is used to cover a representation clone or more objects and "virtual environment" is used to cover the combination of the user presence(s) and the geometric environment.
The load balanced amongst server instances may be any one or more of network bandwidth, CPU load and memory usage.
The geometric and user presence server instances may be physical servers or may be virtual machines hosted on a physical server. The number of server instances may be fixed all of the time or may be dynamically increased or decreased if the size of the virtual environment or the number of users changes such that the server instances are operating above a load threshold. The threshold may relate to one or more of the network bandwidth, processing or memory resources available to the server instance. The threshold may be set at a value of 90% of the network bandwidth, processing or memory resources available to the server instance.
The user presence may be an avatar that has a virtual appearance or, alternatively, the user presence may be invisible to other users. User presence movement is controlled by the user presence server instance; however, a proxy object in the geometric environment is used to represent the user presence on the geometric server instance. The proxy object is essentially a virtual extension of the user presence located on the geometric server instance and is used to represent movement of the user presence through the geometric environment and in any interactions between the user presence and objects in the geometric environment. These interactions are calculated by the geometric server instance. As an example, if a user presence is hit by a falling rock in the geometric environment, the connection between the rock and the user presence is detected on the geometric user presence instance and the information is transmitted to the user presence server instance via the proxy object. The user presence instance server instance can action a response, for instance the user presence falling down. The proxy object is usually a lightweight object without attached data, such that, for example, thousands of proxy objects on a geometric server instance do not comprise a significant amount of loading. The user presence is generally rendered on the local device and compositing of textures may take place on the user presence server instances.
Managing the geometric environment includes storing the data required to render at least a part of the geometric environment and sending this data to the local device. Data for rendering the geometric environment on the local device, such as tessellated meshes, procedural mesh data, procedural materials data, material information, textures and/or transforms of objects in the geometric environment are sent from the geometric server instance to the local device. The local device uses this data to render the geometric environment and display it to a user.
Managing the user presence server instances includes receiving and sending data to render a user presence moving about in the geometric environment, items associated with a user presence, facilitating communication (which may be audio or text) between user presences and sharing data generated by user presences. The user presence server instances also manage the interaction of the user presence with objects in the geometric environment and store appearance data and settings specific to user presences. This information can then be retrieved and sent to a local device, so that a user presence can be displayed to a user.
A user presence may be proximate an object if they are within a threshold distance from an object or are within a volume associated with the object. Where the object is solid (for example, a rock or a tree), a portion of the volume associated with the object may extend outside of the object. Where the object is not solid (for example, a house), the volume associated with the object many be contained within the object. The volume associated with the object may be larger than the object and may fully contain the object. Configuration of the volume associated with the object may vary depending on the use case, taking into account, for example, projected user count and distribution of users. This may be fine-tuned over time. Determination of whether a user presence is proximate an object usually only takes place on the user presence server instance.
The local device may be a PC, laptop, tablet, mobile phone or any other device that comprises a processor, memory and a screen.
In some embodiments, the user presence can move within the geometric environment, and/or the user presence can interact with the one or more objects and/or the user presence can interact with the one or more other user presences. As discussed above, interaction between a user presence and the geometric environment takes place via a proxy object on the geometric server instance. Any manipulation that the user presence performs on the geometric environment is calculated on the geometric server instance. The effect of the manipulation is then broadcast to any user currently holding a connection to that geometry server instance open. If the user presence interacts with another user presence on the same user presence server, this is managed wholly by the user presence server. If users are connected to difference user presence servers, for example, if a first user is connected to a first user presence server and a second user is connected to a second user presence server then the first user presence server will communicate to the second user presence server.
The user presence may allow a user to interact with the geometric environment, for example by altering the shape of an object, introduce new objects or alter other characteristics of the object in the geometric environment or allow a user to annotate a part of the virtual environment. The user presence may allow a user to interact with other users, for example by talking to them or sending a message to them.
In some embodiments, when a new user joins the virtual environment, the new user is represented by a new user presence; and the new user presence is assigned to a user presence server instance based on the proximity of the user presence to an object in the geometric environment.
The user may be deemed to be proximate an object if they are within a threshold distance of the object.
In some embodiments, when a new user joins the virtual environment, the new user is represented by a new user presence; and if the new user presence is proximate an object which has no other user presences proximate to it, the new user presence is assigned to the user presence server with the lowest load.
The user may be deemed to be proximate an object if they are within a threshold distance of the object.
In some embodiments, if the load of a first user presence server instance reaches a threshold level, at least one of the plurality of user presences are assigned to a second presence server.
The user presence may be assigned to a second user presence server instance that is below a threshold load level. In this case, the user presence server instances may communicate their current load to each other, so that assigning a user presence to a user presence server instance does not overload the user presence server instance.
In some embodiments, the first and second user presence server instances are close coupled. When the server instances are close coupled, they are in a state that allows them to exchange messages at a higher frequency than normal.
In some embodiments, a user presence is determined to be proximate to an object if the user presence is within a volume assigned to the object in the geometric environment; wherein the volume is larger than the object.
As before, where the object is solid (for example, a rock or a tree), a portion of the volume associated with the object may extend outside of the object. Where the object is not solid (for example, a house), the volume associated with the object many be contained within the object. The volume associated with the object may be larger than the object and may fully contain the object.
In some embodiments, the plurality of user presences is a first plurality of user presences, each of which is proximate a first object in the geometric environment; each of the first plurality of user presences is assigned to a first user presence server instance; each of a second plurality of user presences is proximate a second object in the geometric environment; each of the second plurality of user presences is assigned to a second user presence server instance; and when a user presence from the first plurality of user presences moves within the geometric environment away from the first object and towards the second object in the geometric environment, the user presence is assigned to the second user presence server instance.
In some embodiments, the plurality of user presences are proximate a first object in the geometric environment and are assigned to a first user presence server instance; a second object in the geometric environment has no user presences proximate the second object; and when a user presence from the plurality of user presences moves within the geometric environment away from the first object and towards a second object in the geometric environment, the user presence is assigned to a second user presence server instance based on the load of the user presence servers.
In some embodiments, when the user presence moves away from the first object and towards the second object, the user presence is assigned to the second user presence server instance when the user presence is within a threshold distance of the second object.
In some embodiments, if the user presence moves back towards the first object, the user presence is assigned to the first user presence server instance when the user presence is within the threshold distance of the first object.
In some embodiments, the threshold distance is less than half of the distance between the first and second objects.
In some embodiments, the threshold distance is a third of the distance between the first and the second objects. In order to prevent the rapid movement of a user presence between user presence server instances, the threshold distance may be extended by a hysteresis distance in the direction of movement, requiring the user presence to move a certain distance beyond the threshold distance before the user presence is moved from the first user presence server instance to a the second user presence server instance. If a user presence moves back in the direction from which they came (i.e. away from the second object and back towards the first object), as the hysteresis is applied in the direction of movement, the user presence must move at least twice the hysteresis distance before being moved back to the first user presence server. The hysteresis is a vector that is multiplied by thresholds of the range, for example 0.1 to 0.5 wherein 0.1 produces the maximum hysteresis and 0.5 produces none.
In some embodiments, there is a system comprising one or more geometric server instances, a plurality of user presence server instances and one or more local devices, each of the one or more geometric server instances, each of the plurality of user presence server instances and each of the one or more local devices comprising a respective processor, each processor coupled to a respective memory, each memory containing respective instructions which, when executed on the processors cause the system to perform the method of any previous claim.
The one or more geometric server instances, the plurality of user presence server instances and/or the one or more local devices may be virtual machines, where one or more virtual machines share the same physical processor and/or physical memory. Additionally, or alternatively, the virtual machines may share a physical processor and/or memory with other virtual machines running different operating systems and/programs. As such, the respective processor (and/or core(s) of the respective processor) and/or the respective memory may be respective virtual processor(s) and/or respective virtual memory or any other known way of sharing physical processors or physical memory between virtual machines.
Brief Description of the Drawings
In order that the present invention may be more readily understood, embodiments thereof will now be described, by way of example, with reference to the accompanying drawings, in which: Figure 1 is a schematic view of a system for balancing load amongst servers involved in generating a multi-user virtual environment by way of a method according to the invention.
Figure 2 shows a method for balancing load amongst servers involved in generating a multi-user virtual environment.
Detailed Description
A computer system suitable for implementing the invention is shown in Figure 1. This includes a plurality of geometric server instances la, lb, lc for managing a geometric environment (i.e. one or more virtually represented objects and/or scenery). The plurality of geometric server instances la, lb, lc are connected to a network 3. Although three geometric server instances la, lb, lc are shown, embodiments may utilise one or more geometric server instances la, lb, lc. Geometric server instances la, lb, lc may be added or removed as needed. Also connected to the network 3 are a plurality of user presence server instances 2a, 2b, 2c for managing a plurality of user presences, wherein a user presence represents a user in the geometric environment and allows a user to interact with the geometric environment. Although three user presence server instances 2a, 2b, 2c are shown, embodiments may utilise two or more user presence server instances 2a, 2b, 2c. User presence server instances 2a, 2b, 2c may be added or removed as needed. Also connected to the network 3, are a plurality of local devices 4a, 4b, 4c, which can communicate with the one or more geometric server instances and the plurality of user presence servers via the network 3. Objects in the geometric environment may consist of an object tree, where the object tree consists of objects that are arranged in a parent/child relationship. Each object may be made up of a tessellated mesh and its associated material, texture information as well as a transform. Likewise, a user presence may be made up of a mesh representing that user with its associated data, along with a collection of child objects representing items that the user presence may be carrying or wearing. As previously mentioned, data for rendering the geometric environment on the local device 4a, 4b, 4c, such as tessellated meshes, procedural mesh data, procedural materials data, textures and/or transforms of objects in the geometric environment are sent from the geometric server instance la, lb, lc to the local device 4a, 4b, 4c. The local device 4a, 4b, 4c uses this data to render the geometric environment and display it to a user. The user presence server instances 2a, 2b, 2c provide user presence appearance data, communication data and location data to the local device 4a, 4b, 4c, which the local device uses to display user presences to a user. The geometry server instance la, lb, lc also provides metadata to the user presence server instances 2a, 2b, 2c, where the metadata is associated with an object (or objects) that the user presences are proximate to. This metadata may contain things like location, rotation, scale, frustum and other metadata describing the capability of a local device, such as object memory size.
Together, the server instances and other hardware depicted in Figure 1 enable the balancing of load amongst servers involved in generating a multi-user virtual environment. The multi-user virtual environment comprises the geometric environment and user presences. As more users join the virtual environment, they are assigned to one of the plurality of user presence server instances 2a, 2b, 2c based on their proximity to an object in the geometric environment. Users may spawn in a virtual environment in any way known in the art, this may, for example, include the last location that a user previously logged out from, a predetermined location or a random location. Once a location is chosen, the geometric server instance is checked to see whether there are any proxy objects of other users near the location. If there are other user proxy objects nearby, then the user is assigned to the same user presence server instance that the nearby users are assigned to. If there are no users near the location, then the user may be assigned to the least loaded user presence server.
The network 3 may be the Internet or a private network or any other network for allowing the server instances la, lb, lc, 2a, 2b, 2c and the local devices 4a, 4b, 4c to communicate. The network may be wired and/or wireless.
The one or more geometric server instances la, lb, lc manage the geometric environment. Managing the geometric environment includes managing the effects of user interaction with the environment, storing the resultant changed data and managing the handoff of objects to other servers if they are moved across a boundary. Managing the geometric environment may also include storing the data required to render at least a part of the geometric environment and sending this data to a local device 4a, 4b or 4c. This data may comprise tessellated meshes, procedural mesh data, procedural materials data, transforms and/or textures for representing objects in the geometric environment. Mesh and texture data may also be loaded from other, unrelated, web servers scaled in a different way. This may include, for example, from a content delivery network (CDN) or a cloud service. It may also comprise technical engineering data associated with the object (for example, technical detail such as the hardness of a turbine blade rendered in the geometric environment) or any other data required to render the geometric environment. When a user enters and interacts with the virtual environment via their user presence, the geometric server instance la, lb, lc sends the data required to render at least a part of the geometric environment to the local device 4a, 4b, 4c via the network 3. The part of the geometric environment that is sent to the local device 4a, 4b, 4c is determined by applying frustum culling, wherein objects or parts of objects outside the field of view of the user are simply not sent, are sent later in time, and/or are sent at a slower rate. The virtual environment may comprise a "world", for example like those found in computer games. Alternatively, the geometric environment may comprise one or more mesh model(s) which are generated from one or more underlying CAD model(s). In one example, a mesh model may be of a turbine, wherein the turbine comprises a plurality of smaller mesh models. A user may be able to use their user presence to interact with the mesh model of the turbine, for example they may be able to use their user presence to zoom in on a certain part of the turbine in order to see more detail. In some embodiments, the geometric server instance la, lb, lc may store all of the data required to render the geometric environment and the local device 4a, 4b, 4c may have to receive all of the data before the geometric environment can be rendered locally. In other embodiments, the local device 4a, 4b, 4c may store a local copy of the geometric environment and the geometric server instance la, lb, lc may only send changes made to the geometric environment (for example, if an object is altered, made or destroyed) which need to be made to the local copy to the local device 4a, 4b, 4c. Commonly, only data within the frustum is sent to the local device 4a, 4b, 4c in order to conserver memory. As a user presence moves in the geometric environment, the user presence field of view changes and more data may be sent from the geometric server instance and the local device 4a, 4b, 4c may drop/disregard data that no longer forms the field of view. The geometric server instance la, lb, lc may send any changes to the geometric environment to the local device 4a, 4b, 4c. The geometric server instance la, lb, lc may track objects currently rendered by the local device 4a, 4b, 4c in order to omit any updates to the geometric environment that does not form part of the field of view, thereby conserving resources such as bandwidth and memory. The geometry server la, lb, lc may receive information about the frustum as part of the data payload of the user presence proxy object. Manipulations to the geometric environment can be to transforms only as well as to other parameters. A user may interact with the local device 4a to manipulate the geometric environment or an object in the geometric environment. These manipulations are carried out on the geometric server instance la lb, lc, which then sends data regarding the manipulation to all other local devices 4b, 4c that are connected to the geometric server instance la, lb, lc.
The plurality of user presence server instances 2a, 2b, 2c manage the user presences. This may include receiving and sending data to render a user presence moving about in the geometric environment, items, visual changes, achievements or skills associated with a user presence, facilitating communication (which includes audio, text and/or gestures) between user presences. Changes to an object in the geometric environment are communicated through a proxy object, as previously discussed. The user presence sever instance instructs the proxy object to make the changes and the effect of those changes is broadcast by the geometric server instance to all connected local devices 4a, 4b, 4c (including those not connected to the user presence server instance where the presence of the user modifying the object is located). When a new user connects to the multi-user virtual environment, the user is assigned a user presence server instance 2a, 2b, 2c based on the proximity of their user presence to an object in the geometric environment. If there are already other user presences proximate the object, the user presence will be assigned to the same user presence server instance 2a, 2b, 2c as the other user presences. This may be implemented, for example, through a login server (not shown) that keeps track of the location of all of the user presences. The login server can then place a new user presence depending on the spawn rules of the virtual environment (set by, for example, the developer of a program making use of the method) and select a user presence server instance 2a, 2b, 2c based on the proximity of a user presence to an object. This means that if there are two or more user presences near a single object, they will be assigned to the same user presence server instance 2a, 2b, 2c, as long as the user presence server instance 2a, 2b, 2c has enough capacity to manage the number of user presences proximate the object. If the user is proximate an object with no other user presences proximate to it, the user will be assigned to a user presence server instance 2a, 2b, 2c based on a criterion. This criterion may be, for example, the load on the servers, the user being assigned to the user presence server instance 2a, 2b, 2c with the lowest load (i.e. one or more of network bandwidth, CPU load and memory usage) or to a user presence server instance with a load below a threshold level. An alternative criterion may be assigning the user to a user presence server instance 2a, 2b, 2c which would provide a better experience for the user by, for example, providing the lowest round trip time to communicate with the user (i.e. lowest lag time, for example determined by measuring ping latency).
The geometric server instance la, lb, lc is kept abreast of user presence locations via metadata from an object (or objects) that the user presences are proximate to. This metadata may contain things like location, rotation, scale, frustum and other metadata describing the capability of a local device, such as object memory size.
The proximity of a user presence to an object in the geometric environment may be determined by the distance of a user presence to the object. If the user presence is within a threshold distance to an object, then the user presence is considered to be proximate the object. This distance can be calculated from the centre of the user presence to the centre of an object, an edge of the user presence to the edge of an object via an axis aligned bounding box, a predetermined point of the user presence to a predetermined point of the object or any combination of the above. Alternatively (or additionally), an object may have a volume associated with it, wherein the volume associated with the object is larger than the object itself and may contain the object in its entirety. If a user presence is present in the volume, then the user presence is considered to be proximate the object. The threshold distance and/or volume may be static or may be dynamic, where a dynamic threshold distance may be based on reducing CPU and memory load at the penalty of increased network load. A dynamic distance and/or volume may be adjusted in line with the load of the user presence server instance 2a, 2b, 2c. For example, if there were only a few user presences proximate an object then the threshold distance and/or volume associated with the object may be increased, in order to increase the number of user presences proximate the object, thereby increasing the load on the user presence server instance 2a, 2b, 2c. Conversely, if the load of the presence server instance 2a, 2b, 2c is high, then the threshold distance and/or volume associated with the object may be decreased, in order to decrease the number of user presences proximate the object, thereby decreasing the load on the user presence server instance 2a, 2b, 2c.
As the user presence moves about the user environment, the user presence may be moved from a first user presence server instance 2a to a second user presence server instance 2b. As an example, when a user first connects to a user environment the user is assigned to a first user presence server instance 2a based on the user presences' proximity to a first object, which has a first plurality of other user presences proximate to it. The user presence then moves away from the first object and towards a second object, which has a second plurality of other user presences proximate to it. This second plurality of other user presences are managed by the second user presence server 2b. As the user presence moves away from the first object and to the second object, the user presence is reassigned from the first user presence server instance 2a to the second user presence server instance 2b.The trigger for assigning the user presence away from the first user presence server instance 2a to the second user presence server instance 2b may be defined by the user moving a threshold distance, as discussed above, away from the first object, being within a threshold distance of the second object or a combination of both thresholds. A user presence may comprise immutable data, rarely changing data and data that frequently changes. Immutable data usually forms a small part of a user presence and therefore is often combined with the rarely changing data. As a user presence moves towards the second object, the immutable data and the rarely changing data associated with the user presence may be pre-emptively sent to the second user presence server instance 2b, before the user reaches the trigger point so that a smooth transition between the first and second user presence server instances 2a, 2b is achieved. Any changes to the data that occur before the user presence is actually transferred to the second user presence server instance causes the data to be re-sent in a similar manner to that discussed below. When the trigger is met for moving a user presence from a first user presence server instance 2a to a second user presence server instance 2b, the frequently changing data associated with the user presence is packed up, sent from the first user presence server instance 2a to the second user presence server instance 2b and then unpacked (i.e. the data is taken out of the data structure for transfer. This might, for example, comprise decompressing the data). At this stage, the local device 4a, 4b, 4c may be instructed to connect to the second user presence server instance 2b and use the user presence stored on the second user presence server instance. The second user presence server 2b checks with the first user presence server 2a as to whether anything has changed since data associated with the user presence was packed up and transferred. Any further changes are packed up and transferred to the second user presence server instance 2b and the second user presence server instance 2b updates the data associated with the user presence if necessary. This transfer of data repeats until there are no significant changes to be made to the data associated with the user presence, at which point the local device 4a, 4b, 4c may be instructed to drop the connection with the first user presence server instance 2a. The packed up data associated with the user presence is stored on the first user presence server instance 2a for a predetermined amount of time and then discarded, so as to save time in case the user returns to the first object. Generically, the aforementioned pre-emptive sending of data may happen with any action that could cause the user to be assigned to a new user presence server instance 2b, 2c. If the user is at a point where they may be approaching both a second and a third object, data associated with the user presence may be sent to both the second and the third user presence server instances. The user presence may then move away from the second object and towards a third object, which does not have any other user presences proximate to it. As the user presence moves away from the second object and to the third object, the user may remain on the second user presence server instance 2b. Alternatively, the user may be assigned to a third user presence server instance 2c. Whether or not the user presence is assigned to a third user presence server instance 2c may be based on a criterion such as the server load, for example 90% of the CPU, network of memory utilisation of the user presence server instance 2c, of the second user presence server instance 2b or, alternatively, on whether the third user presence server instance would provide a better experience for the user by, for example, reducing the round trip time to communicate with the user (i.e. lag time, for example determined by measuring ping latency).
An additional scenario is contemplated, wherein the number of users proximate an object in the geometric environment is enough to overload a first user presence server instance 2a. If this happens, once the number of users assigned to the first user presence server instance 2a causes the first user presence server instance 2a to reach a threshold load level (for example, 90% CPU, network or memory utilisation) then additional user presences that are proximate the object are assigned to a second user presence server instance 2b. Additionally, the first and second user presence server instances 2a, 2b may be close coupled. Being close coupled means that the first and second user presence server instances 2a, 2b exchange messages, such as changes to a user presence, more frequently than normal, this may be achieved, for example, by opening and maintaining a dedicated channel between the first and second user presence server instances 2a, 2b. The normal frequency of exchanging messages between user presence server instances 2a, 2b may be at the update frequency (i.e. the rate at which one server informs another server of the cumulative changes to a user presence) of the underlying game or program. Using the update frequency as the rate of exchanging messages conserves bandwidth, as multiple changes may be combined into a single message or sent in a batch of messages; however, the downside of this is that any changes to the user presence are not communicated in a timely fashion. If, for example, a first user presence is a far way away from a second user presence (and are hence the user presences are on different user presence server instances), then using the update frequency may be an acceptable trade-oft as the second user presence may be represented in a low level of detail and there is likely to be minimal, if any, interaction between the first and second user presences. However, if the first and second user presences are close to one another and they are located on different user presence server instances (for example, if the first user presence server is experiencing a high amount of load) then exchanging messages at the update frequency may be too slow. The interaction between the between the close user presences may require the user presence server instances 2a, 2b, to switch to a mode (i.e. the user presence server instances 2a, 2b switch to being close coupled) where the messages communicating updates to the user presences are sent as they happen (i.e. faster than the update frequency) and not in a combined message or in a batch of messages (i.e. at the update frequency). This allows the interaction between the user presences on close coupled user presence server instances to be almost as smooth as if the user presences are on the same user presence server instance. If the user presence server instances are virtual machines that are part of a cloud service such as Amazon Web Services, or Microsoft Azure, then the threshold load level may be reduced in order to allow enough time for new user presence server instances to load/start-up on demand.
Rapidly moving a user between two user presence server instances leads to higher network utilisation as the two user presence server instances need to communicate with each other in order to move the user presence from one server instance to another. In order to prevent a user from being rapidly moved from a first user presence server instance 2a to a second user presence server instance 2b, when a user presence is on a border between first and second objects, the border may be moved relative to a user presence. For example, a user presence is normally moved between server presences based on a threshold distance to an object. If there is an area where two threshold distances meet and the user presence moves backwards and forwards between a first object and a second object, the user presence may be rapidly moved between first and second user presence server instances 2a, 2b. In order to avoid this, a second condition may be applied to the user presence, before it is moved from a first user presence server instance 2a to a second user presence server instance 2b. Once the user presence has moved from the first user presence server instance 2a to the second user presence server instance 2b (i.e. is proximate the second object), the threshold distance for the first object may be reduced, such that the border between the two objects effectively moves closer to the first object. This may, for example, be a third of the threshold distance. As mentioned before, a user presence may have a corresponding proxy object on the geometric server instance la, lb, lc and it is this geometric server instance la, lb, lc that performs the calculations around the threshold distance/border applied to a user presence.
Data from the geometric server instance la, lb, lc and the user presence server instance 2a, 2b, 2c is sent to the local device 4a, 4b, 4c via the network 3. The local device 4a, 4b, 4c then combines the data received from the geometric server instance la, lb, lc and the user presence server instance 2a, 2b, 2c in order to display the user presence in the virtual environment on a display, for example a screen or virtual reality goggles attached to the local device 4a, 4b, 4c. Commands to move the user presence within the virtual environment, to interact with objects in the virtual environment or to interact with other user presences (collectively, user presence actions) are sent from the local device 4a, 4b, 4c to the user presence server instance 2a, 2b, 2c and to the geometric server instance la, lb, lc, so that the aforementioned proxy object is moved as well. If the user presence interacts with objects in the geometric environment, this is represented through the proxy object and the corresponding calculations are performed on the geometric server instance la, lb, lc. The user presence server instance 2a, 2b, 2c and the geometric server instance la, lb, lc then sends data to the other connected local devices 4a, 4b, 4c in order to reflect any user presence actions to the other connected local devices 4a, 4b, 4c.
Data from the geometric server instance la, lb, lc and the user presence server instance 2a, 2b, 2c may be sent to a third server via the network 3. This third server can combine data received from the geometric server instance la, lb, lc and the user presence server instance 2a, 2b, 2c (in the manner previously described) and stream the virtual environment to a local device 4a, 4b, 4c as a video stream. The local device 4a, 4b, 4c may display the virtual environment on, for example, a screen or virtual reality goggles attached to the local device 4a, 4b, 4c. Such an arrangement is useful, for example, for a user with a low powered device who is attending a meeting in a virtual environment.
When a user presence performs an action that changes the appearance of an object in the geometric environment, the local device 4a sends information regarding the change to the geometric server instance la, lb, lc, which the geometric server instance la, lb, lc then sends to the other connected local devices 4b, 4c, so that the other connected local devices 4b, 4c can reflect the change in the local environment (as described above). If the user presence has interacted with the object, an animation may be displayed on the local device 4a reflecting the interaction. The local device 4a sends information regarding the animation of the user presence to the user presence server instance 2a, 2b, 2c, which the user presence server instance 2a, 2b, 2c then sends to the other connected local devices 4b, 4c, so that the other connected local devices 4b, 4c can display the animation to the other users. The change to the geometric environment and the associated animation of the user presence may be timestamped to ensure that they are displayed in the virtual environment at the same time.
A single user presence server instance could be used, for example, in a test or a lab setup; however, it is noted that the number of users that would be able to use such a set-up would be severely limited.
Figure 2 shows a method for balancing load amongst servers involved in generating a multi-user virtual environment the virtual environment comprising: a geometric environment comprising a representation of one or more objects; and a plurality of user presences, wherein a user presence represents a user in the geometric environment (100), the method comprising: managing the geometric environment on one or more geometric server instances, to each of which is allocated a spatial region within one geometric environment (101); managing the plurality of user presences on a plurality of user presence server instances, wherein the one or more user presence server instances are different to the geometric server instances; wherein the user presences are managed by assigning a user presence of the plurality of user presences to the one or more user presence server instances based on the proximity of the user presence to an object in the geometric environment, such that if two or more user presences are proximate an object they are assigned to the same user presence server instance (102); wherein the user uses a local device to receive and combine data from the one or more geometric server instances and the one or more user presence server instances, the received data for showing a representation of the virtual environment from a perspective of the user presence (103); and wherein the user uses the local device to send data to the one or more geometric server instances and/or the one or more user presence server instances, the data for at least one of: moving the user presence within the geometric environment, interacting with the one or more objects, and/or interacting with the one or more other user presences (104).

Claims (16)

  1. CLAIMS1. A computer implemented method for balancing load amongst servers involved in generating a multi-user virtual environment, the virtual environment comprising: a geometric environment comprising a representation of one or more objects; and a plurality of user presences, wherein a user presence represents a user in the geometric environment, the method comprising: managing the geometric environment on one or more geometric server instances, to each of which is allocated a spatial region within one geometric environment; managing the plurality of user presences on a plurality of user presence server instances, wherein the one or more user presence server instances are different to the geometric server instances; wherein the user presences are managed by assigning a user presence of the plurality of user presences to the one or more user presence server instances based on the proximity of the user presence to an object in the geometric environment, such that if two or more user presences are proximate an object they are assigned to the same user presence server instance; wherein the user uses a local device to receive and combine data from the one or more geometric server instances and the one or more user presence server instances, the received data for showing a representation of the virtual environment from a perspective of the user presence; and wherein the user uses the local device to send data to the one or more geometric server instances and/or the one or more user presence server instances, the data for at least one of: moving the user presence within the geometric environment, interacting with the one or more objects, and/or interacting with the one or more other user presences.
  2. 2. The computer implemented method of claim 1, wherein the user presence can move within the geometric environment.
  3. 3. The computer implemented method of any previous claim, wherein the user presence can interact with the one or more objects.
  4. 4. The computer implemented method of any previous claim, wherein the user presence can interact with the one or more other user presences.
  5. 5. The computer implemented method of any previous claim, wherein: when a new user joins the virtual environment, the new user is represented by a new user presence; and the new user presence is assigned to a user presence server instance based on the proximity of the user presence to an object in the geometric environment.
  6. 6. The computer implemented method of any previous claim, wherein: when a new user joins the virtual environment, the new user is represented by a new user presence; and if the new user presence is proximate an object which has no other user presences proximate to it, the new user presence is assigned to the user presence server with the lowest load.
  7. 7. The computer implemented method of any previous claim, wherein if the load of a first user presence server instance reaches a threshold level, at least one of the plurality of user presences are assigned to a second presence server.
  8. 8. The computer implemented method of claim 7, wherein the first and second user presence server instances are close coupled.
  9. 9. The computer implemented method of any previous claim, wherein the proximity of a user presence to an object is determined by assigning a volume to the object in the geometric environment and determining whether a user presence is present in the assigned volume; wherein the volume is larger than the object.
  10. 10. The computer implemented method of claims 2-9, wherein: the plurality of user presences is a first plurality of user presences and are proximate a first object in the geometric environment; the first plurality of user presences are assigned to a first user presence server instance; a second plurality of user presences are proximate a second object in the geometric environment; the second plurality of user presences are assigned to a second user presence server instance; and when a user presence from the first plurality of user presences moves within the geometric environment away from the first object and towards the second object in the geometric environment, the user presence is assigned to the second user presence server instance.
  11. 11. The computer implemented method of claims 2-9, wherein: the plurality of user presences are proximate a first object in the geometric environment and are assigned to a first user presence server instance; a second object in the geometric environment has no user presences proximate the second object; and when a user presence from the plurality of user presences moves within the geometric environment away from the first object and towards a second object in the geometric environment, the user presence is assigned to a second user presence server instance based on the load of the user presence servers.
  12. 12. The computer implemented method of claims 10 or 11, wherein when the user presence moves away from the first object and towards the second object, the user presence is assigned to the second user presence server instance when the user presence is within a threshold distance of the second object.
  13. 13. The computer implemented method of claim 12, wherein if the user presence moves back towards the first object, the user presence is assigned to the first user presence server instance when the user presence is within the threshold distance of the first object
  14. 14. The computer implemented method of claims 12 or 13, wherein the threshold distance is less than half of the distance between the first and second objects.
  15. 15. The computer implemented method of claims 12 or 13, wherein the threshold distance is a third of the distance between the first and the second objects.
  16. 16. A system comprising one or more geometric server instances, a plurality of user presence server instances and one or more local devices, each of the one or more geometric server instances, each of the plurality of user presence server instances and each of the one or more local devices comprising a respective processor, each processor coupled to a respective memory, each memory containing respective instructions which, when executed on the processors cause the system to perform the method of any previous claim.
GB1907886.4A 2019-06-03 2019-06-03 Method for server load balancing Active GB2584638B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB1907886.4A GB2584638B (en) 2019-06-03 2019-06-03 Method for server load balancing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1907886.4A GB2584638B (en) 2019-06-03 2019-06-03 Method for server load balancing

Publications (3)

Publication Number Publication Date
GB201907886D0 GB201907886D0 (en) 2019-07-17
GB2584638A true GB2584638A (en) 2020-12-16
GB2584638B GB2584638B (en) 2023-04-12

Family

ID=67385961

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1907886.4A Active GB2584638B (en) 2019-06-03 2019-06-03 Method for server load balancing

Country Status (1)

Country Link
GB (1) GB2584638B (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050253872A1 (en) * 2003-10-09 2005-11-17 Goss Michael E Method and system for culling view dependent visual data streams for a virtual environment
US20100113159A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
US20160315895A1 (en) * 2008-09-22 2016-10-27 International Business Machines Corporation Modifying environmental chat distance based on chat density in an area of a virtual world

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050253872A1 (en) * 2003-10-09 2005-11-17 Goss Michael E Method and system for culling view dependent visual data streams for a virtual environment
US20160315895A1 (en) * 2008-09-22 2016-10-27 International Business Machines Corporation Modifying environmental chat distance based on chat density in an area of a virtual world
US20100113159A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems

Also Published As

Publication number Publication date
GB201907886D0 (en) 2019-07-17
GB2584638B (en) 2023-04-12

Similar Documents

Publication Publication Date Title
US11077363B2 (en) Video game overlay
CN111729306B (en) Method and device for transmitting game roles, electronic equipment and storage medium
US11135515B2 (en) Information processing method and apparatus and server
US6912565B1 (en) Distributed virtual environment
US9455931B2 (en) Load balancing between processors
US10226700B2 (en) Server system for processing graphic output and responsively blocking select input commands
US7527558B2 (en) Coherent data sharing
US9526994B2 (en) Deferred teleportation or relocation in virtual worlds
KR101600726B1 (en) Crowd-sourced video rendering system
TWI795628B (en) Methods for transactional memory synchronization and online gaming systems
US10176278B2 (en) Simulation of the physical behavior of an object in a 3D scene divided into a plurality of zones
Glinka et al. High-level development of multiserver online games
US8392839B2 (en) System and method for using partial teleportation or relocation in virtual worlds
CN113795814A (en) Virtual character reality interboundary crossing
GB2584638A (en) Method for server load balancing
TWI475407B (en) Reducing latency for served applications by anticipatory preprocessing
WO2024067168A1 (en) Message display method and apparatus based on social scene, and device, medium and product
CN116637358B (en) Data transmission method, related device, equipment and storage medium
WO2024078225A1 (en) Virtual object display method and apparatus, device and storage medium
Gorlatch et al. Designing multiplayer online games using the real-time framework
KR20230034182A (en) Spectator system in online games
Kämäräinen Scalability solutions for 3-D multi-user virtual worlds
Jeon et al. Support for Mobile Augmented and Synthesized Worlds