Method and device for cloud local multiplayer architecture
The cloud multiplayer architecture optimizes resource use by sharing memory and computation across players using a global and local capsule system, addressing inefficiencies and latency in cloud gaming platforms for multiplayer games.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
- Filing Date
- 2025-01-14
- Publication Date
- 2026-07-23
AI Technical Summary
Cloud gaming platforms face inefficiencies and high latency in hosting multiplayer games due to the need for multiple rendering servers for each client, leading to memory duplication, computation redundancy, and redundant data transmission, which is not cost-effective for games requiring high hardware resources and large player groups.
A cloud multiplayer architecture that utilizes a single game instance for multiple players, employing a global and local capsule system to isolate and share memory and computation resources, and an in-engine player isolation mechanism to manage player entities and events, reducing duplication and optimizing resource use.
This approach eliminates memory, computation, and data transmission duplication, enhancing cloud resource efficiency and enabling seamless multiplayer gaming experiences with reduced latency.
Smart Images

Figure CN2025072298_23072026_PF_FP_ABST
Abstract
Description
METHOD AND DEVICE FOR CLOUD LOCAL MULTIPLAYER ARCHITECTURECROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is the first application in the first application for this disclosure.TECHNICAL FIELD
[0002] The present disclosure relates to cloud gaming. Specifically, the present disclosure relates to methods and devices for providing multiplayer gameplay through a cloud gaming architecture.BACKGROUND
[0003] Cloud gaming platforms provide dedicated hardware to run a game remotely on a cloud machine and stream audio and video to a player’s device via client software, like a browser. As a result, end users can benefit from playing video games on a wide range of computing devices, such as smartphones, tablets, or televisions instead of purchasing expensive computer hardware.
[0004] In general, games are classified into three categories: single-player game, local multiplayer game, and network multiplayer game. Local multiplayer games are not suitable for cloud gaming because they are played together on the end client device, such as a game console. Single-player games are known to be suitable for cloud gaming because they usually need high-end hardware to render high fidelity results and are not latency sensitive. However, while network multiplayer games have larger player bases than single-player games, they are not as popular as single-player games on cloud gaming platforms because they suffer from important drawbacks when played over the cloud.
[0005] In particular, multiplayer games are latency sensitive. Player to player interactions require a very low latency for a good gameplay experience. Cloud gaming itself already brings some latency due to video encoding and streaming. Player to player interaction through the network further increases the latency and could result in a poor gameplay experience.
[0006] Multiplayer games also have large player bases. Before cloud gaming, multiple players could play together on the same hardware. We classify this as local multiplayer games. Here, per-player hardware requirements are low and a single device may have sufficient hardware resources to accommodate up to 8 players. Also, it is more fun to play with friends. Thus, multiplayer games became more popular than single-player games. Some of these games, such as League of LegendsTM and Counter-Strike: Global OffensiveTM, developed massive player bases. However, local multiplayer games require all players to be in the same room, connected to the same device, such as a game console. This location restriction was later removed by network multiplayer games where players could be anywhere in the world, as long as they are connected over a network, such as the Internet. This flexibility gave a rise to cloud-based network multiplayer gaming where all players simply connected to cloud. However, current cloud gaming solutions require one rendering server for each client, leading to inefficiencies.
[0007] Many multiplayer games have low hardware requirement compared to that of single-player games and are played by a group of 8 players or less. For these games it is not even worth the effort to bring the game to the cloud. However, modern games increasingly have high hardware requirements and are played by groups larger than 8 members. Bringing these games to the cloud allows large crowds to play this game together. This, in turn, leads to large cloud resource inefficiencies due to the one-player-one-device architecture.
[0008] Accordingly, the present disclosure seeks to provide an architecture for effectively providing multiplayer games on the cloud by solving the latency and efficiency issues described above.SUMMARY
[0009] It is an object of the present disclosure to provide an improved method for hosting multiplayer games on a cloud.
[0010] According to a first aspect, there is provided a method at a computing device, comprising storing, in a global capsule, global entities of a gaming session, storing, in a plurality of local capsules, each of the plurality of local capsules being associated to a respective player of a plurality of players, local entities of the gaming session, wherein the local entities stored in a given local capsule relate to a given player associated to the given local capsule, for each player of the plurality of players, collecting the global entities from the global capsule and the local entities stored in a local capsule associated to the player, generating a video stream based on the collected entities, generating an audio stream based on the collected entities, and transmitting the video stream and the audio stream to a client device associated to the player.
[0011] According to an embodiment of the first aspect, the method further comprises receiving input data from client devices associated to each player.
[0012] According to another embodiment of the first aspect, generating the video stream comprises selecting a camera entity from the local capsule, the camera entity comprising a position and an orientation, wherein the video stream is generated based on a point-of-view of the camera.
[0013] According to yet another embodiment of the first aspect, the method further comprises for each player of the plurality of players, collecting shared entities for the player.
[0014] According to yet another embodiment of the first aspect, the method further comprises storing, in the global capsule, global events, storing, in the plurality of local capsules, local events, determining that an event has occurred, declaring a scope for the event, the scope for the event being one of global, or local, wherein local scopes are related to an associated player.
[0015] According to yet another embodiment of the first aspect, the method further comprises triggering sub-events of the event, when the scope of the event is local, declaring scopes for the sub-events, the scopes being one of global or local, wherein local scopes are related to the associated player.
[0016] According to yet another embodiment of the first aspect, generating the video stream comprises reusing renderings of global entities for each player.
[0017] According to yet another embodiment of the first aspect, generating the audio stream comprises reusing audio segments for global entities for each player.
[0018] According to yet another embodiment of the first aspect, the global entities comprise at least one of a particle effect, a light source, and an environmental element.
[0019] According to yet another embodiment of the first aspect, the local entities comprise at least one of a health bar or a piece of equipment.
[0020] According to a second aspect, there is provided a computing device comprising a processor and a communications subsystem, wherein the computing device is configured to storing, in a global capsule, global entities of a gaming session, storing, in a plurality of local capsules, each of the plurality of local capsules being associated to a respective player of a plurality of players, local entities of the gaming session, wherein the local entities stored in a given local capsule relate to a given player associated to the given local capsule, for each player of the plurality of players, collecting the global entities from the global capsule and the local entities stored in a local capsule associated to the player, generating a video stream based on the collected entities, generating an audio stream based on the collected entities, and transmitting the video stream and the audio stream to a client device associated to the player.
[0021] According to an embodiment of the second aspect, the computing device is further configured to receive input data from client devices associated to each player.
[0022] According to another embodiment of the second aspect, generating the video stream comprises selecting a camera entity from the local capsule, the camera entity comprising a position and an orientation, wherein the video stream is generated based on a point-of-view of the camera.
[0023] According to yet another embodiment of the second aspect, the computing device is further configured to, for each player of the plurality of players, collect shared entities for the player.
[0024] According to yet another embodiment of the second aspect, the computing device is further configured to store, in the global capsule, global events, store, in the plurality of local capsules, local events, determine that an event has occurred, declare a scope for the event, the scope for the event being one of global, or local, wherein local scopes are related to an associated player.
[0025] According to yet another embodiment of the second aspect, the computing device is further configured to trigger sub-events of the event, when the scope of the event is local, declaring scopes for the sub-events, the scopes being one of global or local, wherein local scopes are related to the associated player.
[0026] According to yet another embodiment of the second aspect, generating the video stream comprises reusing renderings of global entities for each player.
[0027] According to yet another embodiment of the second aspect, generating the audio stream comprises reusing audio segments for global entities for each player.
[0028] According to yet another embodiment of the second aspect, the global entities comprise at least one of a particle effect, a light source, and an environmental element.
[0029] According to yet another embodiment of the second aspect, the local entities comprise at least one of a health bar or a piece of equipment.
[0030] According to a third aspect, there is provided a computer readable medium having stored thereon executable code for execution by a processor of a computing device, the executable code comprising instructions for performing the method of any embodiment of the first aspect.BRIEF DESCRIPTION OF THE DRAWINGS
[0031] FIG. 1 illustrates a cloud gaming configuration according to the prior art.
[0032] FIG. 2 illustrates a cloud gaming configuration according to at least some embodiments of the present disclosure.
[0033] FIG. 3 illustrates a game engine instance architecture according to at least some embodiments of the present disclosure.
[0034] FIG. 4A illustrates entity tracking across a global capsule storage according to at least some embodiments of the present disclosure.
[0035] FIG. 4B illustrates entity tracking across a local capsule storage according to at least some embodiments of the present disclosure.
[0036] FIG. 5A is a flow diagram illustrating a method for encoding a video stream according to at least one embodiment of the present disclosure.
[0037] FIG. 5B is a flow diagram illustrating a method for encoding an audio stream according to at least one embodiment of the present disclosure.
[0038] FIG. 6 illustrates capsule event storage according to at least some embodiments of the present disclosure.
[0039] FIG. 7A illustrates event handling according to at least some embodiments of the present disclosure.
[0040] FIG. 7B illustrates event handling according to at least some embodiments of the present disclosure.
[0041] FIG. 8 is a flow diagram illustrating a method for event handling according to at least one embodiment of the present disclosure.
[0042] FIG. 9 is a block diagram of a computing device according to at least one embodiment of the present disclosure.DETAILED DESCRIPTION
[0043] The present disclosure provides an improved method for hosting multiplayer games on a cloud.
[0044] Throughout the present disclosure, the following terminology will be followed.
[0045] Cloud: A system where computing resources, like servers and storage, are provided over the internet rather than locally.
[0046] Cloud Gaming: Playing video games streamed from a remote server in the cloud, rather than running the game on a local device.
[0047] Cloud Resources: Any resource that is provided by the cloud, such as computing power, storage, and other services provided over the internet, which can be used for various applications including gaming.
[0048] Component: A part of a game or software that performs a specific function, for example, a software module responsible for handling player movements.
[0049] Entity: An object or character in a game, like a player or a Non-Player Character (NPC) , that has its own properties and behaviors.
[0050] Entity–component–system (ECS) : A software architectural pattern mostly used in video game development to represent game world objects. An ECS contains entities that have data components and systems to operate on those components.
[0051] Frame: A single image in a sequence of images that make up a video or an animation.
[0052] Game Engine: Software that provides the tools and framework for creating and running video games, handling things like graphics, physics, and input.
[0053] Game Instance: A single process that runs on the rendering server to receive the input of remote player. It also streams the video and audio output to the remote player. A game instance is usually designed by the game developer by using a game engine.
[0054] Game Server: A computer system that hosts and manages a multiplayer game, allowing players to connect and play together online.
[0055] I / O: Stands for input / output, referring to the ways a computer receives data (input) and sends data (output) , such as keyboard presses and screen displays.
[0056] Local Multiplayer Game: A video game in which more than one person can play in the same game environment at the same time, locally on the same computing system (also called couch co-op) .
[0057] Multiplayer Game: A video game that allows multiple players to participate and interact with each other in the same game environment.
[0058] Networked Multiplayer Game: A video game in which more than one person can play in the same game environment at the same time, either on different computing systems via a local area network, or via a wide area network, most commonly the Internet, like for example World of WarcraftTM, or Call of DutyTM.
[0059] Rendering Server: A computer located in the cloud that runs the game. It can also be a Virtual Machine (VM) or a container that uses a portion of the computer resources to handle the game engine for an individual player.
[0060] Rendering: The process of generating the visual output of a game, like drawing graphics and textures on the screen.
[0061] Single-player Game: A video game where input from only one player is expected throughout the course of the game session.
[0062] Stream: A method of delivering data continuously over the internet, like watching a video or playing a game without having to download the entire file first.
[0063] Reference is made to FIG. 1, in which a prior art cloud gaming configuration 101 is illustrated.
[0064] As seen in FIG. 1, a plurality of client devices 104, all participating in the same game session, are each connected to a respective game instance, on respective rendering servers 103. Each rendering server is further connected to game server 102. Each game instance streams the rendered output audio and video stream to its respective client device 104, and receives inputs from its respective client device 104.
[0065] In the prior art configuration described above, multiple game instances run the same game session, which is the same game world with identical mesh, lights, animations, etc. These game instances are initially designed by the game developers using a game engine, and are duplicates of each other, except for the player specific states they hold. These player specific states include, without limitation, player views (rendered video output) , player positions, and player abilities. This duplication leads to several disadvantages, described below.
[0066] Memory duplication: The same entities for a game session have to be copied to different game instances. This consumes memory that could otherwise be shared.
[0067] Computation duplication: Each game instance performs its own rendering computations, simulation computations, and animation computations, etc. Some computations can be shared across game instances since all these computations happen in the same game session.
[0068] Redundant data transmission: For network multiplayer games, certain entities need to synchronize with the game server. Since those entities are duplicated inside each game instance, the data these entities transmit to the game server is also duplicated.
[0069] The present disclosure seeks to provide an improved multiplayer cloud gaming platform in which all three types of duplications –memory, computation, and data transmission –are eliminated, thereby making network multiplayer games efficiently use the cloud resources.
[0070] According to at least some embodiments, this is achieved by providing one game instance for multiple players. Such a design would eliminate duplication of resources because cross-player resource multiplexing could be performed from the same game instance.
[0071] A cloud multiplayer configuration 201 according to at least some embodiments of the present disclosure is illustrated in FIG. 2. As seen in FIG. 2, each client device 204 is connected to the same game instance on rendering server 203, which itself is connected to the game server 202.
[0072] Because each client device is connected to the same game instance, duplicate memory use, duplicate computations, and duplicate data transmissions may be eliminated.
[0073] The present disclosure further seeks to facilitate multiplayer game development for game developers. Specifically, game developers should not be required to modify the game code substantially to accommodate a game instance with multiple players. The developers’ workflow when developing games for game instances according to the present disclosure should be similar to using a prior art game engine.
[0074] According to at least some embodiments of the present disclosure, this is achieved by providing an in-engine player isolation mechanism which automatically separates players’ entities and shares memory and computation across players, as is described in detail below.
[0075] This player isolation mechanism may be provided as a dynamic library or as a plugin for game engines that are based on an ECS architecture. With this feature, game developers will not need to write any game code to accommodate multiple players inside a game instance as this will be handled by the provided isolation mechanism.
[0076] Reference is made to FIG. 3, which shows a game engine instance architecture according to at least some embodiments of the present disclosure.
[0077] As seen in FIG. 3, game engine instance 300 comprises audio module 311, input module 312, encoding module 313, rendering module 314, game logic module 315, and streaming module 316. Game engine instance 300 further comprises capsule 321, which comprises entities storage 322, and events storage 323.
[0078] Capsule 321 stores various objects and states during a gaming session, as well as the scope of each of these objects. The scope of an object may be global or local, where global objects are applicable to all players in a gaming session, and local objects are only applicable to a single player in a gaming session. Capsule 321 automatically isolates player-specific tasks at runtime by dynamically directing player entities (or entity references) and player gameplay events to the respective player capsule storage.
[0079] Some non-limiting examples of global objects may include a light source, a particle effect, and environmental elements such as trees, buildings, roads, rivers, and the like.
[0080] Some non-limiting examples of local objects may include a health bar, a piece of equipment, such as a weapon and ammunition, specific player abilities, and the like.
[0081] Some entities may also be considered network entities. For example, a player’s own character should be visible to other players within the gaming session.
[0082] During gameplay, player input from client devices 301 and 302 are received at streaming module 316 and forwarded to input module 312. The input module 312 then processes the received input through game logic module 315, records any required changes to entities in entities storage 322 of capsule 321, and determines whether an event from event storage 323 of capsule 321 has taken place.
[0083] For each player within the current gaming session, audio module 311 and rendering module 314 determine which entities and which events to consider from capsule 321. As discussed above, for a given player, all global objects are considered, as well as local objects for the given player, and networked objects which have been shared with the given player.
[0084] For example, assuming a first-person shooter type game, audio module 311 may consider the audio from a global event (e.g., a large explosion) , local events (e.g., the player consuming a health pack) , and networked events (e.g., the sound from bullets fired by other players) . Similarly, rendering module 314 may consider these same events, to be rendered from the perspective of the given player, and including local attributes for the player to be rendered in a head-up display (HUD) , such as current ammo, current weapon, and health level, amongst others.
[0085] Rendering module 314 and audio module 311 may then provide their output to encoding module 313, for producing an audio-video stream, which is then provided to streaming module 316. Streaming module 316 may then stream the audio-video stream for client device 301 to client device 301 and the audio-video stream for client device 302 to client device 302. As will be appreciated, although only two client devices are shown in this example, this is not intended to be limiting and any number of client devices and players may be accommodated.
[0086] Based on the above, there is only one global capsule storage in the entire cloud game instance. All players share the entities and events inside the global capsule storage.
[0087] Further, each player will own a local capsule storage. Entities inside the local capsule are only visible to the associated player, with the exception of shared objects. For example, the player avatar may be shared with other players so that the player, and its actions, be visible to other players. For example, when a player jumps, that jump should be visible to other players on the game instance. According to at least some embodiments, local capsule events may contain all events inside their scope.
[0088] Capsule 321 automatically isolates player-specific tasks at runtime by dynamically directing player entities (or entity references) and player gameplay events to the respective player’s local capsule storage.
[0089] Entities within the game can have either local or global properties. Local entities are duplicated for each capsule, while global entities are shared across all capsules. By default, entities are local unless specified otherwise.
[0090] It has been found that a 2x increase in player count leads only to a 1.6x increase in resources, when designating certain entities as global and sharing them across all capsules. For example, sharing light sources across multiple players reduces the need to compute shadow maps, as the number of shadow maps is proportional to the number of light sources. Similarly, sharing avatars across player capsules allows for animation computations, such as skinning deformation, to be performed only once for a game instance. Memory usage may also be reduced by sharing an avatar mesh across capsules. Other types of computations, such as for example volumetric computations for fog, fire, or smoke, may also be shared.
[0091] The global capsule storage and each local capsule storage may keep entity references for corresponding entities inside global or local capsule storage. This entity tracking mechanism ensures that the hierarchical consistency of the original design is maintained.
[0092] Reference is made to FIGS. 4A and 4B, which illustrate an entity tracking mechanism using capsule storage according to at least some embodiments of the present disclosure.
[0093] Specifically, as seen in FIG. 4A, a global capsule storage is illustrated. The global capsule storage comprises a global entity reference 401 at its root. Going down one level from the root, there is a global avatar entity 402, global particle effect entity 403, and global light entity 404. As will be appreciated, FIG. 4A is not intended to be limiting and is provided as an example.
[0094] Global avatar 402 may be, for example, the avatar of an enemy which fights against all players. Global particle effect 403 may be, for example, a fog effect. Global light 404 may be, for example, the sun. Other global entities may depend from global entities 402, 403, and 404.
[0095] In general, a global entity is an entity that is relevant to all players, and which affects the audio and video stream of all players.
[0096] FIG. 4B illustrates a local capsule storage according to at least some embodiments of the present disclosure. Each player within a gaming session may have their own local capsule storage.
[0097] As seen in FIG. 4B, the local capsule storage comprises at least one local entity 411. Beneath the local entity 411, local entity references may be stored. Importantly, local entity references are not a copy of a global entity, but instead may be a pointer to the global entity.
[0098] Specifically, in FIG. 4B, global entities from FIG. 4A are shared as local entity references, thereby providing the local capsule storage all the information needed to render the game for its player, without duplicating entities and the computations for these entities. Thus, local entity reference 412 may correspond to global avatar entity 402, local entity reference 413 may correspond to global particle effect 403, and local entity reference 414 may correspond to global light entity 404.
[0099] RENDERING ISOLATION
[0100] According to at least some embodiments of the present disclosure, each local capsule contains its own camera entity and audio player entity. The engine renders a view for the camera after culling all entities outside the corresponding capsule. Audio entities are isolated similarly, in that audio signals are produced by the audio entities in the corresponding player capsule.
[0101] A method for encoding a video stream for a given player is illustrated with respect to FIG. 5A. This method is performed for a given player, having a local capsule storage which is unique to the given player.
[0102] The method starts at block 500 and proceeds to block 501 where the camera from the given player’s local capsule is selected. The camera will have a position and an orientation within the gaming environment.
[0103] The method then proceeds to block 502 where all local entity references for global objects are collected. These references allow for global objects, shared across all players, to be included in the video stream.
[0104] The method then proceeds to block 503 where all local entities are collected. These are the local entities which are only in the given player’s local capsule and will not be included in the other players’ video streams.
[0105] The method then proceeds to block 504 where all network entities are collected. Network entities are the entities whose state is synchronized across all players via the game server. An event that binds to a network entity may be local to a player but when that network entity is updated by the local event, the state of the network entity is shared with other players For example, a network entity may be a wall clock, updated by a local event like a “Clock Update” event. The updated state of the wall clock is then shared with other players.
[0106] Once all relevant entities for a given player are collected, effectively culling from the set of all entities the ones irrelevant to the given player, a video frame may be rendered at block 505, and encoded for transmission to the player’s client device. The method then ends at block 506.
[0107] As will be appreciated, when an animation for a global entity or a network entity is computed once, it need not be re-computed, and instead, the computation result may be re-used for encoding the video stream for other players.
[0108] A method for encoding an audio stream for a given player is illustrated with respect to FIG. 5B. This method is performed for a given player, having a local capsule storage which is unique to the given player.
[0109] The method starts at block 510 and proceeds to block 511 where the audio player from the given player’s local capsule is selected.
[0110] The method then proceeds to block 512 where all local entity references for global objects are collected. These references allow for global objects, shared across all players, to be included in the audio stream.
[0111] The method then proceeds to block 513 where all local entities are collected. These are the local entities which are only in the given player’s local capsule and will not be included in the other players’a udio streams.
[0112] The method then proceeds to block 514 where all network entities are collected. Network entities are entities which may be local to another player but which are shared with other players (such as for example, a player’s avatar) .
[0113] Once all relevant entities for a given player are collected, effectively culling from the set of all entities the ones irrelevant to the given player, an audio signal may be generated at block 515, and encoded for transmission to the player’s client device. The method then ends at block 516.
[0114] As in the case of the video stream, generating the audio stream comprises reusing audio segments generated for global entities for each player.
[0115] GAMEPLAY LOGIC ISOLATION
[0116] According to at least some embodiments of the present disclosure, each capsule operates within its own event scope and global scope. Specifically, the present disclosure leverages event scopes to isolate player gameplay experience. Accordingly, the present disclosure provides for an event storage for each local capsule (hence, per player) and one global capsule event (for all players) within the game instance.
[0117] Gameplay events are designed by game developers, and player-specific events may therefore be bound to a player-related entity. At event registration time, player-specific events are added to local capsules for each player. Events that are not player-specific, which are also called system events, are added to the global capsule storage.
[0118] During runtime, when a local event is triggered (e.g., by a user input, or by a game entity) , an event scope is declared. All subevents for that event scope are rooted off either the same local capsule event storage or the global capsule event storage.
[0119] Reference is made to FIG. 6 which shows event capsule storage according to at least some embodiments of the present disclosure.
[0120] As seen in FIG. 6, a local capsule event storage may comprise a number of events, which are registered to the local capsule event storage by script entities for the local capsule. Although only one local capsule is illustrated in FIG. 6, one local capsule event storage is provided for each player.
[0121] As also seen in FIG. 6, a global capsule event storage may comprise a number of events, which are registered to the global capsule event storage by script entities for the global capsule.
[0122] Reference is now made to FIG. 7A, in which event handling according to at least some embodiments of the present disclosure, is illustrated.
[0123] As seen in FIG. 7A, input module 701 indicates a key press by a player, which corresponds to forward movement of the player’s avatar. This creates an event scope 702 for the player, and triggers the event “On Key Press” for the player. The “On Key Press” event then triggers the subevent “Move Forward” , and the “Move Forward” subevent triggers the “Play Sound” subevent. In some embodiments, although the “Play Sound” subevent is a local event, it will trigger a Sound Player network entity (not shown) . Once triggered, the Sound Player network entity is handled in the game server. Then the game server propagates the sound to all other players. Thus, when one player moves forward, the sound of the player moving may be heard by other players via a local event triggering a network entity.
[0124] FIG. 7B illustrates a global event which then triggers local events for the different players. Specifically, as seen in FIG. 7B, a global event “Explode” 710 is triggered during game play. This event triggers the subevent “Play Sound” 711, which is also a global event, such that its sound will be heard by all players. The “Explode” event 710 further triggers the “Damage Player” subevent 712, which is also a global event. The “Damage Player” subevent 712 triggers the “On Damage” subevent for each player (or alternatively, for each player in close vicinity to the location of the “Explode” event 710) .
[0125] The “On Damage” subevent is a local event, and an event scope is created for each player, as illustrated by event scopes 713a and 713b. The “On Damage” subevents 714a and 714b each trigger the local subevents “HP Drop” 715a and 715b, respectively, as well as the local subevents “HP UI Bar Change” 716a and 716b, respectively.
[0126] Accordingly, a global event may trigger local events, which are then handled separately for each player, within each player’s respective event scope.
[0127] Reference is now made to FIG. 8, which illustrates an event handling method according to at least some embodiments of the present disclosure.
[0128] The method starts at block 800 and proceeds to block 801 where global events are registered. Generally, this occurs when the game is being initialized by the game engine, prior to game play. Registered global events are stored in the global capsule event storage, as illustrated at FIG. 6.
[0129] The method then proceeds to block 802, where local events are registered. This also occurs when the game is being initialized, prior to game play. Registered local events are stored in the local capsule event storage of every player, as illustrated in FIG. 6.
[0130] The method then proceeds to block 803, where an event trigger is detected. An event may be triggered, without limitation, by a user input, or by an entity in the game.
[0131] Upon the event being triggered, the method proceeds to block 804 where a scope for the event is declared. Specifically, if the triggered event is a local event, the event scope will be of local scope and relate to only one player. Alternatively, if the triggered event is a global event, the event scope will be global.
[0132] The scope of the event determines which subevents may be triggered by the event. For example, a local event may only trigger subevents which are within the same local scope (i.e., relate to the same player) . Local events cannot trigger global events. Global events may trigger other global events, or multiple local events for multiple players. However, a local event may not trigger local subevents for other players.
[0133] The method then proceeds to block 805, where subevents are triggered. As discussed above, the scope of the subevents is restricted based on the scope of the event that triggered the subevent. When a subevent is triggered, the method may return to block 804 to declare a scope for the subevent, and blocks 804 and 805 may be repeated until all subevents are triggered.
[0134] The method then ends at block 806.
[0135] The above functionality may be implemented on any one or combination of computing devices. FIG. 9 is a block diagram of a computing device 900 that may be used for implementing the devices and methods disclosed herein. Specific devices may utilize all of the components shown, or only a subset of the components, and levels of integration may vary from device to device. Furthermore, a device may contain multiple instances of a component, such as multiple processing units, processors, memories, transmitters, receivers, etc. The computing device 900 may comprise a processor 910, memory 920, a mass storage device 940, and peripherals 930. Peripherals 930 may comprise, amongst others one or more input / output devices, such as a speaker, microphone, mouse, touchscreen, keypad, keyboard, printer, display, network interfaces, and the like. Communications between processor 910, memory 920, mass storage device 940, and peripherals 930 may occur through one or more buses 950.
[0136] The bus 950 may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, video bus, or the like. The processor 910 may comprise any type of electronic data processor. The memory 920 may comprise any type of system memory such as static random-access memory (SRAM) , dynamic random-access memory (DRAM) , synchronous DRAM (SDRAM) , read-only memory (ROM) , a combination thereof, or the like. In an embodiment, the memory 920 may include ROM for use at boot-up, and DRAM for program and data storage for use while executing programs.
[0137] The mass storage device 940 may comprise any type of storage device configured to store data, programs (e.g., instructions or code) , and other information and to make the data, programs, and other information accessible via the bus. The mass storage device 940 may comprise, for example, one or more of a solid-state drive, hard disk drive, a magnetic disk drive, an optical disk drive, or the like. The memory 920 or mass storage 940 may store instructions, which when executed by a processor or processing unit, cause or configure the computing device 900 to perform any of the methods described herein.
[0138] Computing device 900 may further comprise a communications subsystem 960 for communicating with other computing devices or for connecting computing device 900 to a computer network. Communications subsystem 960 may comprise one or more network interfaces (not shown) , which may comprise wired links, such as an Ethernet cable or the like, and / or wireless links to access nodes or different networks. The network interface allows the processing unit to communicate with remote units via the networks. For example, the network interface may provide wireless communication via one or more transmitters / transmit antennas 970 and one or more receivers / receive antennas 970. In an embodiment, the processing unit is coupled to a local-area network or a wide-area network, for data processing and communications with remote devices, such as other processing units, the Internet, remote storage facilities, or the like.
[0139] Computing device may further comprise a power source 980.
[0140] The present disclosure may be implemented on a computing device such as exemplary computing device 900. Computing device 900 may be a network element of a telecommunications network, such that the network element may be connected to other network elements of the telecommunication network, where all network elements form the telecommunication network. The network element may also receive communications from client devices connected to the telecommunication network and provide services to such client devices.
[0141] Through the descriptions of the preceding embodiments, the teachings of the present disclosure may be implemented by using hardware only or by using a combination of software and hardware. Software or other computer executable instructions for implementing one or more embodiments, or one or more portions thereof, may be stored on any suitable computer readable storage medium. The computer readable storage medium may be a tangible or in transitory / non-transitory medium such as optical (e.g., CD, DVD, Blu-Ray, etc. ) , magnetic, hard disk, volatile or non-volatile, solid state, or any other type of storage medium known in the art.
[0142] Additional features and advantages of the present disclosure will be appreciated by those skilled in the art.
[0143] The structure, features, accessories, and alternatives of specific embodiments described herein and shown in the Figures are intended to apply generally to all of the teachings of the present disclosure, including to all of the embodiments described and illustrated herein, insofar as they are compatible. In other words, the structure, features, accessories, and alternatives of a specific embodiment are not intended to be limited to only that specific embodiment unless so indicated.
[0144] Moreover, the previous detailed description is provided to enable any person skilled in the art to make or use one or more embodiments according to the present disclosure. Various modifications to those embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the teachings provided herein. Thus, the present methods, systems, and or devices are not intended to be limited to the embodiments disclosed herein. The scope of the claims should not be limited by these embodiments, but should be given the broadest interpretation consistent with the description as a whole. Reference to an element in the singular, such as by use of the article "a" or "an" is not intended to mean "one and only one" unless specifically so stated, but rather "one or more" . All structural and functional equivalents to the elements of the various embodiments described throughout the disclosure that are known or later come to be known to those of ordinary skill in the art are intended to be encompassed by the elements of the claims.
[0145] Furthermore, nothing herein is intended as an admission of prior art or of common general knowledge. Furthermore, citation or identification of any document in this application is not an admission that such document is available as prior art, or that any reference forms a part of the common general knowledge in the art. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims.
[0146] In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above.It is intended that the appended claims cover such modifications and variations.
Claims
1.A method at a computing device, comprising:storing, in a global capsule, global entities of a gaming session;storing, in a plurality of local capsules, each of the plurality of local capsules being associated to a respective player of a plurality of players, local entities of the gaming session, wherein the local entities stored in a given local capsule relate to a given player associated to the given local capsule; andfor each player of the plurality of players:collecting the global entities from the global capsule and the local entities stored in a local capsule associated to the player;generating a video stream based on the collected entities;generating an audio stream based on the collected entities; andtransmitting the video stream and the audio stream to a client device associated to the player.2.The method of claim 1, further comprising:receiving input data from client devices associated to each player.3.The method of claim 1 or claim 2, wherein generating the video stream comprises:selecting a camera entity from the local capsule, the camera entity comprising a position and an orientation;wherein the video stream is generated based on a point-of-view of the camera.4.The method of any one of claims 1 to 3, further comprising, for each player of the plurality of players, collecting shared entities for the player.5.The method of any one of claims 1 to 4, further comprising:storing, in the global capsule, global events;storing, in the plurality of local capsules, local events;determining that an event has occurred; anddeclaring a scope for the event, the scope for the event being one of global, or local, wherein local scopes are related to an associated player.6.The method of claim 5, further comprising:triggering sub-events of the event; andwhen the scope of the event is local, declaring scopes for the sub-events, the scopes being one of global or local, wherein local scopes are related to the associated player.7.The method of any one of claims 1 to 6, wherein generating the video stream comprises reusing renderings of global entities for each player.8.The method of any one of claims 1 to 7, wherein generating the audio stream comprises reusing audio segments for global entities for each player.9.The method of any one of claims 1 to 8, wherein the global entities comprise at least one of a particle effect, a light source, and an environmental element.10.The method of any one of claims 1 to 9, wherein the local entities comprise at least one of a health bar or a piece of equipment.11.A computing device comprising:a processor; anda communications subsystem;wherein the computing device is configured to:store, in a global capsule, global entities of a gaming session;store, in a plurality of local capsules, each of the plurality of local capsules being associated to a respective player of a plurality of players, local entities of the gaming session, wherein the local entities stored in a given local capsule relate to a given player associated to the given local capsule; andfor each player of the plurality of players:collect the global entities from the global capsule and the local entities stored in a local capsule associated to the player;generate a video stream based on the collected entities;generate an audio stream based on the collected entities; andtransmit the video stream and the audio stream to a client device associated to the player.12.The computing device of claim 11, further configured to:receive input data from client devices associated to each player.13.The computing device of claim 11 or claim 12, wherein generating the video stream comprises:selecting a camera entity from the local capsule, the camera entity comprising a position and an orientation;wherein the video stream is generated based on a point-of-view of the camera.14.The computing device of any one of claims 11 to 13, further configured to, for each player of the plurality of players, collect shared entities for the player.15.The computing device of any one of claims 11 to 14, further configured to:store, in the global capsule, global events;store, in the plurality of local capsules, local events;determine that an event has occurred; anddeclare a scope for the event, the scope for the event being one of global, or local, wherein local scopes are related to an associated player.16.The computing device of claim 15, further configured to:trigger sub-events of the event;when the scope of the event is local, declare scopes for the sub-events, the scopes being one of global or local, wherein local scopes are related to the associated player.17.The computing device of any one of claims 11 to 16, wherein generating the video stream comprises reusing renderings of global entities for each player.18.The computing device of any one of claims 11 to 17, wherein generating the audio stream comprises reusing audio segments for global entities for each player.19.The computing device of any one of claims 11 to 18, wherein the global entities comprise at least one of a particle effect, a light source, and an environmental element.20.The computing device of any one of claims 11 to 19, wherein the local entities comprise at least one of a health bar or a piece of equipment.21.A computer readable medium having stored thereon executable code for execution by a processor of a computing device, the executable code comprising instructions for performing the method of any one of claims 1 to 10.