U.S. Pat. No. 11,642,596
GAME MEDIATION INFRASTRUCTURE FOR ESTABLISHMENT OF MULTIPLAYER GAMING SESSIONS
AssigneeBunch Live Inc
Issue DateApril 6, 2020
Illustrative Figure
Abstract
Within a multiplayer gaming environment, a game mediation infrastructure facilitates the creation and use of multiplayer gaming sessions. The game mediation infrastructure allows leveraging the context of an existing gameplay session within a game (e.g., the game being played, the identities of the participants) to begin a corresponding session in a game mediator application. The session in the game mediator application provides functionality—such as game-related communication capabilities—that is superior to that provided by the game itself. These actions by the game mediation infrastructure reduce or eliminate steps that would otherwise have to be performed by users, thereby greatly simplifying user coordination for multiplayer gaming.
Description
The figures depict various embodiments for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein. DETAILED DESCRIPTION FIG.1is a high-level block diagram illustrating an environment100in which game mediation takes place, according to one embodiment.FIG.1illustrates two clients110A and110B, a game mediator server130, a game server140, a game client111, and an app store server150connected by a network120. Only two clients110, one game mediator server130, one game client111, one game server140, and one app store server150are shown inFIG.1in order to simplify and clarify the description. Embodiments of the computing environment100can have many clients110, game clients111, game mediator servers130, game servers140, and app store servers150connected to the network120. Likewise, the functions performed by the various entities ofFIG.1may differ in different embodiments. FIG.1uses like reference numerals to identify like elements. A letter after a reference numeral, such as “110A,” indicates that the text refers specifically to the element having that particular reference numeral. A reference numeral in the text without a following letter, such as “110,” refers to any or all of the elements in the figures bearing that reference numeral. For example, “110” in the text refers to reference numerals “110A” and/or “110B” in the figures. A client device110(or for brevity, simply “client”) is an electronic device used by a user to perform functions such as communication with other clients, executing software applications for various purposes, and consuming electronic content such as content hosted by web servers on the network120. For example, the client may be a smart phone, a tablet computer, a notebook or laptop computer, a desktop computer, or any other computing system on which users may play, and/or interact with, electronic ...
The figures depict various embodiments for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
DETAILED DESCRIPTION
FIG.1is a high-level block diagram illustrating an environment100in which game mediation takes place, according to one embodiment.FIG.1illustrates two clients110A and110B, a game mediator server130, a game server140, a game client111, and an app store server150connected by a network120. Only two clients110, one game mediator server130, one game client111, one game server140, and one app store server150are shown inFIG.1in order to simplify and clarify the description. Embodiments of the computing environment100can have many clients110, game clients111, game mediator servers130, game servers140, and app store servers150connected to the network120. Likewise, the functions performed by the various entities ofFIG.1may differ in different embodiments.
FIG.1uses like reference numerals to identify like elements. A letter after a reference numeral, such as “110A,” indicates that the text refers specifically to the element having that particular reference numeral. A reference numeral in the text without a following letter, such as “110,” refers to any or all of the elements in the figures bearing that reference numeral. For example, “110” in the text refers to reference numerals “110A” and/or “110B” in the figures.
A client device110(or for brevity, simply “client”) is an electronic device used by a user to perform functions such as communication with other clients, executing software applications for various purposes, and consuming electronic content such as content hosted by web servers on the network120. For example, the client may be a smart phone, a tablet computer, a notebook or laptop computer, a desktop computer, or any other computing system on which users may play, and/or interact with, electronic games. The client110includes a display on which the user may view content such as electronic games. In addition, the client110provides a user interface (UI), such as physical and/or on-screen buttons, which the user may interact with to perform various functions with the client.
In one embodiment, the client110includes a game mediator112and an electronic game114, the game mediator112facilitating the creation of multiplayer gaming sessions with the electronic game114or other electronic games. Depending upon the embodiment, the game mediator112and/or game114may be integrated into the operating system, or implemented as an application or other software executing on the client110. In some embodiments, the game114is part of the game mediator112, rather than an independent software item. In other embodiments, the game114is distributed among a plurality of locations, for example, in part on the client110as an independent software item, and in part on the game server140.
In some embodiments, the game mediator and the electronic game114need not be installed and/or run on the same client110. Rather, in some embodiments the game114may be played on a separate game client device111(e.g., a dedicated gaming console, such as NINTENDO SWITCH or the XBOX ONE X, or SONY PLAYSTATION 4, or a general purpose computer such as a laptop or desktop computer running a commercial operating system such as MICROSOFT WINDOWS or APPLE MAC OS). In such embodiments, the game114may have or make use of a game mediator library115, as described in more detail below, or the game client111may have a game mediator112. The game mediator library115and/or the game mediator112provide the game client device111to be part of the game mediation infrastructure. The client device110may then be used in conjunction with the game client device111, with its game mediator112serving as an independent means of interacting with the game session established via the game mediation infrastructure, such as by chatting with other game session participants, specifying portions of game sessions to be saved and shared, displaying video of other participants, or the like.
The game mediator112is a software module, such as an executable application, that runs on the client110(or game client111) and mediates multiplayer gameplay. The game mediator112interacts with one or more games such as the game114, as well as the game mediator server130. The game mediation infrastructure used to enable game sessions includes at least the game mediator112, and in some embodiments also includes the game mediator server130and/or at least one other game mediator112on at least one other client110. Depending upon the embodiment, the game mediation infrastructure controls various aspects of a game playing session, such as providing a “lobby” user interface for the game playing session, and/or providing enriched gameplay. In one embodiment, a game playing session may be launched via a UI of the game mediator112, such as the lobby, using a “deep link” (a link, such as a Uniform Resource Locator (URL), to a resource such as a game, and that additionally specifies a more specific context within the resource, such as a particular stage or state of the game). In an embodiment, the game mediator112A runs on a first client110A and interacts with a second client110B, such as with a game mediator112B upon the second client110B, to enable client110B to participate in the game playing session launched by client110A. In other embodiments, more than one client110may be interacted with by the client110A to enable participation in the game playing session launched by client110A, e.g., up to as many as the game being played supports.
The lobby is a user interface that provides an environment for communication among clients110associated with a game playing session. The lobby allows clients110to communicate before, during, and/or after game playing sessions, such as by using live video feeds, screen capture feeds, and/or voice. In an embodiment, the lobby has functionality allowing at least one client110to configure game play settings of the game that is to be launched. In an embodiment, the lobby is executed at least in part upon the game mediator server130. The lobby may further include various information about the game playing session, such as usernames or rankings of clients110for the game, as well as a level of the game or other information pertaining to the game playing session. For example, in some embodiments the lobby includes a chatroom in which client110A exchanges text messages with client110B. Alternatively or additionally, as another example, in some embodiments the lobby enables a video call (using live video feeds) with which users of clients110see and hear each other.
In some embodiments, one or more of the games114accesses a game mediator library115. The game mediator library115contains executable code that integrates with the rest of the game mediation infrastructure (e.g., the game mediator112and the game mediator server130) to facilitate the playing of multiplayer games. The game mediator library115may be a subset of the functionality provided by the game mediator112itself, so that software that incorporates the game mediator library115(such as games114) can perform a subset of the actions of the game mediator112, even without the game mediator112being installed. The game mediator library115may be wholly or partially statically linked into the game114itself, or the game mediator library may be stored externally to the game and accessed by dynamic linking. In some embodiments, the game mediator library115is included within the game mediator112, so that if the game mediator is installed, the game mediator library is installed, as well. The game mediator112and the game mediator library115may both be referred to as being part of a game mediation infrastructure that encompasses both the game mediator112and the game mediator library115on the client devices, as well as the game mediator server140. The game mediator library115may be (though need not be) created by the same organization that creates the game mediator112and/or the logic of the game mediator server130. The game114itself may be created by any organization, such as an independent third-party game developer different from the organization creating the game mediator112and/or other components of the game mediation infrastructure. In some embodiments, game mediator libraries115are not employed, and instead the game mediators112themselves provide all the required functionality.
FIG.7illustrates a simplified example of the lobby according to one embodiment, the lobby including video panes710, a settings button720, a games button730, an invite button740, and a joined icon750. The lobby may provide a user interface such as a page or screen of the game mediator112, which runs upon client110, which in the example ofFIGS.7-8is a mobile device. Each video pane740is associated with a client110joined to the lobby. For example, if clients110A and110B are joined to a lobby, there is a video pane710A for client110A and a video pane710B for client110B, as inFIG.8. If additional clients110are joined to the lobby, additional panes may be added, which may involve modifying the boundaries of existing panes to accommodate the additional panes on the display. In an embodiment, additional panes are not added if a pane threshold is reached or surpassed. For example, the pane threshold may be a number of panes, or a pane size. Each video pane710presents a live video feed from the associated client110, including both graphical and audio content. The live video feed may be, for example, from a camera of the client110, e.g., displaying an image of the user of the client (or of whatever is in the field of view of the camera), from the content of the screen of the client (e.g., feed of screen capture), or the like. In an embodiment, the client110can disable the presentation of graphical and/or audio content of the client's110live video feed, for example, using the option buttons730. In an embodiment, the client110can change the camera used to generate the live video feed, such as switching from a front-facing camera to a rear-facing camera of the client110.
The option buttons730control settings of the game mediator112. For example, in some embodiments, upon selection of an option button730by the client110, the game mediator112loads a settings page. At the settings page, one or more settings may be adjusted using the client110, such as enabling or disabling the transmission of audio and/or graphical content by the client110, changing the camera used to generate the live video feed, muting one or more incoming live video feeds from other clients110joined to the lobby, and so on.
The option buttons730also control game selection in the game mediator112. For example, upon selection of the games button730by the user of the client110, the game mediator112loads a games page listing the games available for play. At the games page, a game may be selected using the client110. For example, the games page may include a list of available games, including for each listed game a game title, a game icon or image, a game summary, and/or an on-screen button to select the game. For example, a listed game may have title “Fortnite™,” an image of a game character, and a summary “compete in a battle royale.” In an embodiment, the games page further allows the client110to select a portion of the game they wish to play, such as a track where they wish to race within a car racing game, or a location upon a map where a user character should be placed upon loading.
Upon selection of a game by the client110, the game mediator112configures the lobby to attain a look and feel of the selected game based on one or more features of the game. The lobby may be configured to display graphical and/or textual elements of the game, such as a logo, a color scheme, one or more images from the game, and so on. For example, if “Fortnite” is selected, an image from the game of a game character may be displayed with the “Fortnite” logo overlaid as game logo720. Other aspects of the lobby, such as video panes710, may adjust to accommodate the configuration, as seen inFIG.8, which illustrates a simplified example of a lobby according to a second embodiment.
FIG.8illustrates a different state of the lobby, e.g. after a game has been selected.FIG.8includes a game image810, a game logo820, option buttons830, a video pane840, and a launch button850. The game image810is an image from game A, such as a game character holding a sword in a game landscape. The game logo820is the stylized title of the game, such as how it may appear in-game at a title screen. The option buttons830allow one or more settings to be adjusted, such as the transmission of audio and/or graphical content as part of a live video feed.
The video pane840is a video pane similar to video pane710, though possibly of different dimensions. In an embodiment, each client110joined to the lobby is associated with a video pane that displays the associated client's110live video feed. In an embodiment, there are as many video panes as there are allowed players for the game, and if there are fewer clients110joined to the lobby than there are allowed players for the game, unused video panes include an icon, such as a “+” icon, which the client110may select to access an invitation page as detailed below. The launch button850prompts the game mediator112to launch a game playing session, e.g., to initiate execution of the game playing session.
Returning toFIG.7, the invite button740controls invitation of clients110to the lobby, according to one embodiment. For example, upon selection of the invite button740by the client, the game mediator112loads an invitation page enabling a user of the client110to send invitations to join the lobby to other clients110. For example, the invitation page may include a list of invitation techniques, including for each listed technique a technique title and a technique icon. For example, an iMessage™ listed technique may include the title “iMessage™” and an iMessage™ icon. The invitation page may also include a list of clients110to whom an invitation may be sent, each listed client110including, for example, a name. Upon selection of one or more clients110for invitation and selection of one or more invitation techniques, the game mediator112generates an invitation message and configures the selected invitation techniques such that the invitation message may be sent. For example, if the invitation technique is a text message and the invitee is a client110associated with the name “Justin,” the game mediator112generates a textual invitation message, opens a text message application upon the client110, addresses the text to the invitee, and pastes the invitation message into a message portion of the text message application. The client110may then send the invitation to the invitee using a button of the text message application.
The joined icon750indicates a number of clients110joined to the lobby. In the example ofFIG.7, there are two clients110joined to the lobby, hence the joined icon750indicates “2.” In other embodiments, other icons may be present, as well as other buttons, graphical, and/or audio content. For example, the lobby may be configured to display a text string for each client110in the lobby indicating a name associated with the client110. In an embodiment the lobby may include a list of other clients110that are playing games or are preparing to play games, which the client110may select to join another client's110lobby and/or game playing session.
In an embodiment, the lobby may be configured to allow the client110to initiate live streams of gameplay, using, for example, a livestream product such as Facebook Live™ YouTube™, or Twitch™. A live stream of gameplay involves sending a video of gameplay as seen on the screen of a client110playing in the game playing session to a client110not playing in the game playing session. Furthermore, clients110joined to the lobby or who select the lobby may choose to view the live stream, rather than participate in the game playing session. For example, if a game allows a maximum of four players and a fifth client110joints the lobby, the fifth client110may choose to livestream the game playing session despite being unable to play.
In an embodiment, a first client110may invite one or more additional clients110to a game playing session using the game mediator112via the game mediator server130(e.g., using the invite button740in the embodiment ofFIG.7). Upon receipt of an invitation, the game mediator112of each additional client prompts a user of the additional client110to either accept or reject the invitation. If the invitation is accepted, the game mediator server130may further interact with each accepting client110to enable participation in the game playing session. Furthermore, if the invitation is accepted, the respective client110is added to the lobby, for example, gaining the ability to participate in the chatroom or other communications functionality.
Returning toFIG.1, the electronic game114interacts with the game mediator112to provide game playing sessions to users of clients110. The game114may be a dedicated software application built natively to run on the operating system of the client110, code (e.g., HTML 5 code) running within a game playing engine, such as (in some embodiments) the game mediator112, a game built with a framework such as React Native™, or the like. A game playing session involves one or more users interacting with respective clients110to play a set of instances of the game114in coordination with each other. In multiplayer game playing sessions, multiple clients110participate in a single game playing session, interactively playing the same game. In single player game playing sessions, one client110participates in a single game playing session. In some embodiments, the game114runs on the game mediator server130, and is accessed using the client110, which provides an interface to play the game114. For example, the game114executes upon the game mediator server130, which sends the results of the execution of the game114to the clients110. The clients110interact with the results of the execution that are received from the game mediator server130and send the interactions to the game mediator server130, which impact the execution of the game114. The game playing session may progress in this back and forth manner.
There may be different types of games, and the game mediator112and/or game mediator server130may support different types of games differently. One embodiment includes instant games and downloadable games. In such an embodiment, instant games can be played without downloading additional software. For example, the instant game may be at least partially integrated into the game mediator112such that the client110can launch a game without prior installation of additional software. If the client110launches a game playing session using the game mediator112for an instant game, the game mediator112does not check whether the client110has the game installed. In contrast, downloadable games require the downloading of the game by the client110before a game playing session can be launched. If the client110launches a game playing session using the game mediator112for a downloadable game, the game mediator112may check if the client110has the game installed.
The game mediator server130interacts with the clients110to support the operation of the game mediator112. The game mediator server130configures the lobby launched by the game mediator112according to specifics of the game114launched in conjunction with the lobby. For example, the lobby may be configured to show which players are prepared to play a particular game, allow a user to invite other players or to initiate a live stream of game play, and to allow a user to enable configuration of gameplay settings specific to the game114(such as selecting a character to use, or arena in which to play).
Upon receiving a command to launch a game playing session, the game mediator112alerts the game mediator server130, which checks each client110involved in the game playing session, e.g., by querying its game mediator112. If a certain client110involved in the game playing session does not have the game114installed, the game mediator server130sends a deep link to the client110, e.g., a deep link corresponding to an application store such as Apple App Store™ or Google Play Store™. The deep link then initiates installation of the game on the certain client110without exiting the game mediator112. Alternatively, the deep link is sent to each client110involved in the game playing session regardless of whether the client110has the game installed or not. If the game is not installed, the deep link facilitates the installation of the game without the user leaving the lobby. The deep link may be a uniform resource locator (URL). In an embodiment, the deep link directs the client110to open an application vendor (e.g., an application store) to a page where the game may be downloaded, for example, in a web view of the game mediator112. For example, the deep link includes an identifier associated with the page of the application vendor that is used by the client110to navigate to the page. In another embodiment, the deep link facilitates checking whether the game114includes a game mediator library115. If client110and/or game mediator server130, facilitated by the deep link, determines the game has the library115, it transfers functionality to the game; for example, it may transfer voice and/or video stream controls to the game. Such a transfer allows the user to control various aspects of voice and/or video during gameplay without having to return to the lobby. In other embodiments, other functionality may be transferred to the game, such as livestream functionality, game invitation functionality, and so on. In such embodiments, one or more graphical elements, such as on-screen buttons with which a client110may interact to control functionality passed to the game, may be overlaid upon the game as it is displayed in the course of the game playing session. (The graphical user interface elements overlaid upon the game by the game mediator112or the game mediator library115are hereinafter referred to as the “overlay”.) Furthermore, launching the game itself may involve the use of a deep link to access the game directly from the game mediator112.
Furthermore, in some embodiments the game mediator server130checks the state of the lobby and, depending upon the number of clients110participating in the lobby, suggests to the client110who invited the others that more clients110could be invited. In an embodiment, the game mediator server130hosts the lobby. In an embodiment, when the game mediator server130configures the lobby according to the specifics of the game114, the game114specifies the number of players required to play the game, to which the lobby adapts. For example, the lobby adapts to not launch a gameplay session until the required number of players are in the lobby. In an embodiment, if the minimum number of players are not present in the lobby to launch a game playing session, the lobby prompts the players to invite others. Furthermore, the lobby may be configured to display as many video panes as the game allows.
In some embodiments, lobbies may be private or public. In an embodiment, the player who created the game playing session sets the lobby as private or public. A public lobby is discoverable by users who wish to join a game. A private lobby is accessible only via invitation. Furthermore, the lobby may be configured to allow players who join the lobby to elect to participate in the game playing session as spectators. Spectators watch gameplay but do not themselves play. If a game has reached its maximum amount of players, additional players may only participate as spectators.
The game mediator server130proceeds to launch the game after receiving notifications that each client110that was sent a deep link installed the game and receiving a notification that the client110that commanded launching the game playing session declined to invite more clients110. In an embodiment, the game is hosted on the game server140, and the game mediator server130sends the game server140parameters associated with the game playing session, such as a session identifier, as well as parameters associated with each client110, such as client identifiers. In other embodiments, parameters associated with the game playing session are sent to one or more other destinations to coordinate game play.
The game mediator112uses the client110functionality to enhance gameplay. The game mediator112may enable actions within the game mediator112, such as in the lobby, to affect gameplay, or may enable actions within the game to affect the lobby. The game mediator112has access to the functionality of the client110, further detailed inFIG.2below. Games such as the game114may use the functionality of the client110via the game mediator112by way of the game mediator library115. For example, games may access video content of the clients110using the live video streams of the clients110in the lobby participating in the game playing session.
The game mediator112may enhance gameplay using the audio content of live video streams of the clients110in the lobby participating in the game playing session. Game events may be associated with audio cues, which the game mediator112detects and communicates to the game114via the game mediator library115. Game events are associated with audio cues on a subscription basis. For example, in a charades game, each word in a set of candidate words is subscribed to a different audio cue which the game mediator112is set to detect depending upon which word is being guessed. If the word is “car.” for example, the game mediator112listens for the word “car” and informs the charades game that it has been spoken. In an embodiment, the game mediator112also informs the game114which client110produced the audio cue. The audio content may also be used for voice recognition. For example, if multiple players are speaking, and one says the correct keyword, the correct player is awarded a point.
In some embodiments, the graphical content of live video streams of the clients110in the lobby participating in the game playing session may be used for gesture recognition to enrich gameplay, i.e., detecting (or subscribing to and then being notified by the game mediator112of) certain gestures, such as smiles, and awarding points to appropriately gesturing users within a game114responsive to detection of those gestures. As another example, if a particular client110participating in a game playing session chooses to overlay a graphic of a wolf's face upon its video pane in the lobby, its character within the game114could likewise gain a wolf façade.
In an embodiment, the game mediator server130uses external live streaming, rather than the content of live video streams within the lobby, to enhance gameplay. For example, in a pictorial guessing game, the livestream (such as on Facebook Live™ or Twitch™) may be used for players, i.e. viewers of the livestream, to guess what the picture is. The game114subscribes to the game mediator112to listen for certain keywords, and upon detection of those keywords, awards points appropriately to the participant who guessed correctly by saying the keyword, similar to the use of audio content of the live video streams of the clients110in the lobby.
In some embodiments, the game mediator server130provides enriched gameplay functionality by enabling game events to affect the lobby. Game events may be tagged for game mediator112enrichment using the game SDK/engine230. Upon occurrence of the game event within the game playing session, the lobby is adjusted based on the tagged event, as discussed below with respect toFIG.5. Depending upon the embodiment, the lobby may be adjusted by affecting one or more video panes, audio, or so on. For example, upon an event involving a wolf occurring within the game playing session, the client110who prompted the event may have a wolf mask graphic overlaid upon their video pane in the lobby. As another example, a player's audio content may be filtered to create an audio effect, such as filtering a voice to sound like a dog barking. As a third example, if the game mediator server130determines that two clients110are within a threshold geographical distance of each other, the game mediator server130sends a command to one of the two clients110to mute the volume of the game114(or of specific portions of the game114, such as background music, or the audio content of the live video stream) so as not to have duplicative sound played within a given area. In some embodiments, to determine the geographical distance between clients, the game mediator server130obtains and analyzes device sensor data from the clients110, such as their geolocations (e.g., distance between GPS coordinates) and/or speaker input (e.g., whether there is an echo or other duplicative sounds of the game). In other embodiments, enriched gameplay functionality is provided by the game mediators112collaborating in a peer-to-peer configuration, without the use of the game mediator server130.
The game mediator server130and/or the game mediators112may further use deep links for purposes other than game installation or gameplay initialization. For example, the game mediator server130may obtain information about the gameplay preferences of the user of a client110by using deep links to send requests to each of some set of games, such as a predetermined set of games representative of various categories of game.
The operating system of the client110attempts to relay the deep link request to the applications; if the applications are not installed on the client, the operating system informs the game mediator112of an error. The game mediator112then stores (e.g., as a bit vector) whether each of the games of the set is installed based on whether the operating system indicated an error in response to the sending of the deep link requests. In some embodiments, the game mediator112further makes decisions or identifies implicit preferences for a particular client110based on which of the set of games is installed on that client110. For example, the game mediator112might determine, based on the set of games installed on a given client110, that the user of that client110primarily enjoys puzzle games, and adjust the order of the games available to play, or the look and feel of the lobby, to reflect the user's interest in puzzle games. The game mediator112may also identify users connected to the user associated with the client110, e.g., friends of the user, who also enjoy games of the type determined to be the user's preference. The game mediator112may suggest to the user that the user invite the identified friends to a game. Alternatively, the game mediator112may identify other users to whom the user is not connected (e.g., has never played with) and who enjoy similar games, and may recommend to the user that the user play with the identified users. Furthermore, the game mediator112may use the user's preference to suggest additional games, e.g., games of the same type, that the user may enjoy playing. The game mediator112may also use the user's preferences when determining an advertisement or other sponsored content to display to the user. These various actions may be performed using deep links, e.g., by collecting data on the client110as the client110uses deep links, as described below, and developing implicit preferences for the client110.
Deep links can indicate a particular application to run via the domain portion of the URL, and additional information for the application via the parameters of the URL. For example, to initiate a game114on a client running the IOS™ operating system, a deep link “https://abcd.app.link/connect?mode=internet&teamPassword:12345&bunchRoom=rkHyuCojz&bunchAuth=SJWpHXZzX” might be used, where “https://abcd.app.link” indicates the application, and “mode=internet&teamPassword:12345&bunchRoom=rkHyuCojz&bunchAuth=SJWpHXZzX” indicates the game parameters, which in this example are “mode,” “teamPassword,” “bunchRoom,” and “bunchAuth.” Using this link, a client110may launch a game “abcd” over the internet with other clients110as part of a team, which may be joined to a lobby specified by the “bunchRoom” and authorized using the “bunchAuth.” Additional parameters may be added in this manner to the deep link, such that each game114may have a customized deep link to enable various gameplay customizations to launch the game114using the game mediator112. For example, the deep link may additionally include a “skin” parameter used to specify a particular character graphic to use in the game114. As a second example, the deep link may additionally include a “level” parameter used to specify a particular level of the game114into which to launch.
In an embodiment, one or more parameters are encoded (e.g., into a base64payload), such as that in the deep link “https://abcd.onelink.me/4289444349?payload=eyJhY3Rpb24iOiJidW5jaC5yb29tIiwiZ2FtZVR5cGUiOjEsInJvb21Ub2tlbiI6InJrSHl1Q29qeiJ9&bunchUID=rgBU5KlNmWhL7Od0NOGM4kWfEXD3&bunchRoom=rkHyuCojz&bunchAuth=SjWpHXZzX”, where the data in the “payload” parameter can be decoded to obtain other parameter values. The use of base64encoding provides flexible information encoding such as special Unicode used to represent the payload.
As another example, to initiate downloading a game114, a deep link “https://itunes.apple.com/us/app/id570510529?mt=8” might be used, where “https://itunes.apple.com/us/” indicates the application store ITUNES™, and “app/id570510529?mt=8” indicates an application identifier used to specify the game114to be downloaded. As a still further example, to check whether a game114is installed on a client110, a deep link “abcd://” might be used to determine whether the game114is stored in memory upon the client110. For example, if the deep link does not lead to a folder in memory, the game mediator112may determine that the game114is not installed.
In some embodiments, the game114is hosted by the game server140, which runs the game playing session. Each game114interacts with the game that is run on the game server140to generate the game experience on the clients110. For example, if a user playing a game114on a client110performs an action within the game114, the action is communicated to the game server140, which handles that action and applies it to the corresponding game session, populating that action and its effects to any other clients110/game mediators112that are participating in that session. Upon occurrence of events associated with enriched gameplay functionality (such as an in-game interaction with a certain game character), the game server140notifies the game mediator server130of the event and the client110that triggered the event. In an embodiment, the game mediator server130tracks the game session and identifies events with enriched gameplay functionality.
The network120enables communications among the clients110, the game mediator server130, and the game server140, and can comprise the Internet as well as mobile telephone networks. In one embodiment, the network120uses standard communications technologies and/or protocols. The data exchanged over the network120can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc. In addition, all or some of links can be encrypted using conventional encryption technologies such as secure sockets layer (SSL), transport layer security (TLS), virtual private networks (VPNs), Internet Protocol security (IPsec), etc. The entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.
FIG.2is a high-level block diagram of the software stack upon which the game mediation infrastructure operates, in one embodiment. At a first or bottom layer reside software components that drive low level functionality including hardware functionality, including WebRTC202, Voice/Video204, Livestream206, GPS208, Accelerometer210, Touch212, and Wifi/Bluetooth214. At a second layer resides software that drives a host application220, such as an operating system. At a third layer resides the game mediator library115. At a fourth or top layer resides a game240(e.g., a game114ofFIG.1).
The WebRTC202component enables web browsers to communicate in real time. The Voice/Video204component enables use of audio and/or video capabilities of the client device110. The Livestream206component allows for communication of video in real time. The GPS208component provides location information of the client device110. The Accelerometer210component provides acceleration information of the client device110. The Touch212component enables touch input to the client device110. The Wifi/Bluetooth214component enables Wifi and/or Bluetooth functionality to the client device110.
The host application220manages operation of the client110and its software and hardware components. The game mediator library115(in embodiments in which it is employed) provides a software framework used by the game mediator112and/or the game240(e.g., game114ofFIG.1), allowing for the interactivity needed to enable mediated and/or enriched gameplay sessions. In some embodiments, the game mediator112and game240are managed by the host application220. For example, the host application220allocates memory for both the game mediator112and the game240.
FIG.3illustrates the process of launching a multiplayer game playing session using the game mediation system100, in one embodiment. In this embodiment, the game session runs on the game server140. In other embodiments the game session runs elsewhere, e.g., on the client110within the game mediator112, or an independent software item upon the client110similar to the game114. Where the game runs may depend upon the type of game, such as instant games versus downloadable games, as detailed above. In the embodiment ofFIG.3, the game mediator112coordinates with the game mediator server130to provide game mediation functionality. In other embodiments, game mediation is provided solely by the game mediator112.
First, client110A launches302the game mediator112A. For example, the client110A may open the game mediator112A as an application, loading it into memory for use. The game mediator112A communicates with the game mediator server130to initiate game mediation. Upon selection304of a game114by the client110A, e.g., using the game mediator112A, the game mediator112A communicates with the game mediator server130to configure306a lobby for the game114. In an embodiment, the game mediator112A and/or game mediator server130coordinate to configure the lobby to attain a look and feel of the game114as well as to provide communication between the clients110in the lobby.
The client110A invites308other clients, such as the client110B, using the game mediator112A. The game mediator112A facilitates invitation via one or more techniques. For example, the game mediator112A may send a notification to the game mediator112B on the client110B, alerting the client110B that the client110A has invited the client110B to a game playing session. In some embodiments, the alert includes a textual notification upon the client110B's display. Depending upon the embodiment, the notification may be sent via email, telephone call, or text message, or by way of other social networking applications, such as Facebook™, Twitter™, GroupMe™, WhatsApp™, Snapchat™, LinkedIn™, and/or other applications. For example, the game mediator112A may generate a text message to the client110B that links to the lobby, which the client110A may send using a text message application.
Upon the client110B's acceptance of the invitation, via, for example, sending a request to join the lobby to the game mediator server130, the game mediator server130joins310the client110B to the lobby, thus enabling the client110B and the client110A to communicate. For example, the lobby may include a video, audio, and/or textual chatroom with which the clients110joined to the lobby may communicate. In an embodiment, the lobby updates to indicate that a new client (the client110B) has joined the lobby. This may entail updating a player count, adding a video pane to the lobby, adding a player graphic or icon, and so on.
The client110A commands the game mediator112A to launch312the game114. In response, the game mediator112A commands the game mediator server130to check314, via the game mediator112upon each client110joined in the lobby, whether the client110has the game114installed. In the example ofFIG.3, the client110B does not have the game114installed. As such, game mediator server130sends316a deep link to client110B which, upon receipt, initiates installation320of the game114upon the client110B. For example, upon receipt of the deep link, the client110B displays a button linking to a download page for the game114. In an embodiment, the client110B also displays a graphic and/or textual summary of the game114. When the client selects the button, the download page opens (e.g., in a web view within the game mediator112B) where the client110B may download and install320the game114. The download page may be, for example, a page in an application store.
In an embodiment, the game mediator server130sends a request to verify installation of the game114to each client110. Upon receipt of the request and verification of installation of the game114, each client110sends a notification to the game mediator server130verifying that the game114is installed upon the client110.
In an embodiment, upon determining that each client110joined to the lobby is ready for the game playing session to launch, e.g., upon verifying that each client110downloaded the game114, the game mediator server130sends a deep link to each client110joined to the lobby linking to a particular point in the game114. When a game session is launched, the clients110joined to the lobby start the game114at that particular point, as specified in the deep link. For example, when the game session is launched, rather than opening the game114to a start page, the game114opens to an in-game lobby or loadout page. As a second example, when the game session is launched, the game114may open to a particular level or location within the game114.
Meanwhile, upon determining (via the check314) that more clients110could be invited to the game playing session, the game mediator sever130suggests318to the client110A (the client110that initiated the game playing session) that more invitations be sent to additional clients110, e.g., via a notification sent to the client110A. In this example, the client110A declines322to invite more players, so game mediator server130proceeds to launch324a session of the game114by communicating with the game server140. In an embodiment, launching324the session of the game114involves sending to the game server140a set of client identifiers, each client identifier of the set corresponding to a client110joined to the lobby. Game server140then starts326the game playing session. In an embodiment, the game playing session is assigned a session identifier by the game server140, and the session identifier is used to distinguish the game playing session from other game playing sessions. In such an embodiment, launching the game involves sending the session identifier to each client110associated with a client identifier that was received by the game server140. In this embodiment, the clients110communicate gameplay instructions to the game server140along with the session identifier, and the game server140communicates gameplay results to the clients110using the client identifiers associated with the session. For example, if a first client110playing the game114swings a sword, the sword swinging gameplay instruction is communicated to the game server140along with the session identifier to impact the associated game playing session. Similarly, the gameplay results of the gameplay instruction are communicated to the first client110, such as graphics to render, audio to play, and/or so on.
FIG.4illustrates the process of launching a multiplayer game playing session using the game mediation system100, according to a second embodiment in which the lobby is launched before the game114is selected. The client110A launches402the game mediator112A. The client110A then initiates404a lobby, which the game mediator server130proceeds to create. Because the lobby is not for a specific game, it is not configured according to any game's look and feel. Instead, the lobby is a generic lobby. For example, the lobby includes video chat frames and one or more icons and/or on-screen buttons, but no particular color scheme or graphics. In an embodiment, the lobby follows a color scheme consistent with other pages of the game mediator112.
The client110A (the client110that initiated404the lobby) then invites408the client110B to the lobby. The client110B accepts the invitation and thereby joins410the lobby. The client110A then selects412the game114from within the lobby. For example, the client110A selects an on-screen button within the lobby, opening a page listing a plurality of games, from which list the client110A selects412. Upon selection412of a game—in this example, the game114—the game mediator server130and/or the game mediator112configure414the lobby for the game114to attain a look and feel appropriate for the game114.
The process then proceeds similarly to the process ofFIG.3. The client110A launches416a session of the game114. The game mediator server130and/or the game mediator112checks418the clients110joined to the lobby. The game mediator server130sends420a deep link to the client110B after determining that the client110B does not have the game114installed. The game mediator server130also suggests422to the client110A that the client110A send more invitations. The client110B installs424the game114, and the client110A declines426to invite additional clients110. The game mediator server130thus launches428the session of the game114, which prompts the game server430to start the game session430.
In an alternate embodiment, the client110A launches the game mediator112A and selects a game114, which launches a session of the game114. In such an embodiment the client110A may invite other clients110to the game session from within the game session, for example, using on-screen buttons of the game mediator112A overlaying the game session.
FIG.5Aillustrates the interactions between the various components of the environment ofFIG.1when establishing multiplayer communication, according to one embodiment.
User U1501has a client device having the game instance514A and the game mediator512A (a process/instance of the game mediator112executing on the client device). User U2502has a client device likewise having the game instance514B and game mediator512B. The game514itself provides a user interface for establishing a multiplayer gaming session for use when playing the game514, but this user interface may not provide any communication ability between the users as the session is being established, instead requiring them to communicate via separate channels, such as the users' smartphones, which can be time-consuming and inconvenient. In the example ofFIG.5A, user501and user502are both tentatively joined in a multiplayer gaming session for the game514, in that they have used the user interface of the game514to be grouped together for an upcoming gameplay session within the game.
The game514A provides a session launch control516, which is a user interface element that invokes the functionality of the game mediation infrastructure to rapidly join the users together in a multiplayer gaming session within the game mediation infrastructure, as well as providing additional ways to more rapidly configure the multiplayer gaming session. For example,FIG.6illustrates a session launch control (a “Start a Party” button in the example ofFIG.6) included within the user interface503of the game514A.
User U1501uses550the session launch control516to initiate a multiplayer gaming session from within the game514A. In some embodiments, the use550of the session launch control verifies whether the game mediator512and/or the game mediator library115are installed on the client device of the user U1501, transferring control to the app store150if not so that they can be installed552.
Control is then transferred554to the game mediator512A via a message containing relevant contextual information, such as an identifier of the game being played (that is, the game514), and an identifier uniquely corresponding to the list of users currently prepared to play the game together (e.g., U1501and U2502). The format of the message is specified by the game mediator process512A (or, equivalently, by the game mediator112or which the process512A is one executing instance) in the sense that the game mediator expects the message to have a given format, and the game114conforms to that format in order to interact with the game mediator112. In one embodiment, the transfer554is effected, and the contextual information is provided, via a deep link message that references the game mediators. For example, in one embodiment the format of the deep link is //, where indicates, to the operating system of the client device111on which the game514is installed, the name for launching the game mediator512, is an ID shared by the users currently establishing the game session within the game514, and is an identifier of the game. For instance, the deep link https://bunch.live/A83jiklqw7/clashroyale indicates that the name of the application for the game mediator514is “bunch.live”, the game being played is Clash Royale™, and “A83jiklqw7” is an identifier uniquely corresponding to the session of the users in question (e.g., U1501and U2502). The game514is designed to select the for a given set of users currently preparing to play the game together such that it is different from the selected for a different set of users, as well as to specify its own identifier for .
The game mediator process512provides556some or all of the contextual information to the game mediator server130. The game mediator server130accordingly stores558the provided contextual information about the gameplay session. In some embodiments, the game mediator server130instructs560the game mediator512A of the user501to configure its lobby according to the contextual information (e.g., that the game to be played is game514and that U1501is currently in the session). In some embodiments, the game mediator512A performs the lobby configuration in response to the transfer554, rather than in response to an instruction560from the game mediator server130.
In a manner similar to that of steps550-560, when user502likewise wishes to join the gameplay session, the game514will provide the same and as it provided to user501, which will cause the game mediation infrastructure to place the user502into the same gameplay session (and corresponding lobby) as the user501. The game mediator server130can notify the game mediators512of the users involved each time that a user joins the session, and the game mediators512can update their lobbies accordingly, e.g., indicating that the new user has joined. In some embodiments, rather than the user502also manually using the control550to join the gameplay session, the game mediator server130may prompt the user502to agree to do so. For example, the game514A may include an identifier of the user502along with the other information at step554. The game mediator server130may then use this identifier to cause the game mediator512B of the user502to provide the user502with a prompt to join the game session established by the user501.
At this point, the lobbies are configured according to the game being played (game514) and the current participants (users U1501and U2502). This avoids the need for the users to explicitly start use of their game mediators512and to join each other into the session; rather, they simply leverage the fact that they were already in the game514together to appropriately configure the lobby of the game mediators512. Other actions—such as adding more users to the gameplay session via the lists of the users' known friends stored by the game facilitation infrastructure (e.g., on the game mediator server130), or commencing actual gameplay of the game514(or otherwise transferring control back to the game), can proceed within the lobby interface as in steps416et seq ofFIG.4, e.g., using deep links to transfer control to the game514A and to pass it the appropriate game configuration parameters. Communication capabilities of the lobby user interface, such as voice and video chat, can also be used to ease the burden of coordinating the remainder of the gameplay session, and of communicating with each other while actual gameplay is taking place.
FIG.5Billustrates the interactions between the various components of the environment ofFIG.1when establishing and using multiplayer communication according to different information of the game, according to one embodiment.
As withFIG.5A, user U1501has a client device having the game instance514A and the game mediator512A. User U2502has a client device likewise having the game instance514B and game mediator512B. The game514itself allows definitions of groups of users of the game interface for establishing a multiplayer gaming session for use when playing the game514(e.g., a clan from Clash Royale™). However, as described with respect toFIG.5A, this user interface may not provide any communication ability between the users as the session is being established, instead requiring them to communicate via separate channels. In the example ofFIG.5B, user501and user502are both members of a group defined by the game514(e.g., a group established by user501within the game514, and which user502joined within the game).
The game514A provides a game-group discussion control520, which is a user interface element that invokes the functionality of the game mediation infrastructure (e.g., the game mediator library115) to enable quick and convenient communication capability between the users of the in-game group (e.g., users501and502, as well as all the other members of the in-game group), as well as to provide additional ways to more rapidly configure the multiplayer gaming session. For example,FIG.6illustrates the game-group discussion control520(a “Clan Chat” button in the example ofFIG.6) included within the user interface503of the game514A. The in-game group may be large, such as 50 members,100members, or the like. Coordination of, and communication between, all these users would be difficult using traditional means, such as external channels such as email or phone text messaging, which lack context about the game group.
User U1501uses570the game-group discussion control520to initiate game-group communication from within the game514A. In some embodiments, the use570of the session launch control verifies whether the game mediator512and/or the game mediator library115are installed on the client device of the user U1501, transferring control to the app store150if not so that they can be installed.
Control is then transferred574to the game mediator512A, along with any relevant contextual information, such as an identifier of the game being played (that is, the game514), and an identifier of the in-game group. In one embodiment, the transfer574is effected, and the contextual information is provided, via a deep link that references the game mediators. For example, in one embodiment the format of the deep link is /chat/, where indicates, to the operating system of the client device111on which the game514is installed, the name for launching the game mediator512, and is an ID uniquely identifying the particular game group within the game514. For instance, the deep link bunch. live/chat/clashroyale indicates that the name of the application for the game mediator514is “bunch.live”, that chat communication is desired, and that the game being played is Clash Royale™. The game514is designed to select the for a given game group such that it is different from the selected for a different group. The need not be human-readable, as in the above example, but need merely map uniquely to a particular game group.
The game mediator server130accordingly stores578the provided contextual information about the gameplay session. In some embodiments, the game mediator server130instructs580the game mediator512A of the user501to configure an appropriate discussion user interface. Assuming that the in-game group is large (e.g., 50 players), apportioning a separate part of the client device display for each member of the group—as illustrated inFIG.7for two users—would be impractical. Accordingly, a different communication mechanism is chosen. For example, in some embodiments a textual chat interface is employed. Such a chat interface can also allow the user to designate a subset of the other users in the chat and spawn a separate lobby interface for that subset. For example, designating four other users from the chat interface and spawning a lobby interface for those users would result in a user interface similar to that ofFIG.7, but for 5 users (that is, the user designating the other users, and the4other users).
Other members of the game group wishing to communicate with each other for gameplay would perform actions similar to those of steps570-598above. Since the game would provide the same to all members of the same in-game group, all would be joined into the same discussion UI (e.g., textual chat UI) and hence could begin immediate interaction with each other.
Advantageously, the use of the game mediation infrastructure allows the creators of the games114to focus on development of the core gameplay, delegating many or all details of the establishment of multiplayer game sessions to the game mediation infrastructure. From the perspective of the users of the games, the ability of the game mediation infrastructure to establish multiplayer game sessions reduces or eliminates the user interface actions that would otherwise be required before beginning gameplay, dramatically streamlining gameplay.
In the above description, some actions are performed by the game mediators512. In embodiments making game mediator libraries115available for inclusion within the games114themselves, some of these actions may instead be performed by the game mediator libraries115included within the games. In some embodiments, whether a given action is performed by the game mediator512or the game mediator library115varies. For example, in some embodiments the game mediator library115can perform actions indicated in FIGS.5A and5B as being performed by the game mediator512, possibly in more lightweight form. For example, the game mediator library115could show a user interface for establishing a multiplayer gaming session and inviting participants within the game514itself, rather than using a separate user interface of the game mediator512for that purpose.
Further, although above description ofFIGS.5A and5Bdescribe an embodiment in which the game mediator server130coordinates the various client devices involved in a multiplayer gaming session, in other embodiments the game mediators512and/or game mediator libraries115on the various client devices can interact in a peer-to-peer manner, obviating the need for a game mediator server130.
FIG.5Cillustrates the interactions between the various components of the environment ofFIG.1when establishing and using multiplayer game sessions, according to an embodiment in which the game114and the game mediator are executing on different devices. Specifically, in the example ofFIG.5C, the game114executes on client device111(e.g., a dedicated game console such as the NINTENDO SWITCH), and the game mediator112executes on client device110(e.g., a smart phone of the user playing the game114). In such an environment, the client device111(e.g., a game console) provides little or no user interface for establishing and interacting with a game session, and hence the user's separate client device110can serve as the user interface for that purpose. It is valuable to simplify the process of associating the client devices110and111with the same game session.
To achieve this, the game114generates and displays a code that identifies the game being played and the gameplay session currently being configured from within the game114, and the game mediator512A scans the code to join the session.
Specifically, the user501has begun to play the game514A and go about establishing a gameplay session with other users from within the game. The game514A generates and displays581a code that—as inFIG.5A—indicates the game being played and the gameplay session being configured. In some embodiments, the code is implemented as a QR code that can be graphically displayed and scanned; in other embodiments, the code is implemented as text (e.g., a numeric PIN). The user501then uses583the displayed code to cause the game mediator112to be joined into the gameplay. For example, in embodiments in which the code is a QR code, the user501can use the client device110to scan the code; in other embodiments in which the code is text, the user can manually enter the code into a user interface of the client device110. In some embodiments, the code maps uniquely to a deep link with a format similar to that discussed above with respect toFIG.5A, such as //. In any case, the game mediator112decodes the various components (e.g., , , and ) from the received code. Steps586,588, and590then proceed in the same manner as those of steps566,568, and570ofFIG.5A.
FIG.5Dillustrates the interactions between the various components of the environment ofFIG.1when establishing and using multiplayer game sessions, according to another embodiment in which the game114and the game mediator112are executing on different devices. As with the example ofFIG.5C, in the example ofFIG.5D, the game114executes on client device111(e.g., a dedicated game console such as the NINTENDO SWITCH), and the game mediator112executes on client device110(e.g., a smart phone of the user playing the game114). In the example ofFIG.5D, however, the game mediation infrastructure does not rely on the use of manually or semi-manually shared codes, but instead uses wireless network information to automatically join the client devices110,111within the gameplay session.
Specifically, the user501has installed the game mediator512A on the user's client device110. The user501has also already begun591a session in the game514A with one or more other users, and the game (e.g., via its remote game server) has assigned a unique ID to that gameplay session. At some point, the client device110connects to a network (e.g., a Wi-Fi network), and when the game mediator512A runs (e.g., in response to the game514A prompting the user to run the game mediator512A as a communication channel for the game), the game mediator provides592the game mediator server130with network data about its network connection (e.g., a unique identifier of the Wi-Fi network), as well as its own ID (e.g., a unique hardware identifier of the client device110), and the game mediator server130adds this data to its information about the available devices of users.
At this point, in order to automatically use additional client devices of the user501—such as the client device110—for interaction with the gameplay session, the game514A uses the game mediation infrastructure to query593the game mediator server130for available devices of the user. The query includes information about the network to which the client device111is presently connected (e.g., an identifier of a Wi-Fi network to which the client device is connected), an identifier of the game514A presently being played, which uniquely identifies the game to the game mediator server130, and an identifier corresponding to a new session for the game514A presently being played by the user501.
In response to the query, the game mediator server130looks up 595 client devices previously registered (e.g., as a result of step592) as being available on the same network. In the example ofFIG.5D, the game mediator server130finds an entry for the client device110, given that the client device110it is presently connected to the same Wi-Fi network as the client device111. The game mediator server130associates596the client device111with the game514A and with the gameplay session, given that it was the client device111that issued the query1005. The game mediator server130also instructs597the game mediator112on the client device110to join the session. In consequence, the user501can not only play598the game on the client device111, but also interact599with the new session using the game mediator512A on the client device110, such as communicating with the other player(s) in the session (if those players also have their own game mediators112), adding more users to the gaming session using the lobby UI of the game mediator512A, transferring control back to the game114, and the like.
In embodiments in which the game514A incorporates the game mediator library115, the game mediator server130can respond to the query593by sending the information about the matching client device110(e.g., its hardware ID, the unique ID of the user501on the game mediator server130, etc.) back to the game514A. The game514A can then use the game mediator library115to save an association between the unique ID of the user in the game514A and the unique ID of the user in the game mediator server130). Then in future the game514A, via the game mediator library115, can immediately associate the user in the game514with the user on the game mediator server130and take associated actions, such as automatically launching the game mediator512A and enabling game communication thereby.
When another player on a different network also wishes to play the game, the process would be similar. That is, the game instance114of the client device of the other player would likewise query the game mediator server130for other registered devices, as in step593; the game mediator server130would look up other registered devices on the same network as the client device of the other player, and instructing the other registered devices on the same network to join the gameplay session.
OTHER CONSIDERATIONS
The present invention has been described in particular detail with respect to one possible embodiment. Those of skill in the art will appreciate that the invention may be practiced in other embodiments. First, the particular naming of the components and variables, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, formats, or protocols. Also, the particular division of functionality between the various system components described herein is merely for purposes of example, and is not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead performed by a single component.
Some portions of above description present the features of the present invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules or by functional names, without loss of generality. As used herein, the term “module” refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software.
Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.
The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a non-transitory computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of computer-readable storage medium suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
The algorithms and operations presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent to those of skill in the art, along with equivalent variations. In addition, the present invention is not described with reference to any particular programming language. It is appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein, and any references to specific languages are provided for invention of enablement and best mode of the present invention.
The present invention is well suited to a wide variety of computer network systems over numerous topologies. Within this field, the configuration and management of large networks comprise storage devices and computers that are communicatively coupled to dissimilar computers and storage devices over a network, such as the Internet.
Finally, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
Claims
- A computer-implemented method for establishing a group gameplay session of an electronic game, the computer-implemented method comprising: receiving, from the electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session, and wherein the message is received responsive to a player of the electronic game selecting a user interface control within a user interface of the electronic game, code associated with the user interface control causing: sending of the message, verifying whether a game mediator, of which the game mediator process is an instance, is installed on a client device on which the code is executing, and responsive to failing to verify that the game mediator is installed, transferring control to an application store for installation of the game mediator;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;and configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game.
- The computer-implemented method of claim 1, wherein the lobby user interface visually indicates the electronic game and users currently in the gameplay session.
- The computer-implemented method of claim 1, wherein the lobby user interface comprises a mechanism to transfer control back to the electronic game.
- The computer-implemented method of claim 1, wherein the contextual information additionally comprises an identifier of the electronic game, and wherein the lobby user interface includes voice and video chat functionality.
- The computer-implemented method of claim 1, wherein the electronic game executes on a game client device different from a client device on which the game mediator process executes, and wherein receiving the message comprises the game mediator process obtaining a code displayed by the electronic game on the game client device.
- The computer-implemented method of claim 5, wherein the code is a QR code, and wherein the game mediator process obtains the code by scanning the QR code.
- The computer-implemented method of claim 1, further comprising: the game mediator process determining a number of players in the gameplay session;and the game mediator process selecting a type of communication mechanism for the gameplay session based on the determined number of players.
- The computer-implemented method of claim 7, wherein the selected type of communication mechanism is a chat interface, the computer-implemented method further comprising: receiving a designation from a player in the gameplay session of a subset of the users in the gameplay session;and spawning a separate lobby interface for the designated subset of the users.
- The computer-implemented method of claim 1, further comprising: identifying a computer network of a client device on which the electronic game is being executed;the electronic game querying a remote game mediator server for other client devices connected to the computer network;and game mediator processes on the other client devices joining the gameplay session, responsive to receiving instructions from the remote game mediator server.
- A non-transitory computer-readable storage medium containing instructions that when executed by a computer processor perform actions comprising: receiving, from an electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game;the game mediator process determining a number of players in the gameplay session;and the game mediator process selecting a type of communication mechanism for the gameplay session based on the determined number of players.
- The non-transitory computer-readable storage medium of claim 10, wherein the lobby user interface visually indicates the electronic game and users currently in the gameplay session.
- The non-transitory computer-readable storage medium of claim 10, wherein the lobby user interface comprises a mechanism to transfer control back to the electronic game.
- The non-transitory computer-readable storage medium of claim 10, wherein the contextual information additionally comprises an identifier of the electronic game, and wherein the lobby user interface includes voice and video chat functionality.
- The non-transitory computer-readable storage medium of claim 10, wherein the electronic game executes on a game client device different from a client device on which the game mediator process executes, and wherein receiving the message comprises the game mediator process obtaining a code displayed by the electronic game on the game client device.
- The non-transitory computer-readable storage medium of claim 14, wherein the code is a QR code, and wherein the game mediator process obtains the code by scanning the QR code.
- A non-transitory computer-readable storage medium containing instructions that when executed by the computer processor perform actions comprising: receiving, from an electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game;identifying a computer network of a client device on which the electronic game is being executed;the electronic game querying a remote game mediator server for other client devices connected to the computer network;and game mediator processes on the other client devices joining the gameplay session, responsive to receiving instructions from the remote game mediator server.
- The non-transitory computer-readable storage medium of claim 16, wherein the contextual information additionally comprises an identifier of the electronic game, and wherein the lobby user interface includes voice and video chat functionality.
- The non-transitory computer-readable storage medium of claim 16, wherein the electronic game executes on a game client device different from a client device on which the game mediator process executes, and wherein receiving the message comprises the game mediator process obtaining a code displayed by the electronic game on the game client device.
- A non-transitory computer-readable storage medium storing instructions that when executed by a computer processor perform actions comprising: receiving, from an electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session, and wherein the message is received responsive to a player of the electronic game selecting a user interface control within a user interface of the electronic game, code associated with the user interface control causing: sending of the message, verifying whether a game mediator, of which the game mediator process is an instance, is installed on a client device on which the code is executing, and responsive to failing to verify that the game mediator is installed, transferring control to an application store for installation of the game mediator;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;and configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game.
- A computer-implemented method comprising: receiving, from an electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game;the game mediator process determining a number of players in the gameplay session;and the game mediator process selecting a type of communication mechanism for the gameplay session based on the determined number of players.
- The computer-implemented method of claim 20, wherein the message is received responsive to a player of the electronic game selecting a user interface control within a user interface of the electronic game, code associated with the user interface control causing sending of the message.
- The computer-implemented method of claim 21, wherein the code associated with the user interface control additionally: verifies whether a game mediator, of which the game mediator process is an instance, is installed on a client device on which the code is executing;and responsive to failing to verify that the game mediator is installed, transfers control to an application store for installation of the game mediator.
- A computer-implemented method comprising: receiving, from an electronic game by a game mediator process, a message in a format defined by the game mediator process, the message comprising contextual information including an identifier assigned by the electronic game to correspond to a unique gameplay session of the electronic game, wherein the message is a deep link having a uniform resource locator (URL) with a first portion causing an operating system to transfer control to the game mediator process and a second portion specifying the identifier of the unique gameplay session;providing at least some of the contextual information to a remote game mediator server for establishment of the gameplay session;configuring, by the game mediator process, a lobby user interface to reflect the unique gameplay session and the electronic game;identifying a computer network of a client device on which the electronic game is being executed;the electronic game querying a remote game mediator server for other client devices connected to the computer network;and game mediator processes on the other client devices joining the gameplay session, responsive to receiving instructions from the remote game mediator server.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.