U.S. Pat. No. 9,259,652
TIME-SHIFTED MULTIPLAYER GAME
AssigneeElectronic Arts Inc.
Issue DateMarch 6, 2013
Issued February 16, 2016, to Electronic Arts Inc.
Priority Date March 6, 2013
Summary:
In games, such as racing games, a player competes against other opponents. In a single player game, a player may race against cars controlled by artificial intelligence. AI cars are controlled according to pre-set specifications. In real-time multiplayer games, a player competes with live players. Real-time multiplayer games may increase interest as competing against a real-life person may be more entertaining than competing against AI opponents. Players may also compete against friends, which may further increase the interest and cause a player to play the game more. However, there are times when a player’s friends are not online. Thus, the player can play with random people or play a game against AI opponents. In some cases, when faced with this scenario, a player might not be as interested in the game or may decide not to play.
U.S. Patent No. 9,259,652 helps to make players more interested in the game when their friends may not be online. The method, after receiving from a player the selection to participate in a game, sends a request to a server to determine if any players are eligible to compete in a multiplayer game. If there is, that new player is selected as an opponent. This opponent is chosen based on the timing of available players. If there is no player available, an AI player is created, configured to match the player’s skill. After the event, the time is recorded and the player’s skill is calculated. This, as well as the player’s time, is uploaded to the server. This ensures that a player is always challenged and having fun, even when their friends may not be online.
Abstract:
In one embodiment, a method provides a game for a first player. The method receives timing information for a second player that competed in a first instance of the game participated in by the second player and determines a set of parameters for an opponent in a second instance of the game based on the timing information. The second player started competing in the first instance of the game before the second instance of the game is started. Then, the opponent is created based on the set of parameters for the second instance of the game. After which, the method provides the second instance of the game in which the first player competes with the opponent. The opponent is automatically controlled in the second instance of the game by a game controller to perform according to the set of parameters.
Illustrative Claim:
1. A method of providing a game for a first player, the method comprising: receiving, by a computing device, timing information for a second player that competed in a first instance of the game participated in by the second player, wherein the timing information is received based on the second player competing in a portion of the game, the portion comprising a subset of a completion of the game; receiving, by a computing device, a skill level for the second player that competed in the first instance of the game participated in by the second player, wherein the skill level is based on characteristics of game play; determining, by the computing device, a set of parameters for an artificial intelligence (AI) controlled opponent in a second instance of the game based on the timing information and the skill level, wherein the second player started competing in the first instance of the game before the second instance of the game is started; creating, by the computing device, the AI controlled opponent based on the set of parameters for the second instance of the game; and providing, by the computing device, the second instance of the game in which the first player competes with the AI controlled opponent, wherein a performance of the AI controlled opponent is automatically controlled during the second instance of the game, wherein providing the second instance of the game comprises dynamically altering the set of parameters during game play of the second instance of the game to configure the AI controlled opponent to achieve a same time in the second instance of the game as that received by the second player in the first instance of the game.
Research By: Rachel Johns
Illustrative Figure
Abstract
In one embodiment, a method provides a game for a first player. The method receives timing information for a second player that competed in a first instance of the game participated in by the second player and determines a set of parameters for an opponent in a second instance of the game based on the timing information. The second player started competing in the first instance of the game before the second instance of the game is started. Then, the opponent is created based on the set of parameters for the second instance of the game. After which, the method provides the second instance of the game in which the first player competes with the opponent. The opponent is automatically controlled in the second instance of the game by a game controller to perform according to the set of parameters.
Description
DETAILED DESCRIPTION Described herein are techniques for a time-shifted multi-player game. In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of particular embodiments. Particular embodiments as defined by the claims may include some or all of the features in these examples alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein. FIG. 1depicts a simplified system100for providing a time-shifted multiplayer game according to one embodiment. System100includes game devices102and a server104. Game devices102may be computing devices, such as mobile phones, smartphones, tablet computing devices, personal computers, game consoles, and other devices that can provide a game. Server104includes a computing device that can communicate with game devices102through a network (not shown). Although one instance of server104is shown, multiple instances may be used and functionality described with respect to server104may be distributed across many servers104. Each game device102may include a game controller110that provides the game. For example, game controller110may be configured to set up the game and allow a player to play the game. Although game controller110is shown in game device102, functions described with respect to game controller110may be distributed across many devices, such as in server104. Game devices102provide a game that various players can play. The game may be a timed game in which a player competes to receive a time in the game. The time may be when an instance of the game is completed or a portion of the instance of the game is completed. For example, a racing game, such as a car racing game, track and field game, downhill skiing game, or other timed events, allows the player to compete against other opponents. The game may offer various events, such as ...
DETAILED DESCRIPTION
Described herein are techniques for a time-shifted multi-player game. In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of particular embodiments. Particular embodiments as defined by the claims may include some or all of the features in these examples alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.
FIG. 1depicts a simplified system100for providing a time-shifted multiplayer game according to one embodiment. System100includes game devices102and a server104. Game devices102may be computing devices, such as mobile phones, smartphones, tablet computing devices, personal computers, game consoles, and other devices that can provide a game. Server104includes a computing device that can communicate with game devices102through a network (not shown). Although one instance of server104is shown, multiple instances may be used and functionality described with respect to server104may be distributed across many servers104. Each game device102may include a game controller110that provides the game. For example, game controller110may be configured to set up the game and allow a player to play the game. Although game controller110is shown in game device102, functions described with respect to game controller110may be distributed across many devices, such as in server104.
Game devices102provide a game that various players can play. The game may be a timed game in which a player competes to receive a time in the game. The time may be when an instance of the game is completed or a portion of the instance of the game is completed. For example, a racing game, such as a car racing game, track and field game, downhill skiing game, or other timed events, allows the player to compete against other opponents. The game may offer various events, such as race courses, in which the player may control a game entity, such as a car, person, player, or other racing entity, around the course. In one example, a player may select various tracks in which the player can then control a car in competing against other opponents. Times are recorded may correspond to a complete race or portions of the race, such as each lap may be timed. When the race is completed, the time the player took to complete the race is recorded.
In one embodiment, the game allows a first player to compete against other players in a time-shifted, multiplayer fashion. For example, a second player may complete a first instance of the game using game device102-1. In this game, the second player may receive a first time, such as the second player may receive a time of 3 minutes to complete a car race. Server104would store the second player's time in storage106as “game information”. The game information may include the second player's time and other information such as identifying information for the second player (e.g., a user ID), the skill level or performance level, and the type of race.
When a first player wants to then play a second instance of the game, particular embodiments allow the first player to compete in a game in which one of the opponents is configured based on the second player's time (e.g., from the already-completed game). For example, as will be described in more detail below, the time the second player received in the first instance of the game is used to configure an artificial intelligence (AI)-controlled opponent in the second instance of the game. Then, the first player competes against the AI-controlled opponent in the second instance of the game. This gives the first player the simulated experience of playing against the second player as the first player can see the opponent and can race against them in the second instance of the game. Also, the AI-controlled opponent based on the second player can impact the race of the first player, which may lead to a more engaging experience for the first player. Thus, a multiplayer game is provided in a time-shifted manner as the second player is allowed to compete in an instance of a game before the first player competes in another instance of the game.
In one embodiment, a time-shifted multiplayer engine108determines when the first player initiates an instance of the game. Time-shifted multiplayer engine108may then send a request to server104to determine if any possible opponents for the first player have corresponding times for the same game. For example, time-shifted multiplayer engine108may determine if any friends of the first player have completed the game. Although friends are discussed, it will be understood that times for friends may include other users, such as random users that the first player does not know.
If there are any friends that have completed the game previously, time-shifted multiplayer engine108receives timing information for the friends' times. For discussion purposes, only one friend's time will be discussed, but multiple times may be used to create additional opponents. Time-shifted multiplayer engine108uses the received timing information to configure an opponent to compete against the first player in the second instance of the game.
In one embodiment, the AI-controlled opponent is configured with a set of parameters that attempts to control the opponent to perform similarly to how the second player performed in the previous instance of the game. For example, the AI-controlled opponent is controlled to attempt to achieve the same time as the second player. In one example, time-shifted multiplayer engine108sets initial conditions for the opponent where the initial conditions are determined to be conditions that may cause the AI-controlled opponent to perform such that a time similar to the second player's time is received. However, because only initial conditions are set and game play may vary (e.g., the opponent may crash), the ultimate time that the AI-controlled opponent receives may vary. In another example, game controller110dynamically adjusts characteristics of the game, such as the set of parameters, based on the game play such that the AI-controlled opponent always receives a time similar to (e.g., the same as) the second player's time.
FIG. 2Adepicts a simplified flowchart200of a method for providing a time-shifted multiplayer game according to one embodiment. At202, game controller110receives a selection of an event for a game. For example, the event may be a type of timed event, such as a racetrack. The event may also include other characteristics, such as a length, number of laps, and number of opponents.
At204, game controller110sends a request to server104to determine if any other players are eligible for competing in a time-shifted multiplayer game, such as the request is for friends of the first player. For example, the first player may have a friends' list that lists friends of the first player. In one embodiment, server104maintains each player's friends list centrally. When server104receives the request, server104can retrieve the first player's friends list. In another embodiment, game device102sends a friends list for the first player to server104. In one embodiment, the friends list includes players that have been added as friends by the first player. In other embodiments, players that are not friends may be used, such as randomly selected players or players determined to be of a similar skill level as the first player.
Once determining the friend's list, server104may then determine whether any friends of the first player have played the same game. For example, server104may determine any friends of the player that have an eligible time. The eligible time may be for a completed game, or may be a time for a portion of a game, such as a lap or multiple laps. Also, the eligible times may be for events that have been completed during a certain time period, such as since the last time the player logged in. Thus, only new times are used. Also, server104uses the event selected by the first player to determine a time by a friend that has completed the same event. In this case, the eligible times may be event-specific. If a friend had completed a different event, such as a different racetrack, then that friend's time is not applicable to this request.
At206, game controller110determines if timing information for a second player (e.g., a friend's) was received. If not (e.g., no friends had completed the same event or game device102is offline and thus could not connect to server104), at208, game controller110creates local opponents for the event. For example, game controller110creates a number of cars that will race in the same race as the first player.
At210, game controller110configures the local opponents to match the user's skill. For example, the first player may be associated with a certain skill level, such as a rating of how the user has performed previously. In one example, the skill rating may be a value from0to100. Local opponents are set up to be around the user's skill level. For example, if the user's skill level is60, game controller110creates opponents from the40to70skill range.
Assuming that server104determines a friend had completed the event, server104sends timing information for the time that the friend received in completing the instance of the game. For example, server104sends a time of 3:00 minutes and a user ID for the friend to game controller110. Server104may also send other information, such as possibly a skill rating or performance level for the friend. The skill rating may be a rating of how the friend performs in the game. For example, the friend may take corners tightly on a racetrack or may drive on the grass a lot. The performance level may be a level of performance characteristics in the game, such as a race car may have a certain level of performance, such as a high acceleration, better braking, or a higher top speed.
At212, time-shifted multiplayer engine108selects a second player to create as opponents in the selected event assuming timing information for one or more second player's previous games was received from server104. For example, in one embodiment, only one friend may be an opponent that is racing the first player in the event. However, the first player may have multiple friends that have previously raced and they may all race in the selected event. For example, a race track may have a possibility of 6 opponents (e.g., 6 opponent cars) and 6 friends may be selected. For discussion purposes, it will be assumed that one friend is selected to compete as an opponent in the selected event.
At214, time-shifted multiplayer engine108creates an opponent based on the timing information for the second player. As was described above and will be described in more detail below, the opponent is created and configured with a set of parameters based on the timing information received for the second player. For example, if the second player had received a time of 3:00 minutes in a previous instance of the game in which the second player completed, then a car that is configured to complete the selected event in 3 minutes is configured. The configuration process of the opponent will be described in more detail below.
At216, game controller110provides the selected event in which the first player competes (either against local opponents and/or with the opponent created based on the second player's time). For example, the first player controls a first car in a race and an opponent based on the second player's time is controlled via AI by game controller110. The opponent is AI-controlled using the set of parameters that were configured based on the second player's timing information. Also, characteristics of the second player's game may also be used. For example, if the second player drove on the grass a lot in the first instance of the game, the AI controlled opponent may drive on the grass a lot.
At218, the selected event finishes and game controller110records a time T for the first player to complete the event. For example, in a race, the first player controls a first car and when the first player maneuvers the car around the racetrack a number of times to complete the race, game controller110records that time.
At220, game controller110calculates a skill rating S. The skill rating may depend on various factors, such as the time T, the configuration of the first player's game entity (e.g., the car and what features the car has), the characteristics of game play (e.g., how well the first player controlled the first car—drove on the grass, crashed, etc.), and the place the first player came in in the event.
At222, game controller110uploads the time T and the skill S to server104. In this case, the time T and skill S may be used to participate in other time-shifted multiplayer games with other friends of the first player.
FIG. 2Bdepicts a timeline for the time-shifted multiplayer game according to one embodiment. As a time T1, the second player competes in the first game. Then, at a time T2, the first game ends and a time for the second player is recorded. At a time T3, the first player initiates the second game. The second game is started after the completion of the first game as is shown. At time T4, the second game is configured with a time-shifted opponent using the first player's time and the game is started. As shown, the first and second games are not played at the same time, but the second game simulates a multiplayer game using the second player's time.
Different methods for mapping timing information for a second player's time received in a previous game to an AI-controlled opponent may be appreciated. Particular embodiments map from the second player's timing information to a set of parameters that will be used to control the opponent.FIG. 3depicts an example of a mapping table300according to one embodiment. Mapping table300includes entries for various opponents and the times in which the opponents are predicted to complete an event based on a configured set of parameters. In mapping table300, the opponents are cars, and the set of parameters includes a skill level. The prediction of the times to complete an event may be determined based on an initial configuration stage. In this case, for an event, such as a specific racetrack, a simulated race with multiple cars of different skill levels may be performed. The times in which the cars complete the race are then recorded. Multiple races may be performed to simulate actual game conditions to predict the times for the various cars. The predicted times are then stored in mapping table300. The initial configuration stage may be performed before the first and second games are performed.
In table300, a relationship between skill level and the time received is shown. In one embodiment, the relationship is linear in that as skill level is adjusted up or down, the times adjust up or down, respectively, in response. For example, a car #1has a skill level of20and receives a time of 10:00 minutes, car #2has a skill level of40and receives a time of 8:00 minutes, and so on. As can be seen, as the skill level increases, the times generally decrease. Although a higher skill level may not always result in a lower time in a race, in general, a higher skill level means that a car performs better and most likely results in a lower time. It will be recognized that game play may affect the time, such as a car may crash, which causes the car to receive a higher time. In the initial configuration phase, multiple races may be run to predict an average time for each car of each skill level.
Time-shifted multiplayer engine108uses mapping table300to interpolate a skill level for an opponent. For example, if the timing information for the second player in the previous game was five minutes, then time-shifted multiplayer engine108may use the times for car #3and car #4and their respective skill levels to determine a skill level for the opponent. In this case, because the time of 5 minutes is in between the time of 4 minutes and 6:30 minutes and the respective skill levels for car #4and car #3are80and65, time-shifted multiplayer engine108interpolates that the skill level for the opponent in the present game should be between the range of 65-80. For example, time-shifted multiplayer engine108determines the interpolated skill level should be71based on a ratio between the predicted times and skill levels. Other methods for interpolating the skill level will also be appreciated.
In one embodiment, a performance level may also be used in addition to the skill level. As described above, the performance level may be based on the type of game entity that is being used in the game. For example, the second player's car that was used in the previous race may have certain features, such as upgrades, that contribute to the performance level. In one example, the second player's car may have a certain level of acceleration, braking ability, or top speed. The performance level for the car depends on aspects of these features. Different performance levels affect the time to complete the race. For example, a car that has a higher acceleration and higher top speed may be more likely to complete a race in a faster time than another car.
In one embodiment, time-shifted multiplayer engine108may match the performance level associated with the second player to a performance level in a mapping table. Thus, the skill level and times for cars in the mapping table match the performance level of the second player.FIG. 4shows an example of mapping tables300-1and300-2that include performance levels according to one embodiment. Mapping table300-1is the same mapping table as depicted inFIG. 3except that the performance level is defined as being equal to80. In this case, all the cars in mapping table300-1are associated with a performance level of80. Mapping table300-2, however, is associated with a performance level of90. Thus, all cars in mapping table300-2are associated with this performance level. As discussed above, a higher performance level means the cars perform at a higher level and thus complete a race with faster times in most cases. As shown in mapping table300-2, cars #1-#4have completed the race in faster times than cars #1-#4in mapping table300-1even though the cars have the same respective skill level.
If the second player had a performance level of90and completed the race in a time of5minutes, then game controller110would interpolate between the times and skill levels for car #2and car #3in mapping table300-2. This results in a skill level between the range of40-65, which is different from the skill level determined above with respect toFIG. 3. That is, if the second player had a better car, but completed the race in the same time, this would indicate that the user would have a lower skill level. Accordingly, the performance level may affect the skill level that time-shifted multiplayer engine108determines for the opponent.
FIG. 5depicts a more detailed example of time-shifted multiplayer engine108according to one embodiment. A timing information receiver502receives timing information and performance levels for friends of the first player. Timing information receiver502may then select one or more of the friends to create as opponents to the first player. When selected, timing information receiver502sends the timing information and performance level to a mapping engine504. Mapping engine504may access a mapping table in storage506depending on the performance level received. For example, a table determiner508takes the performance level and determines a mapping table in storage506. Although mapping tables are discussed, it will be understood that table determiner508may query a database to determine the needed information without using a mapping table.
An interpolation engine510then uses the timing information to interpolate a skill level based on the determined mapping table. As discussed above, the times for different cars with respective skill levels in a mapping table300are used to interpolate a skill level for the friend. Once the skill level is determined, interpolation engine510outputs the skill level.
Once the skill level is determined, game controller110may provide the game using different methods. For example, game controller110may set the skill level as an initial condition for an opponent. Game controller110may then control the opponent based on the skill level, but game play may dictate what time the opponent receives in the event. In other embodiments, game controller110may set the skill level, but depending on game play, game controller110may dynamically adjust the skill level to cause the opponent to achieve the time that the friend received.FIG. 6depicts a simplified flowchart600for providing a game according to one embodiment. At602, game controller110sets the skill level as an initial condition in the game for the opponent. The initial condition is then used to control a car in a race.
At604, game controller110provides the game in which the first player competes with the opponent. For example, the first player may be controlling a first car and the opponent is being automatically controlled in a second car based on the skill level that was set as an initial condition. During game play, certain random events may occur, such as the first player may run into the opponent, pass the opponent, etc. These events affect the play of the opponent. For example, if the opponent crashes, then the predicted time associated with the opponent in which the skill level was set may not be achievable.
At606, game controller110determines if dynamic adjustment of the initial condition is configured. In some cases, game controller110is configured to let the aspects of game play dictate the time of the opponent. Thus, the opponent may not achieve the same time as the second player's time in this instance of the game. However, if dynamic adjustment is configured, at608, game controller110may adjust the skill level for the opponent. For example, if game controller110determines that the opponent is behind the time achieved by the second player, then game controller110may increase the skill level. This causes the opponent to perform at a higher level and thus may cause the time to complete the event to decrease. Other methods of adjusting the opponent to achieve the predicted time may also be appreciated, such as game controller110may cause a car to have upgraded features, such as a higher top speed or acceleration during the race.
At610, game controller110determines if the game has ended. If not, the process reiterates and the game continues to be provided and dynamic adjustment continues to be evaluated. At612, if the game has ended, game controller110records the time.
In some cases, certain game types may not record a time. For instance, a game type may be an elimination mode, wherein players are eliminated every 20 seconds. In this case, the race time is fixed (e.g., 7×20 seconds), and thus comparisons on time may be compatible. In these scenarios, particular embodiments may estimate the skill that the second player played at for that specific event. This estimation is based on how the second player competed against opponents. For instance, if the second player was in an elimination type game against opponents with skill levels of60,61,62,63, and64, and beat opponents with the skill levels of60,61, and62, but not the opponents with the skill levels of63and64, particular embodiments may estimate the second player's skill level for that particular instance of the event as63. That is, the skill level is similar to the highest skill level of a beaten opponent and the lowest skill level of an opponent that beat the second player. Particular embodiments may also use interpolation if the second player beat all opponents by a large margin (e.g., the highest skilled opponent was skill72but the second player was half a lap ahead when winning so particular embodiments might estimate that the second player is skill75or higher rather than73). Accordingly, timing information may be the skill levels of the opponents in the race and where the second player finished in the race. The skill level may be sent as timing information in this case. Time-shifted multiplayer engine108may then estimate the skill level based on the results of the last game.
Accordingly, particular embodiments provide a time-shifted multiplayer game. A friend may compete in a first game and achieve a time for completing an event. Later on, a second player may decide to compete in another event. To give the experience of a multiplayer game, an opponent is configured based on the friend's game and the first player competes against the opponent. This makes the game more interesting as the first player attempts to beat the opponent.
FIG. 7illustrates an example of a special purpose computer system700configured to provide a time-shifted multiplayer game according to one embodiment. Computer system700includes a bus702, network interface704, a computer processor706, a memory708, a storage device710, and a display712.
Bus702may be a communication mechanism for communicating information. Computer processor704may execute computer programs stored in memory708or storage device708. Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single computer system700or multiple computer systems700. Further, multiple processors706may be used.
Memory708may store instructions, such as source code or binary code, for performing the techniques described above. Memory708may also be used for storing variables or other intermediate information during execution of instructions to be executed by processor706. Examples of memory708include random access memory (RAM), read only memory (ROM), or both.
Storage device710may also store instructions, such as source code or binary code, for performing the techniques described above. Storage device710may additionally store data used and manipulated by computer processor706. For example, storage device710may be a database that is accessed by computer system700. Other examples of storage device710include random access memory (RAM), read only memory (ROM), a hard drive, a magnetic disk, an optical disk, a CD-ROM, a DVD, a flash memory, a USB memory card, or any other medium from which a computer can read.
Memory708or storage device710may be an example of a non-transitory computer-readable storage medium for use by or in connection with computer system700. The computer-readable storage medium contains instructions for controlling a computer system to be operable to perform functions described by particular embodiments. The instructions, when executed by one or more computer processors, may be operable to perform that which is described in particular embodiments.
Computer system700includes a display712for displaying information to a computer user. Display712may display a user interface used by a user to interact with computer system700.
Computer system700also includes a network interface704to provide data communication connection over a network, such as a local area network (LAN) or wide area network (WAN). Wireless networks may also be used. In any such implementation, network interface704sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.
Computer system700can send and receive information through network interface704across a network714, which may be an Intranet or the Internet. Computer system700may interact with other computer systems700through network714. In some examples, client-server communications occur through network714. Also, implementations of particular embodiments may be distributed across computer systems700through network714.
Particular embodiments may be implemented in a non-transitory computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or machine. The computer-readable storage medium contains instructions for controlling a computer system to perform a method described by particular embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be operable to perform that which is described in particular embodiments.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
The above description illustrates various embodiments along with examples of how aspects of particular embodiments may be implemented. The above examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of particular embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope hereof as defined by the claims.
Claims
- A method of providing a game for a first player, the method comprising: receiving, by a computing device, timing information for a second player that competed in a first instance of the game participated in by the second player, wherein the timing information is received based on the second player competing in a portion of the game, the portion comprising a subset of a completion of the game;receiving, by a computing device, a skill level for the second player that competed in the first instance of the game participated in by the second player, wherein the skill level is based on characteristics of game play;determining, by the computing device, a set of parameters for an artificial intelligence (AI) controlled opponent in a second instance of the game based on the timing information and the skill level, wherein the second player started competing in the first instance of the game before the second instance of the game is started;creating, by the computing device, the AI controlled opponent based on the set of parameters for the second instance of the game;and providing, by the computing device, the second instance of the game in which the first player competes with the AI controlled opponent, wherein a performance of the AI controlled opponent is automatically controlled during the second instance of the game, wherein providing the second instance of the game comprises dynamically altering the set of parameters during game play of the second instance of the game to configure the AI controlled opponent to achieve a same time in the second instance of the game as that received by the second player in the first instance of the game.
- The method of claim 1 , wherein providing the second instance of the game comprises: setting the set of parameters as an initial condition for the AI controlled opponent, wherein a time for the AI controlled opponent in the second instance of the game depends on game play of the second instance of the game.
- The method of claim 2 , wherein the time for the AI controlled opponent in the second instance of the game is different from the time received by the second player in the first instance of the game.
- The method of claim 1 , wherein determining the set of parameters comprises: mapping the timing information for the second player to the skill level for the AI controlled opponent, wherein the skill level is based on a prediction that the AI controlled opponent will achieve a time received by the second player in the first instance of the game.
- The method of claim 4 , further comprising: determining a performance level used in the first instance of the game by the second player;and applying the performance level in the mapping to determine the skill level such that the AI controlled opponent is performing at a similar performance level used in the first instance of the game.
- The method of claim 1 , wherein determining the set of parameters comprises: mapping skill levels in the timing information for a set of opponents in the first instance of the game to the skill level for the AI controlled opponent in the second instance of the game, wherein the skill level for the AI controlled opponent is based on a result of the first instance of the game between the set of opponents and the second player.
- The method of claim 1 , further comprising: simulating a plurality of opponents in a simulated game to determine a plurality of predicted times for completing the game for the plurality of opponents, wherein each of the plurality of opponents is associated with a different set of parameters;and determining the set of parameters for the AI controlled opponent in the second instance of the game using at least a portion of the set of parameters associated with the plurality of opponents and at least a portion of the plurality of predicted times.
- The method of claim 7 , wherein determining the set of parameters comprises: determining one or more opponents in the plurality of opponents based on a comparison of the timing information for the second player and the predicted times for the one or more opponents;and interpolating the skill level for the AI controlled opponent in the second instance of the game based on the predicted times and the skill levels for the one or more opponents and the timing information for the second player.
- The method of claim 1 , further comprising: Receiving the characteristics of game play for the first instance of the first game;and using the characteristics of game play to control the AI controlled opponent in the second instance of the game.
- The method of claim 1 , wherein: the game comprises a car racing game, the second player raced a first car in the first instance of the car racing game, the first player is racing a second car in the second instance of the car racing game;and the AI controlled opponent is racing a third car in the second instance of the car racing game.
- A method of providing a racing game for a first player, the method comprising: receiving, by a computing device, a second player's timing information for a race using a first racing entity in a first instance of the racing game participated in by the second player, wherein the timing information is received based on the second player competing in the portion of the racing game, the portion comprising a subset of the completion of the racing game;mapping, by the computing device, the second player's time to the skill level for a second racing entity in a second instance of the racing game based on the characteristics of game play and a mapping table of skill levels to predicted times for the racing game for opponents in the racing game, wherein the first instance of the racing game is completed by the second player before the second instance of the racing game is started;creating, by the computing device, the second racing entity for the second instance of the racing game based on the skill level, wherein creating comprises: simulating a plurality of opponents in a simulated game to determine the predicted times for completing the racing game for the plurality of opponents, wherein each of the plurality of opponents is associated with a different skill level;and determining a set of parameters for the second racing entity in the second instance of the game using the skill levels associated with the plurality of opponents and at least a portion of the predicted times for completing the racing game, wherein determining the set of parameters comprises: determining one or more opponents in the plurality of opponents based on a comparison of the timing information for the second player's time and the predicted times for the one or more opponents;and interpolating the skill level for the second racing entity in the second instance of the game based on the associated predicted times and skill levels for the one or more opponents and the second player's time;and providing, by the computing device, the second instance of the racing game in which the first player races a third racing entity that competes with the second racing entity, wherein the second racing entity is automatically controlled in the second instance of the racing game by a game controller to perform according to the skill level, and wherein in providing the second instance of the game, the method further comprises dynamically altering the skill level of the second racing entity during game play of the second instance of the game such that the second racing entity achieves the second player's time in the second instance of the game.
- The method of claim 11 , wherein providing the second instance of the game comprises: setting the skill level as an initial condition for the second racing entity, wherein the time for the second racing entity in the second instance of the game depends on game play of the second instance of the game.
- The method of claim 12 , wherein the time for the second racing entity in the second instance of the game is different from the second player's time in the first instance of the game.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.
