Methods, devices and systems for simulating a virtual environment

WO2025062322A3PCT designated stage expired Publication Date: 2025-07-24DAREWISE ENTERTAINMENT
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/IB2024/059084
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-09-19
Filing Date
2024-09-19
Publication Date
2025-07-24

AI Technical Summary

Technical Problem

Existing virtual environment simulation systems face challenges in providing a tailored and immersive experience for users due to high simulation loads and the need for efficient management of server connections.

Method used

The method involves simulating entities across multiple game servers, allowing for tailored connections to simulation servers. This includes simulating an entity on a first game server, replicating it on a second server, and updating attributes in real-time to ensure a synchronized and customized experience for users.

Benefits of technology

This approach enhances the user experience by allowing for real-time interaction and customization within the virtual environment, improving the overall immersion and responsiveness of the simulation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure IB2024059084_24072025_PF_FP_ABST
    Figure IB2024059084_24072025_PF_FP_ABST
Patent Text Reader

Abstract

Embodiments described herein generally relate to simulating entities on a game server. A method comprises simulating the first entity within a first instance of a virtual space of a simulated environment in accordance with a modifiable attribute of the first entity, and establishing a connection with a game client, the first game server being non-authoritative with respect to a player entity. In response to establishing a connection with the game client, the first game server receives a modifiable attribute of a player entity from a second game server, the second game server configured to simulate the player entity within a second instance of the virtual space of the simulated environment, the second game server authoritative with respect to the player entity. The first game server replicates the player entity within the first instance of the virtual space of the environment in accordance with the modifiable attribute of the player entity.
Need to check novelty before this filing date? Find Prior Art

Description

Methods, devices and systems for simulating a virtual environment Cross Reference to Related Application

[0001] The present application claims priority from Australian Provisional Patent Application No.2023903015 filed on 19 September 2023, the contents of which are incorporated herein by reference in their entirety. Technical Field

[0002] Aspects of the disclosure relate generally to systems and methods for simulating a virtual environment comprising simulated entities and, more specifically, to tailoring the simulation experience for a user. Background

[0003] The simulation of a virtual environment can offer immersive experiences where users can interact and collaborate in real-time within dynamic worlds. Simulations of virtual environments may be employed by online games, including multi-player role playing games. Virtual environments can be expansive, and richly featured. In order to manage the high simulation load generated by the simulation of the virtual environment, a simulation may be distributed over a number of servers.

[0004] Client devices are used by players to engage with the simulated environment, and any simulated entities that may inhabit the simulated environment. Client devices receive information about the simulated environment from servers and rendered that information so that the player can view the simulated environment. It is desirable to improve the simulation experience provided to a player via a client device.

[0005] Any discussion of documents, acts, materials, devices, articles or the like which has been included in the present specification is solely for the purpose of providing a context for the present invention. It is not to be taken as an admission that any or all of these matters form part of the prior art base or were common general knowledge in the field relevant to the present invention as it existed before the priority date of each claim of this application.Summary

[0006] Embodiments described herein provide for the customisation of a user’s experience of a simulated environment through tailored connections to simulation servers.

[0007] In accordance with an aspect of the present disclosure, there is provided a method for simulating entities within a simulated environment. The method comprises: simulating, on a first game server connected to a game client, a first entity within a first instance of a virtual space of the simulated environment, the first entity simulated on the first game server in accordance with a first modifiable attribute of the first entity; replicating, on a second game server, the first entity within a second instance of the virtual space of the simulated environment, the first entity replicated on the second game server in accordance with the first modifiable attribute; determining, by the first game server, an updated first modifiable attribute; in response to determining the updated first modifiable attribute: receiving, by the second game server from the first game server, the updated first modifiable attribute; and in response to receiving, by the second game server, the updated first modifiable attribute, replicating, on the second game server, the first entity in accordance with the updated first modifiable attribute.

[0008] In some embodiments, the method further comprises, rendering, on the game client, the first entity within a client instance of the virtual space of the simulated environment, the first entity rendered on the game client in accordance with the first modifiable attribute of the first entity.

[0009] In some embodiments, determining the updated modifiable attribute comprises receiving, by the first game server, from the game client, a request to modify the first modifiable attribute. In some embodiments, determining the updated modifiable attribute comprises receiving, by the first game server, from the second game server, a request to modify the first modifiable attribute. In some embodiments, the method further comprises receiving, by the second game server, from the game client, a request to modify the first attribute.

[0010] In some embodiments, the first game server is connected to the game client via a persistent connection between the first game server and the game client. In some embodiments, the first game server is authoritative with respect to the first entity. In some embodiments, the second game server is non-authoritative with respect to the first entity.

[0011] In some embodiments, receiving, by the second game server from the first game server, the updated first modifiable attribute comprises receiving the updated first modifiable attribute via a persistent connection between the second game server and the first game server.

[0012] In some embodiments, the method further comprises, in response to determining, by the first game server, the updated first modifiable attribute, receiving, by the game client from the first game server, via the persistent connection between the first game server and the game client, the updated first modifiable attribute.

[0013] In some embodiments, the method further comprises, in response to receiving, the updated first modifiable attribute, rendering, on the game client, the first entity within the client instance of the virtual space of the simulated environment in accordance with the updated first modifiable attribute of the first entity.

[0014] In some embodiments, the method further comprises: simulating or replicating, on the second game server connected to the game client, a second entity within the second instance of the virtual space of the simulated environment, the second entity comprising a second modifiable attribute; and in response to receiving, by the second game server from the first game server, an update to the first modifiable attribute, determining, by the second game server, an interaction between the first entity and the second entity.

[0015] In some embodiments, the method further comprises, in response to determining, by the second game server, the interaction between the first entity and the second entity, updating the second modifiable attribute.

[0016] In some embodiments, the method further comprises: in response to determining, by the second game server, the interaction between the first entity and the second entity, providing, by the second game server, simulation information comprising the updated second modifiable attribute.

[0017] In some embodiments, the method further comprises receiving, by the game client from the second game server, the simulation information comprising the updated second modifiable attribute.

[0018] In some embodiments, the method further comprises, in response to receiving, by the game client from the second game server, the simulation information comprising the updated second modifiable attribute, rendering the second entity within the client instance of the virtual space of the simulated environment in accordance with the updated second modifiable attribute.

[0019] In some embodiments, the second game server provides the simulation information comprising the updated second modifiable attribute to the game client via the persistent connection between the second game server and the game client.

[0020] In some embodiments, the second game server provides the simulation information comprising the updated second modifiable attribute to the first game client via a persistent connection between the second game server and the game client.

[0021] In some embodiments, the method further comprises: in response to the second game server being non-authoritative with respect to the second entity, providing, by the second game server to a third game server, a request to modify the second modifiable attribute. In some embodiments, the third game server is authoritative with respect to the second entity.

[0022] In some embodiments, the first modifiable attribute comprises one or more of: a position within the simulated environment; an orientation within the simulated environment; an indication of motion; a speed of motion; an indication of abilities; an indication of the first entity’s health; a game state; an appearance of the entity; or a combination thereof.

[0023] According to another aspect of the present disclosure, there is provided a system for simulating entities within a simulated environment. The system comprises: a first game server; a second game server; and a game client associated with a player entity, the player entity comprising a first modifiable attribute. The first game server is configured to, in response to establishing a connection with the game client, simulate the player entity, in a first server instance of a virtual space of the simulated environment, in accordance with the first modifiable attribute, the first game server authorized to modify the first modifiable attribute of the player entity. The second game server is configured to replicate an instance of the player entity, in a second instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute.

[0024] The first game server is further configured to: determine an updated first modifiable attribute of the player entity; and provide, to the second game server, via a connection between the first game server and the second game server, the updated first modifiable attribute. The second game server is further configured to, in response to receiving the updated first modifiable attribute, replicate the instance of the player entity, in the second instance of the virtual space of the simulated environment, in accordance with the updated first modifiable attribute.

[0025] In some embodiments, the game client is configured to render the player entity, within a client instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute.

[0026] In some embodiments, determining the updated modifiable attribute comprises receiving, by the first game server, from the game client, a request to modify the first modifiable attribute. In some embodiments, determining the updated modifiable attribute comprises receiving, by the first game server, from the second game server, a request to modify the first modifiable attribute.

[0027] In some embodiments, the first game server is further configured to: simulate a second entity, in the first server instance of the virtual space of the simulated environment, in accordance with the second modifiable attribute; and in response to receiving, from the game client, a request to modify the first modifiable attribute: determine an interaction between the first entity and the second entity; and in response to determining the interaction, update the second modifiable attribute.

[0028] In some embodiments, the first game server is further configured to provide, to the game client, simulation information comprising the updated second modifiable attribute. In some embodiments, the simulated environment comprises a persistent simulated environment.

[0029] According to another aspect of the present disclosure, there is provided a method for displaying simulated entities within a rendering of a simulated environment, the method performed by a game client. The method comprises: connecting to a first game server configured to simulate or replicate a first entity, within a first instance of a virtual space of the simulated environment, in accordance with a first modifiable attribute of the first entity; receiving simulation information from a second game server configured to: simulate or replicate a second entity within a second instance of the virtual space of the simulated environment, in accordance with a first modifiable attribute of the second entity; in response to connecting to the first game server, rendering the first entity, in accordance with the first modifiable attribute of the first entity, within a client instance of the virtual space of the simulated environment; and in response to receiving simulation information, comprising the first modifiable attribute of the second entity, from the second game server, rendering the second entity, in accordance with the simulation information, within the client instance of the virtual space of the simulated environment.

[0030] In some embodiments, the second game server is further configured to, replicate the first entity, within a second instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute of the first entity.

[0031] In some embodiments, the game client is connected to the second game server, and wherein receiving the simulation information from the second game server comprises receiving the simulation information via a persistent connection between the game client and the second game server.

[0032] In some embodiments, receiving the simulation information from the second game server comprises receiving the simulation information via a persistent connection between the game client and the first game server. In some embodiments, the first game server is authoritative with respect to the first entity. In some embodiments, the method further comprises providing, to the first game server, a request to modify the modifiable attribute of the first entity.

[0033] In some embodiments, the game client comprises a user interface, and the method further comprises providing, to the first game server, the request to modify the modifiable attribute of the first entity, in response to receiving user input via a user interface associated with the game client.

[0034] In some embodiments, connecting to the first game server comprises providing, to a simulation controller, a request to connect a game server. In some embodiments, connecting to the first game server comprises receiving, from the simulation controller, an instruction to connect to the first game server.

[0035] In some embodiments, the method further comprises receiving, from a user of the game client, configuration information regarding one or more entities to be rendered on the game client; and providing, to the simulation controller, the configuration information.

[0036] In some embodiments, the configuration information comprises one or more of: a type of entity to be rendered; an amount of entities to be rendered; an interaction category associated with an entity to be rendered; an ability category associated with an entity to be rendered; or any combination thereof.

[0037] In some embodiments, the method further comprises rendering the first entity and rendering the second entity such that a user of the game client can see both the first entity and the second entity within the client instance of the virtual space of the simulated environment.

[0038] According to another aspect of the present disclosure, there is provided a method for replicating a simulated entity within a first instance of a virtual space of a simulated environment, the method performed by a first game server. The method comprises: replicating a first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity; receiving, from a game client, a request to modify the first modifiable attribute of the first entity; determining that the first game server is non-authoritative with respect to the first entity; forwarding, to a second game server, the request to modify the first modifiable attribute of the first entity; receiving, from the second game server, simulation information, the simulation information comprising an updated modifiable attribute; and in response to receiving the simulation information from the second game server, replicating the first entity in accordance with the updated modifiable attribute, within the first instance of the virtual space of the simulated environment.

[0039] In some embodiments, the second game server is authoritative with respect to the first entity. In some embodiments, the method further comprises providing, to the game client, simulation information comprising the updated modifiable attribute.

[0040] According to another aspect of the present disclosure, there is provided a method for simulating a first entity. The method may be performed by a first game server. The method comprises simulating the first entity within a first instance of a virtual space of a simulated environment in accordance with a modifiable attribute of the first entity, and establishing a connection with a game client, the game client configured to render a player entity, the first game server being non-authoritative with respect to the player entity. The method further comprises, in response to establishing a connection with the game client, receiving, from a second game server, a modifiable attribute of the player entity, the second game server configured to simulate the player entity within a second instance of the virtual space of the simulated environment, and the second game server being authoritative with respect to the player entity; and replicating the player entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the player entity. The method further comprises, in response to determining an interaction between the player entity and the first entity, determining an updated modifiable attribute of the first entity, and providing the updated modifiable attribute of the first entity to the game client.

[0041] In some embodiments, the first game server is connected to the game client via a persistent connection between the first game server and the game client. In some embodiments, providing the updated modifiable attribute of the first entity to the game client comprisesproviding the updated modifiable attribute of the first entity to the game client via the persistent connection.

[0042] In some embodiments, the first game server is connected to the second game server via a second persistent connection between the first game server and the second game server. In some embodiments, receiving, from a second game server, a modifiable attribute of the player entity comprises receiving, from a second game server, a modifiable attribute of the player entity via the persistent connection.

[0043] In some embodiments, the method further comprises, in response to receiving, from a second game server, an updated modifiable attribute of the player entity, replicating the player entity in accordance with the updated modifiable attribute of the player entity.

[0044] According to another aspect of the present disclosure, there is provided a method for replicating a simulated entity within a first instance of a virtual space of a simulated environment. The method may be performed by a game server. The method comprises: replicating a first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity; receiving simulation information from a game client, wherein the simulation information comprises an updated modifiable attribute of the first entity and wherein the updated modifiable attribute is determined by a second game server which is configured to simulate the first entity within a second instance of the virtual space of the simulated environment; and, in response to determining that the game client is a trusted client with respect to the simulation information, replicating the first entity in accordance with the updated modifiable attribute, within the first instance of the virtual space of the simulated environment.

[0045] In some embodiments, the method further comprises simulating a second entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the second entity, and determining an interaction between the first entity and the second entity. In some embodiments, the method further comprises, in response to determining the interaction, updating the modifiable attribute of the second entity, and

[0046] simulating a second entity within the first instance of the virtual space of the simulated environment in accordance with the updated modifiable attribute of the second entity.

[0047] In some embodiments, the game client receives the simulation information from a game server that is authoritative with respect to the first entity.

[0048] In some embodiments, the game client is configured to render the first entity within a client instance of the virtual space of the simulated environment.

[0049] In some embodiments, determining that the game client is the trusted client with respect to the simulation information comprises determining that the game client is the trusted client with respect to the first entity.

[0050] In some embodiments, in response to establishing a persistent connection with the game server that is authoritative with respect to the first entity, determining that the game client is not the trusted client with respect to the first entity.

[0051] In some embodiments, in response to receiving simulation information from the game server that is authoritative with respect to the first entity, determining that the game client is not the trusted client with respect to the first entity.

[0052] In some embodiments, determining that the game client is the trusted client with respect to the simulation information comprises, receiving, from a simulation controller, instructions indicating that the game client is a trusted client with respect to the simulation information.

[0053] In some embodiments, the instructions comprise a trust scope. In some embodiments, determining that the game client is a trusted client with respect to the simulation information comprises determining that the simulation information falls within the trust scope.

[0054] In some embodiments, the first entity comprises a player entity controlled by a user of the game client.

[0055] In some embodiments, the method further comprises, in response to determining that the game client is not the trusted client with respect to the first entity, replicating the first entity in accordance with the modifiable attribute, within the first instance of the virtual space of the simulated environment.

[0056] According to another aspect of the present disclosure, there is provided a method for simulating a first entity. The method may be performed by a game server. The method comprises, simulating the first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity, and receiving simulation information from a game client, wherein the simulation information comprises an updated modifiable attribute of the first entity. The method further comprises, in response to determining that the game client is a trusted client with respect to the simulation information, simulating the first entity in accordance with the updated modifiable attribute,within the first instance of the virtual space of the simulated environment. In some embodiments, the method further comprises, in response to determining that the game client is a trusted client with respect to the simulation information, transmitting the updated modifiable attribute, to a second game client. In some embodiments, the second game client is configured to, in response to receiving the updated modifiable attribute from the game server, render the first entity in accordance with the updated modifiable attribute.

[0057] According to another aspect of the present disclosure, there is provided a method for for rendering a first entity within a first instance of a virtual space of a simulated environment. The method may be performed by a game client. The method comprises, in response to receiving a first simulation information from a first game server, wherein the simulation information comprises a modifiable attribute of the first entity, rendering the first entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the first entity. The method further comprises, in response to receiving simulation information from a second game server, wherein the simulation information comprises a modifiable attribute of a second entity, rendering the second entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the second entity. The method further comprises, receiving, from a simulation controller, instructions indicating that the game client is a trusted client with respect to simulation information from the first game server. The method further comprises, in response to receiving a second simulation information from the first game server, wherein the second simulation information comprises an updated modifiable attribute of the first entity, providing the second simulation information to the second game server.

[0058] According to another aspect of the present disclosure, there is provided a system comprising one or more processors, and memory comprising computer executable instructions, which when executed by the one or more processors, cause the system to perform a method described herein.

[0059] According to another aspect of the present disclosure, there is provided a machine- readable storage medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform a method described herein. Brief Description of Drawings

[0060] The embodiments of the disclosure will now be described with reference to the accompanying drawings, in which:Figure 1 illustrates a system for simulating a virtual environment, in accordance with an embodiment; Figure 2 is a block diagram of the architecture of a client device configured to execute a client application, in accordance with an embodiment; Figure 3 illustrates a system architecture of a device configured to execute a server, in accordance with an embodiment; Figure 4 illustrates a portion of a two-dimensional simulated environment, in accordance with an embodiment; Figure 5 illustrates a simulation scenario comprising spatial instancing of a spatial partition of a simulated environment, in accordance with an embodiment; Figure 6 illustrates a network topology associated with the simulation scenario depicted in Figure 5, in accordance with an embodiment; Figure 7 illustrates a simulation scenario which exemplifies a tailored simulation experience for a player, in accordance with an embodiment; Figure 8 illustrates a network topology associated with simulation scenario, in accordance with an embodiment; Figure 9 illustrates a simulation scenario which includes traversing a boundary of a spatial partition of a simulated environment, in accordance with an embodiment; Figure 10 illustrates a network topology associated with the simulation scenario illustrated in Figure 9, in accordance with an embodiment; Figure 11 illustrates a simulation scenario which includes a non-authoritative server facilitating a modification request, in accordance with an embodiment; Figure 12 illustrates a network topology associated with the simulation scenario illustrated in Figure 11, in accordance with an embodiment; Figure 13 illustrates a simulation scenario which includes a non-authoritative server in communication with a trusted client, in accordance with an embodiment; Figure 14 illustrates a network topology associated with the simulation scenario illustrated in Figure 13, in accordance with an embodiment;Figure 15 is a message sequence diagram illustrating a message sequence in which a simulation controller establishes a trust relationship between a client device and a server, in accordance with an embodiment; Figure 16 is a message sequence diagram illustrating a message sequence in which a trust relationship between the client device and the server, depicted in Figure 14, is ceased, in accordance with an embodiment; and Figure 17 is a message sequence diagram illustrating a message sequence to establish a connection between a client and a server, in accordance with an embodiment; Figure 18 is a message sequence diagram illustrating a message sequence to display simulated entities within a rendering of a simulated environment, in accordance with an embodiment; Figure 19 is a message sequence diagram illustrating a message sequence to display simulated entities within a rendering of a simulated environment, in accordance with an embodiment; and Figure 20 is a message sequence diagram illustrating a message sequence to modify an attribute of a simulated player entity, in accordance with an embodiment. Description of Embodiments Simulated environment

[0061] A simulated environment may comprise a virtual world or digital space that is simulated by one or more servers. A simulated environment can provide a space in which simulated entities can be located and can interact with the simulated environment and / or other entities within the simulated environment.

[0062] In embodiments in which the simulated environment represents a game space, the simulated environment may comprise a vast and dynamic landscape, including diverse terrains, cities, dungeons, and other locations that players can explore. For role-playing games (RPGs), the simulated environment may represent a fictional setting, with its own rules, characters, and challenges, in which a player can control an entity to engage in a variety of activities, such as completing quests, battling monsters, forming alliances with the entities of other players, and acquiring in-game items or resources.

[0063] In some embodiments, a simulated environment simulates real-world aspects, such as physics, weather conditions, and day-night cycles, to enhance the sense of immersion and realism for players.

[0064] A simulated environment may incorporate player entities, whose actions are controlled by a player. A simulated environment may also incorporate non-player characters (NPCs) that populate the simulated environment and may interact with the players’ entities. System architecture

[0065] Figure 1 illustrates a system 100 for simulating a virtual environment, in accordance with an embodiment. A simulation system may comprise one or more game servers (hereafter, servers), and one or more game clients (hereafter clients). The system 100 comprises two servers (160, 162) and two clients (110, 112).

[0066] The servers and the clients communicate via a communication network 150. The communication network may comprise an internet. The clients are each associated with a user (120, 122), from which the client can receive user input. In embodiments in which the simulated virtual environment comprises a game, the users comprise players. Servers

[0067] Simulation software (not shown) defines a virtual environment and the simulation of entities within that virtual environment. Simulation software comprises server-side simulation software and client-side simulation software. The servers are each configured to execute a part of the server-side simulation software module, such that the simulation is distributed across the plurality of servers. Collectively, the servers define the status of the simulated environment and control updates and modifications to the simulated environment. In embodiments, simulation software comprises one or more of: a serverless function; a distributed process; a micro-service and a process operating over database. Simulation controller

[0068] The simulation may be controlled by a simulation controller 170, which is in communication with the servers. The simulation controller comprises a computer-implemented software module, which, when executed, is configured to orchestrate and control the connections between a client and a server. The simulation controller facilitates scaling of the simulation and balancing the simulation load.

[0069] In some embodiments, the simulation controller comprises a matchmaker 612. In embodiments, the matchmaker facilitates selecting client / server connections to enhance the simulation experience provided to the player.

[0070] In some embodiments, the simulation controller comprises an event queue 610, which receives and manages communications from clients and servers within the simulation system so that the communications may be processed by the matchmaker. In other embodiments, the simulation controller may comprise a messaging system, or messaging buffer instead of an event queue.

[0071] The simulation controller may further comprise a simulation database 616, which is configured to store and maintain data defining the simulated environment. Client application

[0072] A client device is configured execute client-side simulation software (e.g. a client application defined by the client simulation module 212) to render at least a portion of the simulated environment for display to the user of the client device. A client is configured to communicate with a server to receive simulation information defining how the client device is to render the simulated environment.

[0073] A client device is configured to receive input from the user. For example, in a first- person-shooting game, a player provides input to the client device to request the player’s entity to do actions such as move, shoot and communicate. The client application communicates the player’s action request to a server, and in response, the client may receive updated simulation information from the server, that incorporates the result of the player’s action request.

[0074] In one example, client 110 is connected to server 160. Client 110 is configured to receive from server 160, via the network 150, simulation information regarding the simulated environment, and one or more entities simulated within the simulated environment. In response to receiving the simulation information, from the server, the client updates the rendering of the simulated environment and the one or more entities, in accordance with the received information. The client 110 may display the rendering of the simulated environment to the user 120.

[0075] Simulation information may define: the appearance or function of the simulated environment; the appearance or function of a player entity; the position of a player entity within the simulated environment; the appearance, function or position of other entities within the simulated environment; or any combination thereof. Simulation information may define:modifiable attributes of the simulated environment; modifiable attributes of a player entity; modifiable attributes of other entities within the simulated environment; or any combination thereof.

[0076] A game client may render an entity within the simulated environment in accordance with simulation information provided by a simulation server (e.g. an authoritative server). The rendered entity may be within the field of view of the user on a display of the game client. In other situations or scenarios, the rendered entity may be rendered within the simulated environment on the game client, but not be within the field of view of the user on a display of the game client. The rendered entity may not be visible to a user using the game client. The rendered entity may be interacted with by the user, or by other entities rendered within the simulated environment on the game client. Client device architecture

[0077] Figure 2 is a block diagram of the architecture of a client device 200 configured to execute a client application, in accordance with an embodiment. The client device 200 comprises a network interface 204, with which to communicate with other components within the simulation system 100, via network connection 206.

[0078] The client device 200 further comprises a user interface 214, from which the client device receives input from a player 120. The user interface may comprise: a keyboard; a mouse; a touch screen; a motion capture device; or any combination thereof. The client device further comprises a display 216, on which the client device displays a rendering of a simulated environment and one or more entities in the simulated environment.

[0079] The client device 200 comprises a controller 210 which may comprise one or more processors configured to execute the machine-readable code of the client simulation module 212. The client stimulation module may be stored in a non-transitory computer-readable medium. The client simulation module, when executed by the one or more processors, comprising a client application which causes the client device to perform the methods described herein as being performed by a client (e.g. a game client). Server system architecture

[0080] Figure 3 illustrates a system architecture of a device 300 configured to execute a server, in accordance with an embodiment. The server device 300 comprises a network interface 304, with which to communicate with other components within the simulation system 100, via network connection 306.

[0081] The server device 300 further comprises a controller 310 which may comprise one or more processors configured to execute the machine-readable code of the server simulation module 312. The server simulation module, when executed by the one or more processors, causes the server device to perform the methods described herein as being performed by a server.

[0082] In the embodiment illustrated in Figure 3, the server device comprises a single device and the operations described as being performed by the server are performed as a result of the server simulation module 312 being executed on the one or more processors of the controller 310. In other embodiments, the server device may comprise a plurality of devices. The server simulation module 312 may comprise machine-readable code defining a server process that is executed on one or more processors. The server stimulation module may be stored in a non- transitory computer-readable medium. In embodiments, a single machine may be configured to execute one or more server processes in parallel on one or more processors. The one or more processors may be distributed over one or more machines. Entity

[0083] A server may simulate one or more entities within a simulated environment. An entity comprises at least one attribute which may be modified during the simulation. In embodiments, an entity may comprise: a user-controlled entity (e.g. a player’s entity) whose actions are, at least partially, controlled by a player; or a computer-simulated character (e.g. a non-player entity) whose actions are controlled by the simulation software. A computer-simulated character may comprise an entity with which a player’s entity can interact, or an entity which does not interact with a player’s entity.

[0084] A computer-simulated entity may comprise, but is not limited to: a computer-simulated character with whom the player’s entity may interact; a background character; or an object (such as a container, chest, weapon, or door). Entity attributes

[0085] In some embodiments, an entity is associated with one or more attributes. Attributes may be set and maintained by the stimulation software. An attribute of an entity may define how an entity behaves, appears or is positioned within the simulated environment.

[0086] For example, an attribute may define: the position or orientation of the entity within the virtual environment; the capabilities of the entity within the virtual environment; the motion ofthe entity within the virtual environment; a health level of the entity; a power level of the entity; a list of skills, weapons, tools, tasks, missions or relationships; or any combination thereof.

[0087] An attribute may be modifiable or immutable. The authoritative server for an entity may be configured to be authorised to modify a modifiable attribute of the entity.

[0088] A server is configured to simulate (or replicate) an entity in accordance with an modifiable attribute. Simulating an entity in accordance with a modifiable attribute comprises simulating the entity embodying the modifiable attribute. For example, if a modifiable attribute defines positional information, simulating the entity in accordance with the modifiable attribute comprises simulating the position of the entity at the position defined by the positional information with the simulated environment. Similarly, if a modifiable attribute defines a travel speed, simulating the entity in accordance with the modifiable attribute comprises simulating the entity travelling at that travel speed within the simulated environment. Similarly, if a modifiable attribute defines an appearance characteristic of the entity, simulating the entity in accordance with the modifiable attribute comprises simulating the entity to appear with the appearance characteristic. Player entities

[0089] Player entities are entities that may be controlled by a user (e.g. a player) using a client device. For example, a player may provide input to the client device, via a user interface: to control the movement of the player entity through the simulated environment; to triggers actions to be performed by the player entity within the simulated environment; to modify, remove or add an attribute of the player entity; or any combination thereof.

[0090] With reference to the embodiment illustrated in Figure 5, entity 530 comprises a rendering of a player entity controlled by the user of client device 110. Entity 522 comprises a rendering of a player entity controlled by the user of client device 112. Entity interactions

[0091] In some embodiments, the simulation controller 180 defines how simulated entities can interact with each other, and with the simulated environment, within the simulated environment. In embodiments, a server is configured to determine an interaction between: a first simulated entity and a second simulated entity; a simulated entity and a replicated entity; and / or a first replicated entity and a second replicated entity.

[0092] In embodiments, an interaction between two entities may comprise, but is not limited to: a collision or touch resulting from a movement of one of the entities; an action applied by oneentity to another entity, such as applying a weapon against an entity; the provision of simulated resources from one entity to another entity; or the provision of information from one entity to another entity.

[0093] Interactions between entities may result in a modifiable attribute of one or more of the entities being altered by a simulation server. For example, an interaction may cause an entity to move with the simulated environment, lose health, gain resources, change functionality or another attribute modification.

[0094] Entities may be categorised into entity types, as defined by the simulation controller 170. Additionally, entities may be defined by an interaction type of the entity. The interaction type of an entity may be configurable by a server, or the simulation controller. An interaction type of an entity may define which other entities the entity may interact with, or the types of interactions the entity may have, or the circumstances in which the entity may interact with another entity.

[0095] A simulation may include passive entities, that do not interact with player entities. In one example, passive entities may comprise background characters that provide an aesthetic value to the simulated environment for the player. Authoritative and non-authoritative servers

[0096] The simulation system 100 may comprise authoritative and non-authoritative servers. A server may be categorised as an authoritative server or a non-authoritative server with respect to an entity. With respect to an entity, an authoritative server is a server that is authorised to modify a modifiable attribute of that entity. An authoritative server, with respect to an entity, may be referred to as having authority over that entity. With respect to an entity, a non- authoritative server is a server than is not authorised to modify a modifiable attribute of that entity. A server may be authoritative with respect to one or more entities, and may also be non- authoritative with respect to one or more other entities. The authority of a server, with respect to an entity, may be defined by the simulation controller 170.

[0097] In some embodiments, for an entity, there is only one authoritative server associated with the entity (i.e. an exclusive authoritative server). In some embodiments, authority over an entity may be shared, or duplicated, across a plurality of servers. Accordingly, an entity may be associated with a plurality of authoritative servers. Authority over an entity may be transferred from one server to another server.

[0098] An entity may be simulated on a server that is authoritative with respect to that entity. The entity may also be replicated on another server that is not authoritative with respect to the entity. A server that is replicating an entity may be referred to as a non-authoritative server, with respect to that replicated entity.

[0099] A non-authoritative server replicates an entity within the simulated environment in accordance with the one or more modifiable attributes associated with the entity. In some embodiments, a non-authoritative server receives, from the entity’s authoritative server, simulation information comprising updates to the modifiable attributes associated with the replicated entity. In response to receiving the simulation information, the non-authoritative server adjusts the modifiable attributes of the replicated entity within the instance of the virtual space simulated environment that the server is simulating.

[0100] In an example, in response to a non-authoritative server receiving, from an entity’s authoritative server, an indication that the entity has moved forward within the simulated environment to a second position, the non-authoritative server replicates the entity as being positioned at the second position within the simulated environment. Persistent connections

[0101] A server and a client may establish a persistent connection via which to transfer information during the simulation. Similarly, a server and another server may establish a persistent connection via which to transfer information during the simulation. A persistent connection may comprise a communication connection that remains open for an extended period of time, during which multiple transactions of requests and responses can take place between the client and the server. A persistent connection may be referred to as a long-lived connection or a keep-alive connection. A persistent connection may comprise a TCP connection or a HTTP persistent connection. A persistent connection may comprise a socket connection. A server and client, or a server and another server, may communicate via an inter-process communication (IPC) method over a persistent connection. In embodiments, the IPC comprises a remote procedure call (RPC).

[0102] In some embodiments, a client initiates the establishment of a persistent connection with a server. A client may initiate the establishment of a persistent connection by transmitting a connection request to a server. Once a connection is established between a client and a server, the server is considered to be connected to the client, and the client is considered to be connected to the server. A connection may be closed by a server or a client.Spatial partitioning

[0103] A single server may simulate an entire simulated environment; however, as the number of players increase and the simulated environment becomes more complex, this centralized approach may encounter performance bottlenecks, leading to issues such as latency and compromised user experiences.

[0104] To address these challenges and enhance scalability and responsiveness in online simulation, spatial partitioning may be applied. In embodiments, spatial partitioning involves spatially dividing the simulated environment into smaller, manageable regions, each representing a distinct virtual space of the simulated environment. Accordingly, the simulation of the entire environment may be distributed over a plurality of servers. Depending upon the computational load associated with simulating a spatial partition (e.g. a virtual space), a server may simulate one or more spatial partitions. A spatial partition may define a two-dimensional area or three-dimensional space.

[0105] The simulation software executing on one or more servers in a spatially partitioned simulation maintains a unified representation of the entire simulated environment (e.g. virtual world). Simulation information may define the positions, actions and attributes of the entities within the simulated environment and may be shared between the plurality of servers. Spatial partitioning example

[0106] Figure 4 illustrates a portion 400 of a two-dimensional simulated environment, in accordance with an embodiment. The simulation environment may extend beyond the portion bounded by the dashed lines 420. The portion 400 has been partitioned into a plurality of spatial partitions as indicated by the solid lines (e.g., solid lines 440). Spatial partitions may vary in size. For example, spatial partitions 405 are smaller than spatial partition 410. Entities, such as entities 460, may be located within the spatial partitions.

[0107] As simulated entities often interact primarily with their immediate surroundings rather than the entire simulated environment, spatial partitioning may be leveraged to reduce the number of entity interactions that a server needs to track and process at any given time. This can result in smoother gameplay experiences and more efficient resource utilization. Spatial instancing

[0108] Spatial instancing of a spatial partition can provide multiple unique instances of the spatial partition within the simulated environment. Simulation software may apply spatial instancing to distribute entities that are located within a spatial partition across a plurality ofinstances of that spatial partition. Advantageously, spatial instancing can spread out populations of entities, across the instances, which may reduce or level the workload for both the server and the client by limiting the number of potential interactions between entities. Because the entities in the instance do not need to be updated on all the information going on outside the instance, and vice versa for the characters outside the instance, there may be an overall decrease in demands on the network, with the net result being less lag for the players. Spatial instancing example

[0109] Figure 5 illustrates a simulation scenario comprising spatial instancing of a spatial partition of a simulated environment, in accordance with an embodiment. The spatial partition comprises a first spatial instance 560, and a second spatial instance 562. In this embodiment, the first spatial instance is simulated by a first server, for example server 160. In this embodiment, the second spatial instance is simulated by a second server, for example server 162.

[0110] The first server 160 simulates, within the first spatial instance 560, a plurality of entities, including entity 510, entity 514 and entity 516. The first server is authoritative with respect to entities 510, 514 and 516. The second server simulates, within the second spatial instance 562, a plurality of entities, including entity 520, entity 522, entity 524 and entity 526. The second server is authoritative with respect to entity 522, 524 and 526.

[0111] Entity 510, which is simulated in the first spatial instance 560 by the first server 160, is also replicated (as entity 520) in the second spatial instance 562 by the second server 162. The second server is non-authoritative with respect to entity 520. Combined rendering spatial instance

[0112] In the embodiment illustrated in Figure 5, the client 110 is connected to both the first server 160 and the second server 162. In embodiments, the client is configured to display a rendering 570 of a spatial partition 410 of the simulated environment, wherein the rendering comprises a combined rendering of the first spatial instance 560 and second spatial instance 562 of the spatial partition 410. The rendering 570 comprises a client instance of the virtual space of the simulated environment. The rendered spatial partition 570 includes the entities simulated in the first spatial instance 560 as well as the entities simulated in the second spatial instance 562.

[0113] With reference to the embodiment of Figure 5, the rendered spatial instance 570 comprises rendered entities 530, 534, and 540, which correspond respectively to simulatedentities 510, 514, and 516 that are simulated in the first spatial instance 560. Furthermore, the rendered spatial instance 570 comprises rendered entities 532, 536, and 538, which correspond respectively to simulated entities 522, 526, and 524 that are simulated in the second spatial instance 572.

[0114] Advantageously, the player utilising client 110 can view, within the rendered spatial partition 570, entities that are simulated on server 1 as well as entities that are simulated on server 2. In some embodiments, the player utilising client 110 can view, within the rendered spatial partition 570, entities that are simulated or replicated on server 1, as well as entities that are simulated or replicated on server 2.

[0115] In embodiments, a client device may display only a portion of the rendered spatial instance 570. The portion of the rendered spatial instance that is displayed by the client device may comprise a portion proximal to the location of the player entity within the spatial instance. Network topology

[0116] Figure 6 illustrates a network topology associated with the simulation scenario depicted in Figure 5, in accordance with an embodiment. Client 110 is connected to a first server 160 via connection 602. Connection 602 may comprise a persistent connection. Via connection 602, the client 110 receives simulation status updates regarding the entities that are simulated by server 160, including entities 510, 514 and 516.

[0117] Client 110 is also connected to a second server 162 via a connection 604. Connection 604 may comprise a persistent connection. Via connection 604, the client 110 receives simulation status updates regarding the entities that are simulated by server 162, including entities 522, 526 and 524.

[0118] The client 110 transmits a request to modify a modifiable attribute of the player entity 530, via persistent connection 602. The client may 110 transmits a request to modify a modifiable attribute of the player entity in response to receiving user input from the player 120.

[0119] The server 160 transmits simulation status updates to the client 110, via persistent connection 602. If server 160, as authoritative server for player entity 530, authorises the modification of the modifiable attribute of entity 530, the simulation status update includes a new value for the modifiable attribute. If the server does not authorise the modification of the modifiable attribute, the simulation status update may include an indication that the request to modify the attribute was refused. In some embodiments, if the server does not authorise themodification of the attribute, the simulation status update indicates that the modifiable attribute has not been modified.

[0120] Notably, the first server 160 is connected to the second server 162 via connection 608. Connection 608 may comprise a persistent connection. In response to updating a modifiable attribute of player 1’s entity 530, the first server 160 transmits a simulation status update to the second server 162, via connection 608, wherein the simulation status update includes the updated value of the modifiable attribute of player entity 530. In response to receiving the updated value of the modifiable attribute of player 1’s entity 530, the second server 162 updates the replicated entity 520 in accordance with the updated modifiable attribute. Accordingly, the replication of player 1’s entity 520 in spatial instance 562 on server 162 is in accordance with the simulation of player 1’s entity 530 in spatial instance 560 on server 160.

[0121] In the embodiment illustrated in Figs.5 and 6, the second client (client 112) is connected to server 162 via connection 606, but the second client is not connected to server 160. Accordingly, the second client receives, from the second server 162, a simulation status update via connection 606, wherein the simulation status update includes the updated value of the modified attribute of player entity 530. In response to receiving the simulation status update from the second server, the second client updates the rendering 520 of the player 1’s entity 530 in the rendering 572 of the spatial partition 410. Connection 606 may comprise a persistent connection. Tailored player experience

[0122] Advantageously, player 2, who is viewing the rendering of the spatial instance 562 on the second client, can view player 1’s entity in the same rendering of the spatial instance 562 that their own entity 522 is located. Player 2 can also see the other entities simulated by the second server 162, including entities 524 and 526, in the spatial instance 562. Similarly, player 1 can view both their own player entity 530 and player 2’s entity 532 within the other spatial instance 570.

[0123] Both player 1 and player 2 have player entities that are located within the same spatial partition 410 of the simulated environment. This means that both player 1 and player 2 can experience the simulation features associated with that spatial partition. For example, in a simulated virtual world in which spatial partition 410 comprises a river crossing challenge, both player 1’s entity and player 2’s entity can experience that same river crossing challenge in different spatial instances. This shared experience can enhance the collaborative or social aspects of the simulation experience for player 1 and player 2.Example tailored experience

[0124] In some embodiments, a player may desire to tailor their experience of the simulated environment for aesthetic reasons. For example, a player may prefer to avoid the visual clutter of non-essential entities appearing within the simulation environment. Non-essential entities may be entities that are not pertinent to the gameplay experience for the player, such as background characters.

[0125] In some embodiments, a player may desire to tailor their experience of the simulated environment to customise the amount or type of interactions the player’s entity can have with other entities. For example, a player may desire to include additional entities within the player’s rendering of the simulation environment to alter the gameplay experience by including additional entities with which to interact.

[0126] In some embodiments, a player may desire to tailor their experience of the simulation environment based on the performance capabilities of the client device and / or the network connection to the server(s). For example, in situations in which performance capabilities of the client device are sufficient, the player may be inclined to include non-essential or passive entities within the simulation environment. Conversely, when the player, the client, or the server determines that the performance capabilities of the client device or the network connection are not sufficient to support the inclusion of non-essential entities within the client device’s rendering of the simulated environment, the player, client or server can tailor the client’s connections to servers to reduce the non-essential entities rendered on the client device.

[0127] Figure 7 illustrates a simulation scenario 700 which exemplifies a tailored simulation experience for a player, in accordance with an embodiment. Figure 8 illustrates a network topology associated with simulation scenario 700, in accordance with an embodiment.

[0128] Simulation scenario 700 is similar to simulation scenario 500; however, in this scenario, player 2 desires to include multiple background characters within the rendering of spatial partition 410 on client 2. Accordingly, the second client 112 is connected to a third server 164, via persistent connection 806. The third server is configured to simulate a plurality of background character entities within a third spatial instance of spatial partition 410. The simulated background character entities are shown as solid triangles in spatial instance 760, and collectively referred to as entities 702. The rendered background character entities are shown as hollow triangles in rendered spatial instance 572, and collectively referred to as entities 704.

[0129] Because the second client is connected to the third server 164, the second client receives simulation information associated with the entities 702 simulated on the third server and renders the background entities 704 within the rendered spatial instance 572 on the second client device. Consequently, player 2 can see the many background entities, alongside the player’s own entity 522, and the other entities (520, 526 and 524) that are simulated on server 2.

[0130] In response to the second client device connecting to the third server 164, the third server establishes a persistent connection 808 with the authoritative server (second server 162) for player 2’s entity 522. Furthermore, in response to receiving, from the second server, simulation information regarding player 2’s entity, the third server replicates player 2’s entity 710 in the third spatial instance 760 of the spatial partition 410.

[0131] In the event that player 1 also desires to include multiple background characters (of the type simulated on server 3) within the rendering of spatial partition 410 on client 1, client 1 could request to connect to server 3.

[0132] In the event that the capabilities of client 2, or the capabilities of the persistent connection between client 2 and server 3, were insufficient to support the information transfer necessary to render entities 704 on client 2, client 2 could disconnect from server 3. As a result, entities 702 would no longer be rendered on client 2. Improved player experience

[0133] Advantageously, because a client device is able to receive simulation information from a plurality of servers, and render, within a rendered spatial partition, entities that are simulated on different servers, one player’s experience of the simulation of the spatial partition may differ from another player’s experience of the simulation of the same spatial partition, depending on the respective servers to which the players’ client devices are connected.

[0134] By selecting servers, from a plurality of servers simulating instances of a spatial partition, to connect to, a player can tailor their visual experience of the simulated spatial partition, and also the experience of their player entity’s interaction with the other entities within the spatial partition. Spatial partition boundaries

[0135] In some embodiments, an entity can change position within the simulated environment. For simulated environments that are spatially partitioned, the movement of an entity within the simulated environment may mean that the entity moves from one spatial partition to another. As different spatial partitions may be simulated by different servers, the transitioning of anentity from one spatial partition to another may include the transferring of authority over the entity from one server to another server.

[0136] In some embodiments, the boundary between one partition and another partition is a defined characteristic of the simulated environment. A partition boundary may be located at the edge of a spatial partition, as illustrated in Figure 4. In some cases, the partition boundary is defined by a characteristic of the simulated environment, for example, a doorway into a room, wherein the room itself comprises a spatial partition. Traversing spatial partition boundary example

[0137] Figure 9 illustrates a simulation scenario which includes traversing a boundary of a spatial partition of a simulated environment, in accordance with an embodiment. Figure 10 illustrates a network topology associated with the simulation scenario illustrated in Figure 9, in accordance with an embodiment.

[0138] In this embodiment, the client device is configured to render two spatially adjacent partitions, 450 and 410, within a single view for the player. The boundary between the spatial partitions is simulated by server 1 (as indicated by dashed line 902), and server 3 (as indicated by dashed line 904) and client device (as indicated by dashed line 906).

[0139] The player’s entity 510 is simulated in spatial instance 560 of partition 410 on authoritative server 160. The client device receives simulation information from server 160 via persistent connection 602 and renders the player’s entity within the right-hand side of the client display.

[0140] The client device is also connected to server 162, which is simulating a second instance 562 of partition 410. The client device receives simulation information regarding the entities of the second instance from server 162 via persistent connection 604.

[0141] In this example, in response to movement input received by the client device from the player, the client device 90 provides a request to authoritative server 160 to move player’s entity 510 left, from spatial partition 410 to spatial partition 450. The authoritative server 160 moves the player’s entity left, which places the entity on the spatial partition boundary 902. The authoritative server 160 provides simulation information to the client 110, indicating the movement of the player’s entity. The simulation information may comprise an indication that the entity 510 is positioned at the partition boundary 906.

[0142] In response to the authoritative server 160 determining that the entity 510 is positioned at the partition boundary 902, the authoritative server establishes a persistent connection 1006with a server 1010 simulating an instance of the spatial partition 450. The authoritative server may communicate with the simulation controller to determine which server is simulating an instance of the spatial partition 450.

[0143] In response to simulation information comprising an indication that the entity 510 is positioned at the partition boundary 906, the client device may establish a persistent connection with a server 1010 simulating an instance of the spatial partition 450. The client 110 may communicate with the simulation controller to determine which server is simulating an instance of the spatial partition 450. In response to establishing a persistent connection 1004 with server 1010, the client renders (at least part of) the spatial instance of spatial partition 450, that is simulated by server 1010. Additionally, in response to establishing a persistent connection with server 1010, the client renders entities (such as 908) that are simulated by server 1010.

[0144] Advantageously, as the player’s entity 530 approaches, or reaches the spatial partition boundary 906, the client provides the player with a (at least partial) view of an instance of spatial partition 450, as well as continuing to provide the player with a (at least partial) view of the instance 570 of spatial partition 410. Furthermore, the player can also see rendered entities simulated in the spatial partition 450. Non-authoritative server pass through

[0145] Figure 11 illustrates a simulation scenario which includes a non-authoritative server facilitating a modification request, in accordance with an embodiment. Figure 12 illustrates a network topology associated with the simulation scenario illustrated in Figure 11, in accordance with an embodiment.

[0146] In this embodiment, the client device 110 is connected to server 162 via a persistent connection 604. The client device 110 may also be connected to other servers. For example, the client device 110 may be connected to server 160 via a persistent connection 602. Alternatively, the client device 110 may only be connected to server 162.

[0147] The client device 110 is configured to render entities, within a client instance 570 of a spatial partition, that are simulated or replicated on server 162 within another instance of the same spatial partition. In particular, the client device is configured to render: entity 532, which is simulated as entity 522 on server 162; entity 538, which is simulated as entity 524 on server 162; and entity 536, which is simulated as entity 526 on server 162. The client may also be configured to render a player entity 530.

[0148] Server 162 is connected to server 164 via connection 1202. Server 164 is authoritative with respect to entity 1120, which is replicated on server 162 as entity 526. Accordingly, server 562 is non-authoritative with respect to entity 526.

[0149] In some embodiments, entity 1120 may comprise a player entity which is rendered on a client device. For example, server 164 may be in connection with a client device 1206, which is configured to render the player entity. Alternatively, server 164 may be configured to simulated entity 1120 as a non-player entity, e.g. an entity that is not associated with a player.

[0150] The client device 110 may request to modify a modifiable attribute of rendered entity 536. This request may arise in response to the modification of a modifiable attribute of another entity being rendered within the client instance 570. For example, in response to entity 530 shooting at entity 536, the client device 110 may request that the health status of entity 536 be updated to reflect this shooting action. In another example, entity 536 may comprise a treasure chest and in response to entity 530 taking action to open the treasure chest, the client device 110 may request a change in the modifiable attribute of entity 536 that indicates the open / closed status of the treasure chest.

[0151] Client device 110 communicates a request to modify one or more modifiable attributes of entity 536 to server 162 via connection 604. As server 162 is a non-authoritative server with respect to entity 526, server 162 is not authorised to modify the modifiable attributes of entity 536. Accordingly, in response to receiving the modification request from client 110, server 162 transmits a modification request to server 164, via connection 1202. As server 164 is the authoritative server with respect to entity 1120, server 163 is authorised to modify the modifiable attributes of entity 1120. Accordingly, in response to receiving the modification request from server 162, server 164 modifies the modifiable attribute of entity 1120.

[0152] In response to a modifiable attribute of entity 1120 being modified, server 164 communicates simulation information, comprising the modified (e.g. updated) attribute of entity 1120 to server 162, which, in response to receiving the updated attribute, replicates entity 526 in accordance with the updated attribute. Furthermore, in response to server 162 receiving the updated attribute, the server 162 communicates simulation information, comprising the updated attribute of entity 1120 to client 110. The client 110, in response to receiving the updated attribute of entity 1120, renders the entity 536 in accordance with the updated attribute.Trusted client

[0153] To facilitate the communication of simulation information between servers, a game client may be a client that is considered to be a trusted source of simulation information by a server. A server may be configured to determine whether a client device is a trusted client. In response to determining that the client device is a trusted client, the server may be configured to receive simulation information from the client device and update the simulation / replication of entities in accordance with that simulation information.

[0154] Conversely, in response to determining that the client device is not a trusted client (or is no longer a trusted client), the server may be configured to ignore (and in some embodiments, actively reject) simulation information transmitted from the client device. In other words, the server is configured to maintain current the simulation / replication of entities, without enacting modifications in response to the simulation information transmitted from the untrusted client device.

[0155] A server may be configured to consider a client to be a trusted client only with regard to entities that the server is replicating (e.g. entities for which the server is a non-authoritative server). A server may be configured to consider a client to be a trusted client for only a particular entity, or set of entities. A server may consider different clients to be trusted with regard to different entities.

[0156] In response to a server receiving simulation information from a client, wherein the simulation information pertains to entities for which the client is considered to be a trusted client, the server may act upon the received simulation information.

[0157] Advantageously, trusting simulation information (or a part thereof) that is provided to the server by a client device means that the server need not be communicatively connected to the authoritative server that generated the simulation information in order to proceed with the simulation and / or replication of entities on the server, in accordance with the simulation information. That is, the simulation and / or replication of entities on a server may continue without interruption in the event that the server is not in communication with the server that is the source of the simulation information. The replication of an entity on a server may be performed even though the server is not in communication with the server that is authoritative with respect to that entity.Trusted client example

[0158] Figure 13 illustrates a simulation scenario which includes a server 1362, that is non- authoritative with respect to entity 1320, in communication with a trusted client 1370, in accordance with an embodiment. Figure 14 illustrates a network topology associated with the simulation scenario illustrated in Figure 13, in accordance with an embodiment.

[0159] In this embodiment, the client device 1410 is connected to server 1460 via a persistent connection 1402, and the client device 1410 is connected to server 1462 via a persistent connection 1404. The client device 1410 may also be connected to other servers.

[0160] The client device 1410 is configured to render entities, within a client instance 1370 of a spatial partition, that are simulated on server 1460 within another instance 1360 of the same spatial partition. In particular, the client device is configured to render: entity 1334, which is simulated as entity 1314 on server 1460; and entity 1340, which is simulated as entity 1316 on server 1360. Client device 1410 is also configured to render player entity 1330, which is simulated by server 1460 as entity 1310.

[0161] The client device 1410 is configured to render entities, within a client instance 1370 of a spatial partition, that are simulated on server 1462 within another instance 1362 of the same spatial partition. In particular, the client device is configured to render: entity 1332, which is simulated as entity 1322 on server 1462; and entity 1338, which is simulated as entity 1324 on server 1462.

[0162] Client device 1410 is connected to server 1460, via connection 1402, and connected to server 1462, via connection 1404. Notably, in this example, server 1460 is not connected to server 1462 via a persistent connection. More specifically, server 1460 is not connected to server 1462 for the purposes of communicating simulation information from server 1460 to server 1462. Other information may be communicated, directly or indirectly, between server 1460 and server 1462; however, server 1462 does not receive simulation information from server 1460 regarding the simulation of entity 1310, which is simulated on server 1460 and replicated on server 1462 as entity 1320. Server 1462 may have temporarily or permanently disconnected from server 1460, may never connect to server 1460, or may be yet to connect to server 1460.

[0163] In the simulation scenario illustrated in Figures 13 and 14, client device 1410 is considered to be a trusted client device, by server 1462. More specifically, server 1462 isconfigured to consider client device 1410 to be a trusted client with respect to replicated entity 1320.

[0164] Accordingly, in response to the client device 1410 receiving, from authoritative server 1460, simulation information indicating an update to a modifiable attribute of entity 1330, the client device 1410 rendered entity 1330 in accordance with the updated modifiable attribute, and the client also provides simulation information to non-authoritative server 1462, indicating an update to a modifiable attribute of entity 1330. In response to client device 1410 being a trusted client with respect to replicated entity 1320, and in response to receiving simulation information from the client device 1410, the server 1462 replicates entity 1320 in accordance with the updated modifiable attribute.

[0165] Advantageously, by routing the simulation information, comprising the updated modifiable attribute, to server 1462 via trusted client device 1410, direct communication between server 1460 and 1462 is not required. Establishing a trust relationship

[0166] A trust relationship may be established between a client and a server, with regard to the connection between the client and the server. A trust relationship may be established in order to facilitate execution of the simulation across a plurality of game servers, without requiring a connection to be established between a server simulating an entity and a server replicating that entity and / or without requiring the server simulating the entity to provide simulation information to the server replicating that entity.

[0167] A trusted client acts as an intermediary, providing simulation information, regarding an entity, to the server replicating that entity. In response to the trust relationship being established between the client and this server, the server acts upon simulation information, regarding the entity, received from the client device.

[0168] In some embodiments, the simulation controller 1470 is configured to establish a trust relationship between a client and a server. Furthermore, in some embodiments, the simulation controller is configured to command a server to consider a specific client to be a trusted client.

[0169] In some embodiments, an authoritative server may establish a trust relationship between a client device and a non-authoritative server. The scope trust relationship may be directed to simulation information of entities to which the server is authoritative. The authoritative server may command one or more other servers to consider the client device to be a trusted client. Accordingly, in response to receiving the command from the authoritative server, the non-authoritative servers are configured to act upon simulation information received from the trusted client regarding entities to which the authoritative server is authoritative.

[0170] The authoritative server may be configured to establish a trust relationship between a client device and a non-authoritative server, in response to receiving a command from the simulation controller to do so.

[0171] In some embodiments, a server is configured to determine (e.g. consider) that a client is a trusted client, in response to a trust relationship being established between the server and the client. Scope of trust

[0172] In some embodiments, a server may be configured to also determine a scope of trust for the client. In some embodiments, the simulation controller is configured to inform the server of the scope of trust (e.g. the trust scope) for the client. In some embodiments, the simulation controller is configured to inform the client of the scope of trust for the client. In some embodiments, the server is preconfigured with a scope of trust. The server may be preconfigured with a scope of trust by receiving, from the simulation controller, a configuration instruction, wherein the configuration instruction comprises an indication of the scope of trust.

[0173] A scope of trust defines the extent to which a server is to act upon (e.g. trust) the simulation information provided by the client. In some embodiments, the scope of trust may define entities, situations or scenarios in which the server is to trust the simulation provided by the client. In some embodiments, the scope of trust may define entities, situations or scenarios in which the server is not to trust the simulation provided by the client.

[0174] For example, the scope of trust may define that a server is to consider a client to be a trusted client with respect to: one or more specific entities that the server is replicating; one or more specific entities that the server is simulating (i.e., entities to which the server is authoritative); specific modifiable attributes relating to one or more entities that the server is replicating or simulating; all simulation information provided by the client to the server, irrespective of the entity or entities to which that simulation information applies; or any combination thereof.

[0175] In some embodiments, the scope of trust may define a period of time during which the server is to consider the client to be a trusted client. In some embodiments, the scope of trust may define a simulation event, wherein upon occurrence of the simulation event, the server is to no longer consider the client to be a trusted client.

[0176] In some embodiments, the scope of trust may define what simulation information the client (as trustee) is instructed to communicate to the server (as truster). For example, a client may be configured to only communicate simulation information to the truster server, wherein the simulation information pertains to specific simulation entities, interactions, situations, time periods and / or scenarios as defined by the scope of trust.

[0177] In some embodiments, the scope of trust may define: one or more interactions that fall within the scope of trust; one or more entities that fall within the scope of trust; one or more interactions that fall outside the scope of trust; one or more entities that fall outside the scope of trust; or a combination thereof.

[0178] In some embodiments, a game server is configured to determine whether the game client is a trusted client with respect to the simulation information by determining whether the simulation information falls within the scope of trust (e.g. trust scope). For example, if the simulation information pertains to the modifiable attribute(s) of an entity that is not included in the scope of trust (e.g. does not fall within the trust scope), the game server is configured to consider the game client is not a trusted client with respect to the simulation information. Assigning trust example

[0179] Figure 15 is a message sequence diagram illustrating a message sequence 1500 in which a simulation controller 1470 establishes a trust relationship between the client device 1410 and the server 1462 depicted in Figure 14, in accordance with an embodiment.

[0180] The simulation controller 1470 transmits instructions in the form of a trust command 1502 to server 1462. The trust command indicates that the client 1410 is a trusted client with respect to simulation information sent to the server 1462 from the client. In particular, the trust command indicates that the client 1410 is a trusted client with respect to simulation information regarding entity 1320. In other words, the trust command comprises an indication of the scope of trust, wherein the scope of the trust is limited to entity 1320.

[0181] In some embodiments, in response to the trust command not comprising an indication of the scope of trust, the server applies a preconfigured scope of trust to received simulation information. In some embodiments, in response to the trust command not comprising an indication of the scope of trust, the server considers that the trust is not limited.

[0182] The trust command instructs server 1462 to act upon simulation information provided by the trustee (i.e. client 1410). In response to receiving the trust command 1502, the server1462 determines 1520 that the client device 1410 is a trusted client in relation to the scope of trust (i.e. in relation to entity 1320).

[0183] The simulation controller also transmits a trust assignment message 1504 to client 1410 to command client 1410 to communicate any simulation information regarding entity 1320 to server 1462. In some embodiments, the simulation controller may transmit the trust command message 1502 and the trust assignment message 1504 simultaneously, or substantially simultaneously.

[0184] In some embodiments, the simulation controller is configured to provide a signed token to the server 1462 and the client 1410. The client may be configured to include the signed token in the simulation information message 1510 transmitted to the server 1462. In response to receiving the simulation information message 1510, the server 1462 may be configured to validate the signed token received from the client before acting on simulation information provided by the client.

[0185] In some embodiments, the simulation controller may also inform the authoritative server of entity 1320 (i.e. server 1460), via message 1506, of the trust relationship between client device 1420 and server 1462 regarding entity 1320.

[0186] As the authoritative server for entity 1320, server 1460 may update a modifiable attribute of entity 1320. In response to the server 1460 updating the modifiable attribute of entity 1320, the server 1460 communicates simulation information 1508 to the client device 1410. The simulation information comprises the updated modifiable attribute of entity 1320.

[0187] In response to receiving message 1508, the client device updates its rendering of entity 1320 in accordance with the updated modifiable attribute. Additionally, in response to receiving message 1508, and in response to the established trusted relationship between the client device and the server 1462 regarding entity 1320, the client device transmits the simulation information from message 1508, to the server 1462 in message 1510.

[0188] In response to receiving the simulation information in message 1510 from the client device 1410, and in response to determining that the client device is a trusted client, the server 1462 acts upon 1530 the simulation information in message 1510. Specifically, the server 1462 updates the simulation of entity 1320 in accordance with the updated modifiable attribute provided in the simulation information of message 1510.Authoritative trust

[0189] In some embodiments, the simulation controller is configured to issue a trust command to a server regarding an entity to which the server is actually authoritative. For example, a server is authoritative over entity X, and the simulation controller issues a trust command to the server, indicating that the server is to trust client 1410 with regard to entity X.

[0190] In response to receiving simulation information regarding entity X from client 1410, wherein the simulation information comprises an updated modifiable attribute for entity X, the server simulates entity X in accordance with the updated modifiable attribute.

[0191] Additionally, in some embodiments, as the server is the authoritative server regarding entity X, the server transmits simulation information (e.g. a WorldStateUpdate) to one or more other client devices that are rendering entity X, wherein the simulation information includes the updated modifiable attribute for entity X. Trust cessation

[0192] A trust relationship between a client device and a server may be ceased (e.g. be revoked, made redundant, withdrawn, or otherwise discontinued).

[0193] In some embodiments, the simulation controller may take action to cease a trust relationship between a client device and a server. The simulation controller may be configured to cease a trust relationship between a client device and a server that is non-authoritative with respect to an entity, in response to a communication channel being established between the non- authoritative server and an authoritative server (or the anticipation of such a channel being established).

[0194] The establishing of a communication channel between the non-authoritative server, which is replicating an entity, and the authoritative server, which is simulating the same entity, allows for the communication of simulation information regarding that entity to be communicated from the authoritative server to the non-authoritative server. Accordingly, the non-authoritative server does not need to rely on the receipt of such simulation information from a trusted client.

[0195] In some simulations, servers within the multi-server simulation may be considered by other servers as inherently more trustworthy than client devices. Accordingly, servers may be configured to establish and / or cease trust relationships in response to receiving instructions from another server.

[0196] In some embodiments, trust relationships between a client and a server are established to facilitate communication between servers wherein there does not exist a persistent connection between the servers. A server may be configured to cease a trust relationship between a client and the server, in response to establishing a persistent connection between the server and a second server.

[0197] In some embodiments, a server may cease a trust relationship with a client in response to receiving communication from another server within the simulation. For example, in response to a first server receiving simulation information from a second server, wherein the simulation information pertains to an entity that falls within the trust scope of an active trust relationship between a first server and a client device, the first server ceases the trust relationship between the first server and the client device. The second server may be authoritative with respect to the entity.

[0198] Figure 16 is a message sequence diagram illustrating a message sequence 1600 in which a trust relationship between the client device 1410 and the server 1462, depicted in Figure 14, is ceased, in accordance with an embodiment.

[0199] In message 1602, the simulation controller instructs the server 1462 to establish a connection with the server 1460. In response to message 1602, the server 1462 issues a connection request 1604 to the server 1460. In response to message 1604, a persistent connection is established between the two servers.

[0200] In some embodiments, in response to the establishment of the persistent connection between server 1462 and server 1460, the server 1462 considers the trust relationship between the server 1462 and the client 1410 to be ceased. In other words, in response to the establishment of the persistent connection, the server 1462 determines that client 1410 is not a trusted client.

[0201] In message 1606, the authoritative server for entity 1320 (e.g. server 1460) provides simulation information comprising updated modifiable attributes of entity 1320. In some embodiments, in response to receiving the simulation information in message 1606, the server 1462 considers the trust relationship between the server 1462 and the client 1410 to be ceased. In other words, in response to receiving simulation information regarding an entity, from the authoritative server of that entity, the server 1462 determines that client 1410 is not a trusted client.

[0202] In some embodiments, the server 1462 may inform the client 1410 of the cessation of the trust relationship (e.g., via message 1610). In some embodiments, the simulation controller may inform the client 1410 of the cessation of the trust relationship (e.g., via message 1608).

[0203] In some embodiments, the simulation controller commands the cessation of a trust relationship between a server and a client. For example, the simulation controller may be configured to transmit a trust revocation message to server 1462. The trust revocation message informs the server 1462 that the client 1410 is no longer a trusted client with regard to the entity 1320. The simulation controller may also be configured to transmit a trust revocation message to the client 1410 to inform the client that the client is no longer a trusted client with regard to entity 1320. In response to receiving the trust revocation message, the server 1462 will no longer act upon simulation information, regarding the entity 1320, received from the client 1410.

[0204] A trust relationship between a client and a server may cease due to: an elapsed time period (e.g., as specified in the trust scope); a disconnection between the client and server (e.g., a loss of the persistent connection between the client and the server); a withdrawal from the trust relationship by the client device; or any combination thereof. Connecting to a server

[0205] Figure 17 is a message sequence diagram illustrating a message sequence 1700 to establish a connection between a client 110 and a server 160, in accordance with an embodiment. In some embodiments, the client initiates the message sequence 1700 in response to the user 120 starting the client application on the client device.

[0206] The client 110 transmits a connection request 1702 to the simulation controller 170. The connection request may comprise parameters which may assist the simulation controller to select a suitable simulation server to which the client 110 may connect. The connection parameters may indicate the preferences, limitations, technical considerations or other information pertinent to establishing the connection.

[0207] In response to receiving the connection request, and with consideration of the connection parameters, the simulation controller selects a server to which the client may connect. The simulation controller transmits a connection instruction message 1704 to the client. The connection instruction message includes: a server identifier (e.g., a Universal Resource Locator (URL)); and a server access token (e.g., a JSON Web Token (JWT))

[0208] In response to receiving the connection instruction message, the client sends a connect message 1706 to the server indicated by the server identifier. The connect message includes the server access token. In response to receiving the connect message 1706, the server establishes a persistent connection between the client 110 and the server. Rendering entities on a game client

[0209] Figure 18 is a message sequence diagram illustrating a message sequence 1800 to display simulated entities within a rendering of a simulated environment, in accordance with an embodiment. The message sequence diagram 1600 illustrates messages transmitted between a game client 110 and a first server 160, and transmitted between the game client and a second server 162. The game client is configured to render entities simulated on the first server and entities simulated on the second server.

[0210] As in message sequence diagram 1700, the client 110 sends a connect message 1802 to server 160 (e.g. server 1). The connect message includes the server access token for server 1. In response to receiving the connect message 1802, server 1 establishes a persistent connection between the client 110 and server 1. Server 1 is configured to simulate an entity (player 1 entity) which is associated with a user of client 1. Server 1 is configured to simulate the player 1 entity within a first instance of a virtual space of the simulated environment. Server 1 simulates the player 1 entity in accordance with attributes associated with that entity.

[0211] In response to establishing a connection between the client 110 and server 1, the client renders 1810 the player 1 entity within a client instance of the virtual space of the simulated environment.

[0212] The client may receive a WorldStateUpdate message 1806 from the server 1. Message 1806 is received via the persistent connection established between the client 110 and the server 1. This state update message comprises simulation information regarding the state of modifiable attributes associated with the player 1 entity. In response to receiving, from the server 1, the simulation information, the client updates 1810 the rendering of the player 1 entity in accordance with the attributes of the player 1 entity as indicated by the simulation information.

[0213] The client 110 also sends a connect message 1804 to a second server (server 162). The connect message includes the server access token for server 2. In response to receiving the connect message 1804, server 2 establishes a persistent connection between the client 110 and server 2. Server 2 is configured to simulate or replicate a second entity within a second instanceof the same virtual space of the simulated environment in which the player 1 entity is simulated on server 1.

[0214] The client 110 receives a WorldStateUpdate message 1808 from server 2. Message 1808 is received via the persistent connection established between the client 110 and server 2. This state update message 1808 comprises simulation information regarding the state of modifiable attributes associated with the second entity. In response to receiving, from server 2, the simulation information 1808, the client renders 1812 the second entity in the client instance of the virtual space of the simulated environment, in accordance with the attributes of the second entity as indicated by the simulation information.

[0215] Figure 19 is a message sequence diagram illustrating a message sequence 1900 to display simulated entities within a rendering of a simulated environment, in accordance with an embodiment. The message sequence diagram 1900 illustrates messages transmitted between a game client 110 and a first server 160, and transmitted between the first server and a second server 162. The game client is configured to render entities simulated on the first server and entities simulated on the second server.

[0216] As in message sequence diagram 1900, the client 110 sends a connect message 1902 to server 160 (e.g. server 1). The connect message includes the server access token for server 1. In response to receiving the connect message 1902, server 1 establishes a persistent connection between the client 110 and server 1. Server 1 is configured to simulate an entity (player 1 entity) which is associated with a user of client 1. Server 1 is configured to simulate the player 1 entity within a first instance of a virtual space of the simulated environment. Server 1 simulates the player 1 entity in accordance with attributes associated with that entity.

[0217] In response to establishing a connection between the client 110 and server 1, the client renders 1910 the player 1 entity within a client instance of the virtual space of the simulated environment.

[0218] The client may receive a WorldStateUpdate message 1906 from the server 1. Message 1706 is received via the persistent connection established between the client 110 and the server 1. This state update message comprises simulation information regarding the state of modifiable attributes associated with the player 1 entity. In response to receiving, from the server 1, the simulation information, the client renders 1910 the player 1 entity in accordance with the attributes of the player 1 entity as indicated by the simulation information.

[0219] Server 2 is configured to simulate or replicate a second entity within a second instance of the same virtual space of the simulated environment in which the player 1 entity is simulated on server 1. In the embodiment of Figure 13, the client 110 is configured to render the second entity that is simulated, or replicated, on server 2. However, in contrast to the embodiment illustrated in Figure 12, the client does not establish a direct connection between the client and server 2. Rather, the client receives simulation information regarding the second entity from server 2 via server 1.

[0220] Server 1 receives a WorldStateUpdate message 1908 from server 2 via a connection established between server 1 and server 2. Message 1908 comprises simulation information regarding the second entity. Server 1 transmits this simulation information to the client in WorldStateUpdate message 1920.

[0221] The client 110 receives a WorldStateUpdate message 1920 from the server 1 via the persistent connection established between the client 110 and server 1. In response to receiving, from server 1, the simulation information 1920, the client renders 1912 the second entity in the client instance of the virtual space of the simulated environment, in accordance with the attributes of the second entity as indicated by the simulation information. Modifying an entity attribute

[0222] Figure 20 is a message sequence diagram illustrating a message sequence 2000 to modify an attribute of a simulated player entity, in accordance with an embodiment. In some embodiments, the client initiates the message sequence 2000 in response to the user providing input, via a user interface. The message sequence of Figure 20 is in accordance with the system topology of Figure 6.

[0223] The client 110 transmits a modify request 2002 to the server 1. The modify request comprises a request to modify a modifiable attribute of the player entity. In this embodiment, the modify request comprises a request to move the player entity left 5 units, thus modify the location attribute of the player entity.

[0224] Server 1 is authoritative with regard to the player entity. Accordingly, server 1 is authorised to modify the location attribute. In response to receiving the modify request, server 1 updates the modifiable attribute of the player entity and provides to the client a WorldStateUpdate 2004. The WorldStateUpdate comprises an indication of the updated modifiable attribute. In response to receiving the WorldStateUpdate, the client renders 2010 theplayer entity in accordance with the updated modifiable attribute, thus positioning the player entity 5 units to the left.

[0225] Advantageously, server 1 is connected to server 2 via connection 608. Accordingly, server 1 also provides server 2 with the WorldStateUpdate 2006, so that server 2 can replicate 2012 the player entity in accordance with the updated modifiable attribute.

[0226] In some situations, server 1 may decide to reject the modify request 2002. A server may reject a modify request if the request is incompatible with the current state of the simulation. If the server 1 rejects the modify request, the server 1 communicates an indication of the rejection back to the client via connection 602.

[0227] It will be appreciated by persons skilled in the art that numerous variations and / or modifications may be made to the above-described embodiments, without departing from the broad general scope of the present disclosure. Furthermore, it will be appreciated by persons skilled in the art that embodiments disclosed herein can be combined with one or more other embodiment disclosed herein, without departing from the broad general scope of the present disclosure. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.

[0228] It will be appreciated by persons skilled in the art that any suitable distribution of functionality between different functional units may be used without detracting from the invention. For example, functionality illustrated to be performed by separate computing devices may be performed by the same computing device. Likewise, functionality illustrated to be performed by a single computing device may be distributed amongst several computing devices. Hence, references to specific functional units are only to be seen as references to suitable means for providing the described functionality, rather than indicative of a strict logical or physical structure or organization.

[0229] It will be appreciated by persons skilled in the art that, for processes and methods disclosed herein, the operations performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps and operations are only provided as examples, and some of the steps and operations can be optional, combined into fewer steps and operations, or expanded into additional steps and operations without detracting from the essence of the disclosed embodiments.

[0230] References herein to software or executable instructions are to be understood as referring to executable instructions stored in volatile or non-volatile memory. The memory can includeany data storage device that can store data which can thereafter be read by a processor. Examples of memory include read-only memory (ROM), random-access memory (RAM), magnetic tape, optical data storage device, flash storage devices, or any other suitable storage devices.

[0231] Throughout this specification the word ‘comprise’, or variations such as ‘comprises’ or ‘comprising’, will be understood to imply the inclusion of a stated element, integer or step, or group of elements, integers or steps, but not the exclusion of any other element, integer or step, or group of elements, integers or steps.

[0232] As used herein, any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. Similarly, use of “a” or “an” preceding an element or component is done merely for convenience. This description should be understood to mean that one or more of the element or component is present unless it is obvious that it is meant otherwise.

[0233] Unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).

Claims

CLAIMS:

1. A method for simulating entities within a simulated environment, the method comprising: simulating, on a first game server connected to a game client, a first entity within a first instance of a virtual space of the simulated environment, the first entity simulated on the first game server in accordance with a first modifiable attribute of the first entity; replicating, on a second game server, the first entity within a second instance of the virtual space of the simulated environment, the first entity replicated on the second game server in accordance with the first modifiable attribute; determining, by the first game server, an updated first modifiable attribute; in response to determining the updated first modifiable attribute, receiving, by the second game server from the first game server, the updated first modifiable attribute; and in response to receiving, by the second game server, the updated first modifiable attribute, replicating, on the second game server, the first entity in accordance with the updated first modifiable attribute.

2. The method of claim 1, further comprising: rendering, on the game client, the first entity within a client instance of the virtual space of the simulated environment, the first entity rendered on the game client in accordance with the first modifiable attribute of the first entity.

3. The method of any one of claims 1 or 2, wherein determining the updated modifiable attribute comprises: receiving, by the first game server, from the game client, a request to modify the first modifiable attribute.

4. The method of any one of claims 1 to 3, wherein determining the updated modifiable attribute comprises:receiving, by the first game server, from the second game server, a request to modify the first modifiable attribute.

5. The method of claim 4, further comprising receiving, by the second game server, from the game client, a request to modify the first attribute.

6. The method of any one of claims 1 to 5, wherein the first game server is connected to the game client via a persistent connection between the first game server and the game client.

7. The method of any one of claims 1 to 6, wherein the first game server is authoritative with respect to the first entity.

8. The method of any one of claims 1 to 7, wherein the second game server is non- authoritative with respect to the first entity.

9. The method of any one of claims 1 to 8, wherein receiving, by the second game server from the first game server, the updated first modifiable attribute comprises receiving the updated first modifiable attribute via a persistent connection between the second game server and the first game server.

10. The method of claim 9, further comprising: in response to determining, by the first game server, the updated first modifiable attribute, receiving, by the game client from the first game server, via the persistent connection between the first game server and the game client, the updated first modifiable attribute.

11. The method of any one of claims 1 to 10, further comprising: in response to receiving, the updated first modifiable attribute, rendering, on the game client, the first entity within the client instance of the virtual space of the simulated environment in accordance with the updated first modifiable attribute of the first entity.

12. The method of any one of claims 1 to 11, further comprising:simulating or replicating, on the second game server connected to the game client, a second entity within the second instance of the virtual space of the simulated environment, the second entity comprising a second modifiable attribute; and in response to receiving, by the second game server from the first game server, an update to the first modifiable attribute, determining, by the second game server, an interaction between the first entity and the second entity.

13. The method of claim 12, further comprising: in response to determining, by the second game server, the interaction between the first entity and the second entity, updating the second modifiable attribute.

14. The method of any one of claims 12 to 14, further comprising: in response to determining, by the second game server, the interaction between the first entity and the second entity, providing, by the second game server, simulation information comprising the updated second modifiable attribute.

15. The method of claim 14, further comprising, receiving, by the game client from the second game server, the simulation information comprising the updated second modifiable attribute.

16. The method of claim 15, further comprising, in response to receiving, by the game client from the second game server, the simulation information comprising the updated second modifiable attribute, rendering the second entity within the client instance of the virtual space of the simulated environment in accordance with the updated second modifiable attribute.

17. The method of any one of claims 14 to 16, wherein the second game server provides the simulation information comprising the updated second modifiable attribute to the game client via the persistent connection between the second game server and the game client.

18. The method of any one of claims 14 to 17, wherein the second game server provides the simulation information comprising the updated second modifiable attribute to the first game client via a persistent connection between the second game server and the game client.

19. The method of any one of claims 8 to 18, further comprising: in response to the second game server being non-authoritative with respect to the second entity, providing, by the second game server to a third game server, a request to modify the second modifiable attribute.

20. The method of claim 19, wherein the third game server is authoritative with respect to the second entity.

21. The method of any one of claims 1 to 20, wherein the first modifiable attribute comprises one or more of: a position within the simulated environment; an orientation within the simulated environment; an indication of motion; a speed of motion; an indication of abilities; an indication of the first entity’s health; a game state; an appearance of the entity; or a combination thereof.

22. A system for simulating entities within a simulated environment, the system comprising: a first game server; a second game server; and a game client associated with a player entity, the player entity comprising a first modifiable attribute, the first game server configured to, in response to establishing a connection with the game client, simulate the player entity, in a first server instance of a virtual space of the simulated environment, in accordance with the first modifiable attribute, the first game server authorized to modify the first modifiable attribute of the player entity; the second game server configured to,replicate an instance of the player entity, in a second instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute; wherein the first game server is further configured to: determine an updated first modifiable attribute of the player entity; and provide, to the second game server, via a connection between the first game server and the second game server, the updated first modifiable attribute; and wherein the second game server is further configured to: in response to receiving the updated first modifiable attribute, replicate the instance of the player entity, in the second instance of the virtual space of the simulated environment, in accordance with the updated first modifiable attribute.

23. The system of claim 22, wherein the game client is configured to: render the player entity, within a client instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute.

24. The system of any one of claims 22 to 23, wherein determining the updated modifiable attribute comprises: receiving, by the first game server, from the game client, a request to modify the first modifiable attribute.

25. The system of any one of claims 22 to 23, wherein determining the updated modifiable attribute comprises: receiving, by the first game server, from the second game server, a request to modify the first modifiable attribute.

26. The system of any one of claims 22 to 25, wherein the first game server is further configured to: simulate a second entity, in the first server instance of the virtual space of the simulated environment, in accordance with the second modifiable attribute; and in response to receiving, from the game client, a request to modify the first modifiable attribute: determine an interaction between the first entity and the second entity; andin response to determining the interaction, update the second modifiable attribute.

27. The system of any one of claims 22 to 26, wherein the first game server is further configured to provide, to the game client, simulation information comprising the updated second modifiable attribute.

28. The system of any one of claims 22 to 27 wherein the simulated environment comprises a persistent simulated environment.

29. A method for displaying simulated entities within a rendering of a simulated environment, the method performed by a game client, the method comprising: connecting to a first game server configured to simulate or replicate a first entity, within a first instance of a virtual space of the simulated environment, in accordance with a first modifiable attribute of the first entity; receiving simulation information from a second game server configured to: simulate or replicate a second entity within a second instance of the virtual space of the simulated environment, in accordance with a first modifiable attribute of the second entity; in response to connecting to the first game server, rendering the first entity, in accordance with the first modifiable attribute of the first entity, within a client instance of the virtual space of the simulated environment; and in response to receiving simulation information, comprising the first modifiable attribute of the second entity, from the second game server, rendering the second entity, in accordance with the simulation information, within the client instance of the virtual space of the simulated environment.

30. The method of claim 29, wherein the second game server is further configured to: replicate the first entity, within a second instance of the virtual space of the simulated environment, in accordance with the first modifiable attribute of the first entity.

31. The method of any one of claims 29 to 30, wherein the game client is connected to the second game server, and wherein receiving the simulation information from the second game server comprises receiving the simulation information via a persistent connection between the game client and the second game server.

32. The method of any one of claims 29 to 31, wherein receiving the simulation information from the second game server comprises receiving the simulation information via a persistent connection between the game client and the first game server.

33. The method of any one of claims 29 to 32, wherein the first game server is authoritative with respect to the first entity.

34. The method of any one of claims 29 to 33, further comprising providing, to the first game server, a request to modify the modifiable attribute of the first entity.

35. The method of claim 34, wherein the game client comprises a user interface, and the method further comprises providing, to the first game server, the request to modify the modifiable attribute of the first entity, in response to receiving user input via a user interface associated with the game client.

36. The method of any one of claims 29 to 35, wherein connecting to the first game server comprises providing, to a simulation controller, a request to connect a game server.

37. The method of claim 36, wherein connecting to the first game server comprises receiving, from the simulation controller, an instruction to connect to the first game server.

38. The method of any one of claims 29 to 37, further comprising: receiving, from a user of the game client, configuration information regarding one or more entities to be rendered on the game client; and providing, to the simulation controller, the configuration information.

39. The method of 38, wherein the configuration information comprises one or more of: a type of entity to be rendered;an amount of entities to be rendered; an interaction category associated with an entity to be rendered; an ability category associated with an entity to be rendered; or any combination thereof.

40. The method of any one of claim 29 to 39, further comprising rendering the first entity and rendering the second entity such that a user of the game client can see both the first entity and the second entity within the client instance of the virtual space of the simulated environment.

41. A method for replicating a simulated entity within a first instance of a virtual space of a simulated environment, the method performed by a first game server, the method comprising: replicating a first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity; receiving, from a game client, a request to modify the first modifiable attribute of the first entity; determining that the first game server is non-authoritative with respect to the first entity; forwarding, to a second game server, the request to modify the first modifiable attribute of the first entity; receiving, from the second game server, simulation information, the simulation information comprising an updated modifiable attribute; and in response to receiving the simulation information from the second game server, replicating the first entity in accordance with the updated modifiable attribute, within the first instance of the virtual space of the simulated environment.

42. The method of claim 41, wherein the second game server is authoritative with respect to the first entity.

43. The method of any one of claims 41 to 42, further comprising:providing, to the game client, simulation information comprising the updated modifiable attribute.

44. A method for simulating a first entity, the method performed by a first game server, the method comprising: simulating the first entity within a first instance of a virtual space of a simulated environment in accordance with a modifiable attribute of the first entity; establishing a connection with a game client, the game client configured to render a player entity, the first game server being non-authoritative with respect to the player entity; in response to establishing a connection with the game client: receiving, from a second game server, a modifiable attribute of the player entity, the second game server configured to simulate the player entity within a second instance of the virtual space of the simulated environment, and the second game server being authoritative with respect to the player entity; and replicating the player entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the player entity; and in response to determining an interaction between the player entity and the first entity: determining an updated modifiable attribute of the first entity; and providing the updated modifiable attribute of the first entity to the game client.

45. The method of claim 44, wherein the first game server is connected to the game client via a persistent connection between the first game server and the game client, and wherein providing the updated modifiable attribute of the first entity to the game client comprises providing the updated modifiable attribute of the first entity to the game client via the persistent connection.

46. The method of any one of claims 44 to 45,wherein the first game server is connected to the second game server via a second persistent connection between the first game server and the second game server, and wherein receiving, from a second game server, a modifiable attribute of the player entity comprises receiving, from a second game server, a modifiable attribute of the player entity via the persistent connection.

47. The method of claim 1, further comprising, in response to receiving, from a second game server, an updated modifiable attribute of the player entity, replicating the player entity in accordance with the updated modifiable attribute of the player entity.

48. A method for replicating a simulated entity within a first instance of a virtual space of a simulated environment, the method performed by a game server, the method comprising: replicating a first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity; receiving simulation information from a game client, wherein the simulation information comprises an updated modifiable attribute of the first entity and wherein the updated modifiable attribute is determined by a second game server which is configured to simulate the first entity within a second instance of the virtual space of the simulated environment; and in response to determining that the game client is a trusted client with respect to the simulation information, replicating the first entity in accordance with the updated modifiable attribute, within the first instance of the virtual space of the simulated environment.

49. The method of claim 1, further comprising: simulating a second entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the second entity; determining an interaction between the first entity and the second entity; and in response to determining the interaction: updating the modifiable attribute of the second entity; andsimulating a second entity within the first instance of the virtual space of the simulated environment in accordance with the updated modifiable attribute of the second entity.

50. The method of any one of claims 48 to 49, wherein the game client receives the simulation information from a game server that is authoritative with respect to the first entity.

51. The method of any one of claims 48 to 50, wherein the game client is configured to render the first entity within a client instance of the virtual space of the simulated environment.

52. The method of any one of claims 48 to 51, wherein determining that the game client is the trusted client with respect to the simulation information comprises: determining that the game client is the trusted client with respect to the first entity.

53. The method of any one of claims 48 to 52, wherein, in response to establishing a persistent connection with the game server that is authoritative with respect to the first entity, determining that the game client is not the trusted client with respect to the first entity.

54. The method of any one of claims 48 to 52, wherein, in response to receiving simulation information from the game server that is authoritative with respect to the first entity, determining that the game client is not the trusted client with respect to the first entity.

55. The method of any one of claims 48 to 54, wherein determining that the game client is the trusted client with respect to the simulation information comprises: receiving, from a simulation controller, instructions indicating that the game client is a trusted client with respect to the simulation information.

56. The method of claim 55, wherein the instructions comprise a trust scope, and wherein determining that the game client is a trusted client with respect to the simulation information comprises determining that the simulation information falls within the trust scope.

57. The method of any one of claim 48 to 56, wherein the first entity comprises a player entity controlled by a user of the game client.

58. The method of any one of claims 48 to 57, further comprising: in response to determining that the game client is not the trusted client with respect to the first entity, replicating the first entity in accordance with the modifiable attribute, within the first instance of the virtual space of the simulated environment.

59. A method for simulating a first entity, the method performed by a game server, the method comprising: simulating the first entity within the first instance of the virtual space of the simulated environment in accordance with a first modifiable attribute of the first entity; receiving simulation information from a game client, wherein the simulation information comprises an updated modifiable attribute of the first entity; and in response to determining that the game client is a trusted client with respect to the simulation information, simulating the first entity in accordance with the updated modifiable attribute, within the first instance of the virtual space of the simulated environment.

60. The method of claim 59, further comprising: in response to determining that the game client is a trusted client with respect to the simulation information, transmitting the updated modifiable attribute, to a second game client, wherein the second game client is configured to, in response to receiving the updated modifiable attribute from the game server, render the first entity in accordance with the updated modifiable attribute.

61. A method for rendering a first entity within a first instance of a virtual space of a simulated environment, the method performed by a game client, the method comprising: in response to receiving a first simulation information from a first game server, wherein the simulation information comprises a modifiable attribute of the first entity,rendering the first entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the first entity; in response to receiving simulation information from a second game server, wherein the simulation information comprises a modifiable attribute of a second entity, rendering the second entity within the first instance of the virtual space of the simulated environment in accordance with the modifiable attribute of the second entity; receiving, from a simulation controller, instructions indicating that the game client is a trusted client with respect to simulation information from the first game server; in response to receiving a second simulation information from the first game server, wherein the second simulation information comprises an updated modifiable attribute of the first entity, providing the second simulation information to the second game server.

62. A system comprising: one or more processors; and memory comprising computer executable instructions, which when executed by the one or more processors, cause the system to perform the method of any one of claims 1 to 21 or claims 29 to 61.

63. A machine-readable storage medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform the method of any one of claims 1 to 21 or claims 29 to 61.

Citation Information

Patent Citations

  • Networked simulation method and apparatus

    US10639547B2

  • Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications

    US20030177187A1

  • Synchronization server process

    US20130006929A1

  • Multi-master architectures for distributed databases

    US20220335034A1

  • System and method for secure real-time cloud services

    US9100424B1