Game state save, transfer and resume for cloud gaming
24 claims: 4 independent, 20 dependent
- 1クラウドコントローラを有し、前記クラウドコントローラに結合されたストレージデバイスを有し、ネットワークによって前記クラウドコントローラに結合された複数のゲームコンソールを有し、前記複数のゲームコンソールのそれぞれは、ハードウェアレイヤ、前記ハードウェアレイヤとインタラクションを行うように構成され、ステートマネージャクライアントを含むオペレーティングシステムレイヤ、前記オペレーティングシステムレイヤの少なくとも一部及び前記ハードウェアレイヤの一部とインタラクションを行うように構成され、ゲーミングアプリケーションを含むアプリケーションレイヤ、を備えるものであり、前記ステートマネージャクライアントは、前記ゲーミングアプリケーションが選択された中断ポイントで中断されたとき、前記ゲームコンソールのゲームステートデータをキャプチャし、前記キャプチャしたゲームステートデータを保管するように構成され、前記選択された中断ポイントは、事前定義された停止ポイントではなく、前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記 ゲーミングアプリケーション に関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、クラウドゲーミングシステム。
- 2前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項1に記載のクラウドゲーミングシステム。
- 3前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェアに保管された任意のデータまたは状況を含む、請求項1又は2に記載のクラウドゲーミングシステム。
- 4前記ステートマネージャクライアントはさらに、前記保管されキャプチャされたゲームステートデータを前記ゲームコンソールに適用し、前記ゲーミングアプリケーションを前記ゲーミングアプリケーションが中断されたポイントで再開するように構成され、前記 ゲーミングアプリケーション の再開には、前記ゲームコンソールにゲームステートデータを適用し、実行可能なゲーミングアプリケーションを生成することが含まれる、請求項1に記載のクラウドゲーミングシステム。
- 5前記クラウドコントローラは、複数の記憶されたゲーミングアプリケーションと、複数のユーザの各々1人に関するアカウントデータを含むユーザアカウントデータベースと、を含む、請求項1に記載のクラウドゲーミングシステム。
- 6前記アカウントデータは、複数のユーザのうちの選択されたユーザに関する中断したゲーミングアプリケーション及び前記中断したゲーミングアプリケーションに関する前記ゲームステートデータの保管場所のリストを含む、請求項5に記載のクラウドゲーミングシステム。
- 7前記クラウドコントローラは、前記選択されたユーザに関する認証アクセスを判定するように構成された認証マネージャを含む、請求項6に記載のクラウドゲーミングシステム。
- 8前記複数のゲームコンソールの各々1つの前記ハードウェアレイヤは、プロセッサと、データバスによって前記プロセッサに結合されたグラフィックプロセッサと、を含む、請求項1に記載のクラウドゲーミングシステム。
- 9前記複数のゲームコンソールの各々1つの前記ハードウェアレイヤは、前記データバスに結合されたコプロセッサをさらに含み、前記複数のゲームコンソールの各々1つの前記コプロセッサは、ゲームステートデータをキャプチャするように構成される、請求項8に記載のクラウドゲーミングシステム。
- 10前記クラウドコントローラ及び前記複数のゲームコンソールの第1の部分は、第1のデータセンタに配置される、請求項1に記載のクラウドゲーミングシステム。
- 11前記クラウドコントローラに結合された前記ストレージデバイスは、ストレージサーバ内に含まれ、前記クラウドコントローラは、第1のデータセンター内に配置され、前記ストレージサーバは、第3のデータセンター内に配置される、請求項1に記載のクラウドゲーミングシステム。
- 12前記ゲームステートデータは、アプリケーションステートデータを含む、請求項1に記載のクラウドゲーミングシステム。
- 13クラウドゲーミングシステムにおいてゲームを中断するための方法であって、第1のクライアント デバイス からゲーミングリクエストを受信し、前記ゲーミングリクエストは、クラウドゲーミングシステム内のクラウドコントローラで受信される前記ゲーミングリクエストを受信し、前記クラウドゲーミングシステム内の第1のゲームコンソールに前記第1のクライアントデバイスを割り当て、前記第1のクライアントデバイスからゲーム実行リクエストを受信し、前記第1のゲームコンソール上で前記ゲームを実行し、前記第1のクライアントデバイスから、前記ゲームを選択された中断ポイントで中断するためのリクエストを受信し、前記選択された中断ポイントは、事前定義された停止ポイントではないものであり、前記ゲーム内の前記選択された中断ポイントで前記第1のゲームコンソール上の前記ゲームを中断し、前記第1のゲームコンソール上の前記中断されたゲームに関するゲームステートデータをキャプチャし、前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、前記選択された中断ポイントでの前記ゲームの再開では、前記第1のゲームコンソールまたは他のゲームコンソールのいずれか一方において行うことが可能であり、前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、方法。
- 14前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項13に記載の方法。
- 15前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェア内にハードウェアに保管された任意のデータまたは状況を含む、請求項13又は14に記載の方法。
- 16前記第1のゲームコンソールは、前記ゲームステートデータをキャプチャし、前記第1のゲームコンソールが前記ゲームの実行を終わらせることを可能にし、その結果、前記第1のゲームコンソールは、別のユーザに割り当てるために利用可能である、請求項13に記載の方法。
- 17前記クラウドコントローラは、前記第1のゲームコンソールから前記ゲームステートデータをキャプチャする、請求項13に記載の方法。
- 18更に、前記ゲームステートデータを取り出し、前記ゲームステートデータを前記クラウドゲーミングシステム内に含まれる選択したゲームコンソールに適用し、前記ゲームにおける前記選択されたポイントで前記ゲームを再開する、請求項13に記載の方法。
- 19前記ゲームステートデータの前記選択したゲームコンソールへの割り当てに、前記ゲームステートデータのそれぞれの部分を前記選択されたゲームコンソール内のそれぞれの場所に読み込むことが含まれる、請求項18に記載の方法。
- 20前記選択されたゲームコンソールは、第2のゲームコンソールである、請求項18に記載の方法。
- 21前記ゲームステートデータのキャプチャでは、アプリケーションステートデータがキャプチャされる、請求項13に記載の方法。
- 22前記ゲームステートデータのキャプチャでは、前記ゲームステートデータを保管し、前記保管されたゲームステートデータの保管場所によって対応するユーザアカウント情報を更新する、請求項13に記載の方法。
- 23第1のユーザから認証リクエストを受信し、前記認証リクエストは、前記クラウドコントローラにおいて受信され、前記第1のユーザに関する認証アクセスを判定し、前記第1のユーザのアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、前記第1のクライアントデバイスの前記第1のゲームコンソールへの割り当てでは、前記第1のユーザを前記第1のゲームコンソールに割り当て、前記第1のゲームコンソールに中断したゲームステートデータをロードする、請求項13に記載の方法。
- 24前記第1のユーザから認証リクエストを受信し、前記認証リクエストが前記クラウドコントローラにおいて受信され、前記第1のユーザに関する認証アクセスを判定し、前記第1のクライアントデバイスの前記第1のゲームコンソールへの割り当てでは、前記第1のユーザを前記第1のゲームコンソールに割り当て、前記第1のユーザアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、ゲームステートデータを取り出し、前記クラウドコントローラにおいてゲームステートデータ共有リクエストを受信し、前記ゲームステートデータ共有リクエストは、前記第1のユーザから受信され、かつ前記第1のユーザのゲームステートデータを第2のユーザと共有するためのリクエストであり、前記ゲームステートデータを、前記第2のユーザに割り当てられた第2のゲームコンソールと共有する、請求項 23 に記載の方法。
Independent claims24
105 paragraphs, as filed
This application claims the priority of US Provisional Patent Application No. 62 / 099,027, filed December 31, 2014, entitled "Game State Save, Transfer and Resume for Cloud Gaming". , Incorporated herein by reference in its entirety for all purposes.
The present invention generally relates to a cloud gaming environment, more specifically a system for saving an ongoing game state at any point in the game or at any point in time, and then restarting the game at the same point in the game. Regarding the method.
Cloud gaming is driven by a system of networked servers that are accessible to users via the Internet. These servers host gaming sessions for multiple users. Typically, the user is assigned to a virtual or physical server for hosting the user's gameplay. Many games are complex and can last for uncertain times. Users often interrupt their games so that they can take breaks for many different reasons.
A game typically includes regularly predefined stop points programmed into the game. For example, a predefined stop point is often the end of each scene or level of action in the game. At such predefined stop points, the game saves data from gameplay such as levels reached, achievements acquired, and performs other housekeeping functions. If the user wants to play the game further, either after or after the stop point, the game system will restart or restart the game, for example at the next level or stage. When the user wants to interrupt the game, the game can be interrupted, but the game console must remain stationary and wait for subsequent user input. This is, of course, when the user wants to take a short break. However, if the user wants to pause for a while and stop playing, it is inefficient and impractical to keep spinning the game console's discs for hours or days and wait for the user to resume.
The game content between the predefined break points includes unique complex and interactive graphics and actions that are unique to the user-specific instance of play. Unique complex and interactive graphics and actions are embodied in a large number of different unique game state data. Saving gameplay at one of the unique complex and interactive graphics and action points in the game is correspondingly complex and can be hampered by incompatibilities with various hardware and software versions. many.
As pointed out above, it is possible to perform the interruption work of the cloud gaming server that hosts the user's gameplay, but it unnecessarily consumes the time and energy of the cloud gaming server, and the interrupted user's gameplay While suspended, any other user will not be able to use the cloud gaming server. In addition, if the user never resumes his gameplay, the server will be dedicated to the user who never returns. As a result, current technology limits gameplay interruptions to predefined stop points.
In addition, if the user stops gameplay at a specific point in the game prior to the stop point (ie, the end of the battle, the end of the level, the end of the scene, etc.), the gameplay will be the last saved stop point. It may be reset to (ie, the state before the started level). Such a reset would erase the user's gameplay during the most recently passed predefined stop points.
The embodiment of the present invention is based on such a background.
<p>In general, the invention thus provides a system and method for interrupting a game in progress at any point in the game and then resuming the game at the same point in the game at any time thereafter. Meet your needs. These embodiments make it possible to save the game state at that point of interruption. The interrupted game state is saved with enough data to reconstruct the game state when the user chooses to resume. While the game is interrupted, the game state is collected and saved in storage, so the cloud gaming system or server no longer stores this situation in active memory or hardware registers. This allows the system to be open for other gameplay or processing operations. In addition, gameplay can be resumed at any time and from any remote client. When resumption is desired, the user simply selects the interrupted game and the system loads the game state. Because loading game states involves generating game states from multiple files and data structures, the reconstructed game states are machined in exactly the same or nearly the same situation as when the game was interrupted. Will be returned.</p><p>In one embodiment, when the game is interrupted, the saved game state also saves a certain amount of time prior to the time the interruption was initiated. By saving the additional amount of time in this way, the user can regain or reintroduce what happened in the game prior to the interruption. As described below, game state saving operations generally occur when not previously specified by the game designer, so state data is collected from hardware registers, buffers, memory, etc., as well as software buffers, registers and files. It is necessary to complete the processing work to do so. This collection of state data allows another cloud gaming system to resume gameplay, in which case the state data is loaded into the appropriate hardware and software location and then terminated. Active interactive gameplay can be resumed. It should be understood that the present invention can be implemented in many ways including processes, devices, systems, computer readable media or devices. Some progressive embodiments of the present invention are described below.</p><p>One embodiment discloses a cloud gaming system including a function of interrupting a game and restarting the game. A cloud gaming system includes a cloud controller, a storage device coupled to the cloud controller, and a plurality of game consoles coupled to the cloud controller by a network. Each of the game consoles can include a hardware layer, an operating system layer and an application layer. The operating system layer is configured to interact with or interact with the hardware layer and includes a state manager client. The application layer is configured to interact with at least part of the operating system layer and part of the hardware layer. The application layer includes a particular game, and the state manager client is configured to capture the game state data of the game console and store the captured game state data when the game is interrupted. The state manager client can also apply game state data to the same or different game consoles and restart the game at the point where the game was interrupted.</p><p>Another embodiment provides a method of interrupting a game in a cloud gaming system. This method plays a game on a first game console included in a cloud gaming system and interrupts the game at a selected point in the game. Game state data is captured for the interrupted game. The interrupted game can be resumed by retrieving the game state data, applying the game state data to the selected game console, and resuming the game at the selected point in the game on the selected game console. Game state data can also be shared between different users, allowing a first user to share their game state with one or more other users.</p><p>Other aspects and advantages of the invention will become apparent from the following detailed description, along with the accompanying drawings illustrating the principles of the invention as an example.</p><p>The present invention, in conjunction with the accompanying drawings, will be readily understood by the following detailed description.</p>
<figref num="1">It is a figure of the simplified cloud gaming system for carrying out the embodiment of this disclosure.</figref><figref num="2A">It is a flowchart which shows the simplified outline of the method process performed in the cloud gaming state save, resumption and transfer mechanism for carrying out the embodiment of this disclosure.</figref><figref num="2B">It is a figure which shows the simplified graphical user interface of the user's cloud gaming system dashboard for carrying out the embodiment of this disclosure.</figref><figref num="2C">It is a figure which shows an example which gave the user the function for sharing and saving a restart point for carrying out the embodiment of this disclosure.</figref><figref num="3">It is a flowchart which shows the method process performed in the cloud gaming state save, resumption and transfer for carrying out the embodiment of this disclosure.</figref><figref num="4">It is a block diagram of the game system by various embodiments of this invention.</figref>
The following are some exemplary embodiments relating to a system and method for saving an ongoing game state at any point in the game and then restarting the game at the same point in the game at any time thereafter. It will be apparent to those skilled in the art that the present invention may be practiced without some or all of the specific details described herein.
Cloud gaming is an extremely popular gaming environment. Cloud gaming enables single-player and multi-player gameplay, and users play complex and content-rich games such as games with rich interactive content and three-dimensional (3D) graphics that feel like a real-life experience. It will also be possible. Such content-rich games have dedicated processors, coprocessors and graphics processors, are complex and high performance, and often require highly specialized computers. Cloud gaming also requires server processes that are well designed to reduce latency and monitor latency to avoid performance degradation. As an added benefit, cloud gaming allows users to play content-rich games on much simpler client computers. As an example, a user may play a game on a cloud gaming system using a tablet, smartphone or other handheld computing device capable of communicating with the cloud gaming system over a local network and / or the Internet. Can be done.
In a cloud gaming environment, simply keeping a particular game session open for the user in order to return to the game at some uncertain point in the future is not a viable option. Keeping a particular gaming session open to users indefinitely can be costly for cloud gaming providers. Such costs include the use of power by the cloud gaming console and prevent another user from using the same gaming console. In one embodiment, the cloud gaming system can assign a dedicated game console (for example, managed by a cloud gaming server) to the user for each game session. This also allows the same game console to be assigned to a second user if the previous user was not assigned to use the game console. Multiple users share a game console over a period of time, but they do not use the same game console at the same point in time.
The disclosed cloud gaming state save, resume and transfer technology allows the user to interrupt his or her gameplay session at any time in the gameplay of his or her choice. After that scene, the user's game state is remembered, after which the user's cloud gaming console is released to another user. Cloud gaming state save, resume and transfer techniques save energy by allowing the gaming server to transfer the use of a user's assigned game console to another user.
When the user is ready to resume his game, the user's saved game state is retrieved and loaded into the same or different cloud gaming console. The user can then resume his gameplay at the same point where he interrupted. Users can resume their game state using the same or different client devices. Users can reopen their gaming state using the same or different cloud gaming data centers. Users can resume their game state from different geographical regions of the world.
The disclosed cloud gaming state save, resume and transfer techniques have other uses as well. For example, sharing a user's gaming session with other users allows other users to experience the same gaming session, or in some cases other users (at different remote locations). , Who are connected to cloud gaming services) will also be able to help. As an example, a first user interrupts gameplay, passes game state data to a second user (eg, shares), a second user completes a difficult battle for the first user, and then plays the game. Suspend again and pass new game state data back to the first user. In one embodiment, the user can select a share button or option on the controller, or another user can connect and share the saved game state. The disclosed cloud gaming state save, resume and transfer techniques have many other uses as well. When users share a game state, the user who receives the shared object may be assigned to another game console (ie different from the shared user's game console) by the cloud gaming system. If the situation is saved prior to each share, and when the situation begins, it will be resumed on the same game console, depending on which game console the user is assigned to at any given time. Or it may be restarted on another game console.
FIG. 1 is a simplified cloud gaming system 100 for implementing the embodiments of the present disclosure. The cloud gaming system 100 includes a cloud controller 130, a plurality of game consoles 112A-n, and one or more game console managers 113 and a storage server 110. The cloud controller 130, multiple game consoles 112A-n, one or more game console managers 113, and storage server 110 can be located in one or more data centers 111, 115, 117. The cloud controller 130, the plurality of game consoles 112A-n and the storage server 110 are coupled together by the local area networks 104A, 104B, 104C and / or the Internet 102. Multiple game consoles 112A-n and game console managers 113 may be co-located within one data center 115 or distributed among two or more data centers.
One or more game console managers 113 may be included in each rack of game consoles 112A-n. The game console manager 113 manages one or more game consoles 112A-n, depending on one or more hardware and / or software architectures. The game console manager 113 physically connects to the game console 112A-n using a network connection 115 and / or an optional general purpose input / output, universal serial bus or equivalent control connection to activate power to the game console. Be connected. The game console manager 113 can optionally include additional roles such as setting up and managing streaming sessions between the assigned game console and the user's client device.
The local storage server 116 may optionally be co-located in the same data center 115 with one or more game consoles 112A-n. The local storage server 116 can store data 116A used by or received from a plurality of game consoles 112A-n and / or cloud controllers 130. Data centers 111, 115, 117 may be geographically separated. As an example, a first data center 111 and a third data center 117 can be located in Los Angeles, California, and a second data center 115 can be located in Stockholm, Sweden.
The cloud controller 130 and / or the game console manager 113 includes a game database 132 for storing multiple games and other applications that may be downloaded for one or more of the game consoles 112A-n. The cloud controller 130 also includes the authentication manager 135. The authentication manager 135 determines whether the first user has a legitimate account and authenticated access to the cloud gaming system 100. The account information of the first user is contained in the user account database 133. In one or more embodiments, the cloud controller 130 may also include a state manager 134. The state manager 134 also works with the state manager client 144 included in each of the game consoles 112A-n to capture game state data for each game console when started.
The storage server 110 provides a storage facility for the cloud gaming system 100. The storage server 110 includes one or more storage devices 110A, 110B for storing data such as user state data 114', as may be required by the cloud gaming system 100. The one or more storage devices 110A, 110B may be any suitable storage medium, such as a hard disk drive, solid state drive or optical drive.
Each of the game consoles 112A-n includes a hardware layer 143 and an operating system layer 142 on top of the hardware layer. Application layer 141 overlaps operating system layer 142. Application layer 141 includes games and other applications running on the game console 112A. The hardware layer is the main processor 145, coprocessor 146, graphics processor (GPU) 147, memory system 148, input / output system 149, network interface card 150, and many other physics that may be required to operate the game console 112A. Includes target peripherals and virtual peripherals. The main processor 145, coprocessor 146, graphics processor (GPU) 147, memory system 148, input / output system 149, network interface card 150, and other peripherals are combined together by one or more data buses 151.
In at least one embodiment, the operating system layer 142 includes a state manager client 144. In other embodiments, the state manager client 144 may be contained within one or more applications within application layer 141. The state manager client 144 may also be implemented to have parts that reside in both the operating system layer 142 and the application layer 141. The state manager client 144 can capture the game state data 114 of the game console 112A when it is started. The captured game state data 114 can be stored as game state data 114'in the local storage server 116 and / or the storage server 110. The storage location of the stored game state data 114'is provided to the cloud controller for addition to the first user account information in the user account database 133.
Client devices 122A and 122B grant access to the cloud gaming system 100 via the Internet 102 or the local network 104A-C. The client devices 122A, 122B may be any suitable platform capable of accessing the Internet 102 or the local network 104A-C. As an example, the client devices 122A, 122B are personal computers, laptop computers, notebook computers, handheld gaming devices, handheld computing devices such as tablet computers or smartphones, or any other computing platform. good. The first client computing device 122A and the second client computing device 122B can be used in a plurality of different geographically separated locations. As an example, the first client computing device 122A may be a tablet computer used to access the Internet 102 and the cloud gaming system 100 by the first user at home, in the office, and even while traveling. .. Similarly, the second client computing device 122B may be a notebook computer capable of accessing the Internet 102 and the cloud gaming system 100 at home, in the office or elsewhere with Internet access. ..
In one embodiment, the first user can access the cloud controller 130 via the internet 102 using the first client computing device 122A. The authentication manager 135 authenticates the first user and determines the access level allowed for the first user. Cloud Controller 130 and / or Game Console Manager 113 assigns a first user to Game Console A 112A for the current cloud gaming session and has an authenticated access level containing authenticated applications and games from the Games and Application Database 132. I will provide a. The cloud controller 130 and / or the game console manager 113 can also transfer certified games and other applications from the game and application database 132 to the assigned game console A 112A. In one embodiment, the assigned game console A The 112A can access the game and application database 132 and transfer authenticated games and other applications to the assigned game console A.
The disclosed cloud state save, resume and transfer techniques are particularly useful for cloud gaming purposes because of the large amount of data associated with interrupting and restoring game states. The cloud gaming system 100 is well suited for the disclosed cloud gaming state save, resume and transfer technologies, because the cloud gaming system is connected worldwide using the high speed network 104A-C. This is because it includes the gaming console 112A-n.
Numerous embodiments of cloud gaming state save, resumption and transfer techniques and methods are disclosed herein. One technique is to transfer at least one of the full hardware state data or the full application state data between game consoles. The following is a description of how the cloud gaming state save, resume and transfer mechanism can work. A detailed description of how to make a copy of the hardware state data and application state data is also provided.
The cloud gaming state save, resume and transfer mechanism allows the transfer of game state data from one game console to another. FIG. 2A is a flow chart showing a simplified overview of method step 200 performed in a cloud gaming state save, resume and transfer mechanism to implement the embodiments of the present disclosure. In step 205, the first user is playing a game on the game console 112A in the cloud gaming system 100. In step 210, the first user chooses to interrupt the game at a selected interruption point in the game. The selected break points may be any points in the game other than the predefined game break points. The cloud gaming system 100 may also automatically interrupt the user's game due to the management of one or more cloud gaming systems. As an example, if the cloud controller 130 does not detect activity from the first user for a period of time that exceeds a given inactivity time limit, or the cloud controller detects a network disconnection from the first user's client device 112A. For example.
In one embodiment, the cloud controller is aware of the available games and available game servers, but for capacity reasons, the management of continuous interaction with the client devices 112A-B is typically. Relies on streaming software in the assigned game console and / or game console manager. The game console manager, assigned game console or client device can be determined to be inactive. The inactivity of the user can be determined by the client device, for example, by not pressing the button for a predetermined time. The game console manager and / or the assigned game console can also identify that the user is not active. As an example, if the client device detects that the user has not been active for a given amount of time, the client device sends a disconnect message to the assigned game console and / or game console manager. The disconnect message may also include a reason for the disconnect message, for example, the user is not active at all. When the assigned game console and / or game console manager receives this disconnect message, the process of stopping the game, storing user data, capturing game state data, etc., to stop the rest of the streaming session. Is started. In one embodiment, the disconnect message is received by the streaming software in the assigned game console and / or game console manager, which issues a stop message to the game console manager, and the game console manager performs the stop process. to manage.
The user's disconnection may eventually be notified to the cloud controller depending on its architecture. In one embodiment, the cloud controller can monitor or track whether the user is currently streaming (eg for billing purposes), or the user accesses his or her saved data from more than one location. In some cases, data corruption can occur and users can be prevented from streaming multiple times.
The game state data of the first user is captured and stored in step 215. After the game state data of the first user has been captured and stored, the game console 112A can be released for the second user. Game state data includes hardware state data and / or application state data. Game state data also includes history-dependent and process data that may be needed to reconstruct the game at selected interruption points in the game. History-dependent and process data is in the form of a data structure that includes temporary and user-interactive historical metadata needed to form a viable gaming application that can be resumed at selected interruption points. It's okay to have it. Examples of transient and user interactive historical metadata include graphic data such as color data, texture data, vertex data, fragmentation data, art assets, drawing data, shading data, lighting data and more. Temporary and user-interactive historical metadata can also include the contents and states of various buffers and caches, as well as the status of various counters and timers needed to coordinate game operations. Capturing game state data can also include capturing the current image of the scene in the game at a first user-selected interruption point.
After a while, in step 220, the first user chooses to resume the interrupted game, the stored game state data of the first user is captured, loaded into the assigned game console, and in process 225. , The game is restarted at the break point of the game. The user can resume the game on the same game console 112A that the user originally used with the game. Alternatively, the first user may resume the game on another game console 112B. The first user also allows the second user to resume the interrupted game of the first user by authenticating that the second user has access to the game state data of the first user. You can also do it. Resuming the game involves applying game state data on the selected game console. Game state data can include data structures that include temporary and user-interactive historical metadata needed to form a viable gaming application that can be resumed at selected interruption points.
FIG. 2B is a simplified schematic user interface of the user's cloud gaming system dashboard 250 for implementing the embodiments of the present disclosure. The cloud gaming system dashboard 250 has option 252 for selecting a new game, option 254 for investigating the user's current ranking in the gaming tournament, option 256 for reviewing the user's gaming history, and the user. Includes option 258 for updating friends, other options 260 and option 262 for updating user accounts. Each of the options moves the user to the corresponding screen to execute the selected option.
The cloud gaming system dashboard 250 can also include an interrupted game menu 270. The Suspended Game Menu 270 includes a suspended game and a list of options for resuming or deleting the suspended game. Note that a user may have more than one interrupted game and may interrupt the game at any time and for any reason of his choice. A pointer 280 for selecting the displayed menu option is also shown on the cloud gaming system dashboard 250 screen.
Cloud gaming state save, resume and transfer provide capture and allow the transfer of a user's game state from one game console to another. The user's game state can include one or both of the user's game console hardware state data and / or application state data when the user interrupts the game.
FIG. 2C shows an example in which the user is given the function 290 for sharing the saved state of Game A. The system is also equipped with the ability to save game state data that the user saved with Bob 292 and then resume 292 from any saved interruption point or situation made by Bob. It is also possible for Bob to complete and save a particular level, or to notify the user that a level has been completed, which allows him to resume the next level. Further, FIG. 2C shows an option for saving the history information 294 of the interruption point in Game B. If the user is interrupted multiple times, the user can resume at such an earlier interruption point as well as the last saved interruption point. In some embodiments, a certain number of break points may be saved for the purpose of history saved in the storage space, or the user may be provided with the ability to download the saved break points. In addition, users may be able to share interruption points with more than one user. For example, a user can share a break point in Game A with multiple users (eg friends) to know who has scored the highest score at a particular level, won the highest trophy, and so on. The user can then choose which friend's break point he wants to take over, or which friend's break point he wants to resume from.
FIG. 3 is a flowchart showing a method step 300 performed in cloud gaming state save, restart and transfer for implementing the embodiment of the present disclosure. In step 305, the first user accesses the cloud gaming system cloud controller 130. Authentication Manager 135 queries the user account database 133 and compares the login access information of the first user with the account information of the first user in the user account database 133 so that this user is a valid account and the first user. Make sure you have authenticated access rights. The first user can access the cloud controller through the client device 122A.
The cloud controller 130 assigns the first user to the game console 112A in step 310. In one embodiment, the first user's assignment to the game console 112A may include automatically loading any of the first user's pre-interrupted games into the assigned game console 112A. The assignment of the first user to the game console 112A can also include the display of the first user's cloud gaming system dashboard 250 screen. In one embodiment, the game console manager may assign a first user to the game console 112A. The cloud controller authenticates, the game console manager launches the game console (eg, applies power), transfers any required data such as game data, user data, game state data, and the assigned game. Activate the login sequence for the console. Alternatively, the assigned game console may store any required data such as game data, user data, game state data, etc. in the corresponding storage location indicated by the user data and / or the game console manager and / or the cloud controller 130. You can also take it out of.
In step 315, the first user selects a game or application and runs it on the assigned game console 112A. The assigned game console 112A may be one of many game consoles on one or more cloud gaming servers. In one embodiment, the assigned game console 112A of the first user may be limited to a particular timeshare of the game console, in which case the first user is the uptime of the assigned game console 112A. It is distributed only to a part of. The game console 112A can provide one or more timeshares, each of which can be assigned to each user, allowing multiple users to use one game console at the same time. become.
In step 320, the interruption is initiated in the game at a specific point other than the predetermined interruption point in the application. For example, the first user can initiate a suspend request to suspend his streaming game session. Alternatively, the cloud controller 130 may initiate an interruption due to inactivity by a first user that exceeds the preselected inactivity time limit. For cost reasons, the cloud controller 130 automatically suspends the first user's game console 112A, freeing the first user's game console and making it available to the second user. Can be done. The first user can initiate the interruption by notifying one or both of the cloud controller 130 and the game console 112A assigned by the first user. As pointed out above, the interruption process may be distributed within the assigned game console, game console manager, cloud controller 130 and streaming software.
In step 325, the current game state data 114 of the first user of the assigned game console 112A is captured. The captured first user game state data 114 may be hardware state data or application state data, or both hardware state data and application state data. The methods and systems for hardware state data and application state data as well as hardware state data and application state data are described in more detail below.
In step 330, the captured first user game state data 114 is stored for later retrieval. As described above, the captured first user game state data 114 can be stored on the local storage server 116 and / or the storage server 110 as stored game state data 114'. The storage server 110 and the local storage server 116 can efficiently store game state data for a plurality of game consoles and / or a plurality of users. In step 335, the location of the stored state data 114'of the first user is associated with the account data of the first user in the user account database 133. This allows the account information of the first user to include the storage location of the interrupted game state data of the first user.
After some time, in step 340, a request to resume the interrupted game of the first user at the point where it was interrupted in step 320 above is initiated. The resume request may come from a first user or an authenticated second user. The first user or the authenticated second user can issue a resume request via an assigned game console, such as the game console 112B.
If the first user logs off his first gaming session, or the cloud controller ends the first gaming session, or the first user goes to the cloud controller 130 or game console manager 113 or the assigned game console. If your first gaming session is interrupted in any other way, such as when you feel a break in your network connection, then the first user will access the cloud gaming service as described in step 305 above. It may be requested to be fixed and a specific game console may be assigned. When the game console 112B is assigned to the first user, the interrupted game of one or more first users may be automatically loaded into the assigned game console. When the first user is assigned to the game console 112B and one of the interrupted games of the first user is loaded into the assigned game console, the assigned game console is ready to resume the interrupted game. The instruction can be provided to the first user, and the first user can be given the access right to restart the game interrupted at the point where the game was interrupted in the above step 320.
The first user can also share or send the stored game state data 114', or else access to the stored state game data 114' to the second user as described above. You can also authenticate the right. The request to restart the game is received by the cloud controller 130 from an assigned game console, such as the game console 112B.
Upon receiving the resume request, the cloud controller 130 queries the user account database 133 for the account information of the first user, and in step 345, the storage location of the state data 114'of the first user stored for the interrupted game of the user. To identify. The cloud controller 130 and / or the game console manager 113 retrieves the stored first user game state data 114'and sends it to the game console 112B requesting the stored first user game state data 114'. do. In step 355, the requesting game console 112B receives the stored game state data 114'of the first user.
In step 360, the requesting game console 112B applies the stored first user game state data 114'to generate restarted game state data 114', and reconstructs the game at the interruption point. Reconstruction of the game at the point makes the requested game console 112B equivalent to the game console 112A, and the game to the same configuration as when the game was interrupted in step 320 above. Construction can include loading each portion of the restarted game state data into multiple respective aspects and locations in the requesting game console 112B. As an example, rebuilding a game at a break point can be done by the game. It can include reading all history-dependent and process data that may be essential to rebuilding the game at the point of interruption. Of the dependent and process data that may be essential to rebuilding the game. Examples include graphic data such as color data, texture data, vertex data, fragmentation data, art assets, drawing data, shading data, lighting data and others. Dependent data and process data also include various buffers and caches. The content and state of the game, as well as the status of the various counters and timers needed to coordinate the operation of the game, can also be included. Can also include displaying a captured image of the scene in the game.
In step 370, at the same point where the game was interrupted in step 320 above, the game of the first user is restarted on the game console 112B and the method step can be completed.
Game state data can be represented in the form of application state data and / or hardware state data. Each capture and resumption of application state data and hardware state data has its own problems with cloud gaming state save, resumption and transfer, as discussed below.
An application state data computer is a piece of hardware consisting of one or more processors, memory, and input / output peripherals such as a graphics processor unit (GPU), sound card, keyboard, and other peripherals. The task on which a computer runs is a computer program or application. Computer processors can execute these application codes and make decisions based on I / O, such as pressing a keyboard button, to output a video frame on the display.
Application state data may belong to hardware state data. The memory that buffers the use of this application is the final area in the RAM chip or swap file, such as a hard disk drive or solid state drive. The processor stores instructions related to the application in the instruction cache and captures / stores the data in the processor register, data cache or RAM. When running, each computer application has a corresponding application state data. Application state data is in the form of a memory buffer state instruction counter timer, which is used by network connection pipe applications in the form of open file handles and open sockets.
As an example, application state data can include signals, threads, file descriptors, virtual memory mappings, thread local storage, threads, process IDs, user IDs, group IDs, pipes, sockets and more. Application state data can also include operating system level concepts such as GPU resources occupied by the game. The game is aware of resources such as textures, geometry buffers, shader instructions for the GPU to run, and more. Textures are stored in GPU memory, shader instructions are loaded in GPU memory, loaded in the instruction cache during execution, and finally there is a matching instruction pointer.
Referring again to FIG. 3 above, the game or application is paused when the interruption is initiated in step 320 of FIG. 3 above. In step 325, the game state data is captured by capturing the application state data. Application state data includes virtual memory mappings, fetch file descriptors, and so on. In one embodiment, it is also possible to capture virtual memory mapping, recovery file descriptor, etc. from within an application by using a function similar to a debugger.
Some of the application state data can also be obtained externally in the Linux® operating system, for example from the / proc / <proccess id> application. An example of application state data may be an open file, in which the application has a file descriptor that is numeric. Numeric file descriptors are used in file read / write calls as identifiers for files. To recover from this situation, the application needs to be given an accurate numeric file descriptor. As an example, in Linux® operating systems, numeric file descriptors are pseudo-codes such as -original_file_descriptor=42file_descriptor=open("/path/to/file", ..) -dup2 (file_descriptor, original_file_descriptor). Can be captured by.
Other types of application state data, such as process IDs (PIDs), user IDs, group IDs, network layouts, and others, may also be used to virtualize other types of application state data on the Linux® operating system. Virtualized process IDs (PIDs), user IDs, group IDs, network layouts, etc. allow you to form a sandbox / container environment in which you can hide parts of your system, where PIDs. , User IDs and other operating system level resources can be reshaped.
The captured application state data can then be used in step 360 of FIG. 3 to reshape the same application state data on the same or different computer systems, eg, on the game console 112B. Various application state data can be placed at each location within the game console 112B used to restart the application or game. The contents of the network buffer can be reshaped in the operating system. Alternatively, the network buffer can be drained to a safe recovery point, similar to the hardware interrupts described below. In this method, the user can restart the application at the point where the application or game was interrupted in step 320 above.
Hardware state data Hardware state data includes the operating status of a computer that was interrupted while the application was running, such as when the user chose to suspend the application. The current state of operation of the computer is quiesced at a given time, and as a result, the computer hardware such as processors, RAM, all peripherals, GPUs, sound cards, network cards, etc. are also quiesced. By capturing such hardware state data and then applying the captured hardware state data to another computer, the user can restart the application where it was interrupted on the first computer. become.
An emulator is an application that perfectly mimics computer hardware in software. Emulators are often used to run legacy applications from very old computers or game consoles, such as obsolete computers or game consoles, on more recently produced computer systems. More recently produced computer systems cannot run legacy applications because hardware incompatibility makes them incompatible with legacy applications without emulator applications.
To save the hardware state data at any selected point in operation, the emulator can save the emulated hardware state data for the emulated computer, for example to a specific file. .. The emulated hardware state data captures all memory for the emulated device, the status of peripherals, and the address of other currently executed instructions for the emulated computer. The emulated computer is perfectly implemented in the emulator application as described above, thereby capturing the application state data of the emulator application.
Virtual machine states are similar to emulated hardware state data. In the context of cloud gaming, hardware state data capture, transfer and resumption, one problem with emulators is sharing emulated hardware state data among multiple virtual game machines.
Typically, server applications such as web servers, database servers, and email servers run on physical server hardware such as server machines. A server machine includes a high-performance central processing unit (CPU) and a large amount of memory, which allows multiple server applications to run in parallel. Computer hardware such as processors, memory, and data buses are becoming more sophisticated, and server uptime and security are becoming more important and important.
Server applications typically run on virtualized server hardware. In such an example, there is a high performance server processor, which runs a virtual application. Virtual applications allow you to create multiple virtual machines. Each virtual machine is emulated computer hardware that runs separately. Each virtual machine contains its own set of virtual or physical peripherals, such as network cards, storage devices, and so on. Each virtual machine can run its own operating system. The operating system in each of the virtual machines may differ from the other virtual machines, for example Linux® physical machines running multiple virtual machines, each or other suitable virtual machines running different versions of Windows. It may differ from the operating system of a physical machine, such as a computer operating system.
Each server application, such as a web server, database server, or email server, is typically assigned to its own virtual machine for security isolation reasons. In general, a virtual machine such as an emulator is a software concept and can be interrupted in the same way as an emulator, and the virtual machine state can be captured as application state data of a virtual application.
The virtual machine state can then be transferred to a second virtual machine. A second virtual machine can optionally utilize different physical components to run on different physical servers, provided that such physical components are used by virtual peripheral devices and virtual machine virtual processors. It doesn't matter for a reason.
Virtual machine states can be thought of as a type of application state data. Transferring virtual machine states between computer systems is called virtual machine migration and is a common feature in the server world.
A recent extension to virtual machine migration, called live migration, increases server reliability. For example, a virtual database server detects that the physical hardware is not functioning, such as a memory error, a hard disk read error, and is a virtual database server to another identical virtual database server hosted on different server hardware. Start the migration of. Live migration can be done with only a few seconds of downtime without disconnecting any clients.
Unfortunately, all virtual machine peripherals must be virtual peripherals for virtual machine migration to work properly. Virtual machine migration does not support the migration of physical peripherals. Virtual machine migration is not suitable for this purpose because migrating the hardware state data of the first game console to the second game console requires the migration of physical peripherals.
Due to the complexity required for game console hardware to create a content-rich and interactive gaming environment, game consoles cannot be easily or efficiently emulated or virtualized. The user is assigned to a unique game console and the game of the user's choice is run by the assigned game console hardware. Therefore, emulation and virtualization do not provide the functionality required to capture hardware state data as a form of application state data.
As mentioned above, hardware migration requires a capture of the relevant hardware state data of the computer and its peripherals. When the system goes into hibernation, the device driver for each peripheral is asked to capture the relevant hardware state data for the peripheral and stores such a situation in system memory. When the system is powered up again, all memory states are restored from disk and the peripheral driver is also instructed to restore some hardware state data, such as a buffer containing 3D textures for the GPU.
In one embodiment, the game console 112A includes a main processor 145 and a coprocessor 146 as shown in FIG. 1 above. When the user chooses to suspend the game console 112A in step 320 above, the main processor 145 may quiesce the current operation (s). In step 325, the coprocessor 146 determines the current status of the main processor 145, buffer, graphic processor 147, memory system 148, input / output system 149, network interface card 150 and other peripherals. You can query to capture hardware state data. Alternatively, an application running with or as part of the operating system may be interrupted, querying the buffer, graphics processor 147, memory system 148, input / output system 149, network interface card 150 and other peripherals.
To support the migration of game console hardware state data from the first game console 112A to the second game console 112B, even if the second game console 112B has the same components and peripherals as the first game console 112A Even if it is included, special measures are required. For example, the peripherals in each of the game consoles 112A, 112B have different internal serial numbers and may require some reconfiguration. Another example is the MAC address of a network device that needs further reconfiguration.
Furthermore, the second game console 112B may be in a different network environment than the first game console 112A. Different network environments may utilize different network settings, so migration of game console hardware state data also requires a well-reconfigured network. The migration of game console hardware state data may also need to be reconstructed with respect to the geographical disparity between the first game console 112A and the second game console 112B. As an example, a transfer to a second game console 112B in a different geographic area than the first game console 112A can change the time zone, change the language, and possibly the language used in the running game. Even changes may be needed.
The second game console 112B may also have a different hardware revision than the first game console 112A, which may require various reinitializations. For example, the second game console 112B is a newer hardware revision, for example in a smaller semiconductor process, may be more power efficient and requires a different power and cooling environment than the first game console 112A. It will be.
Live migration of a single application is a fairly new area. One technique allows the application to be interrupted, followed by the capture of application state data such as file handles, sockets, memory states and other types of application state data as described above. When resuming, the same file descriptor is restored to the same conditions as when the application was interrupted. Network connections, timers, mutual exclusions and other types of situations are also restored. 3D gaming applications rely on GPU-resident hardware state data in the form of buffers. Earlier techniques did not capture each hardware state data and were required for application state data transfer in 3D games. In this context, hardware state data refers to any data or situation stored in hardware on behalf of an application. For example, a buffer in GPU memory contains geographic or texture data, and a memory buffer contains game data files on the hard disk. Applications typically access such hardware state data through a software abstraction layer provided by the operating system kernel or device drivers. An example of such an abstraction may be a file descriptor for a file on disk, which is the layer at the top of the storage device, a buffer on the GPU side, and a file descriptor representing the graphic context. Sometimes, for performance reasons, the application accesses the hardware buffer directly. Direct access to the hardware buffer may be directed by the device driver.
One technique for capturing hardware state data is to disrupt the application and capture the software abstraction mechanism linked to the interrupted hardware state data. If the software abstraction mechanism is a file descriptor, this file descriptor can be used to find the corresponding hardware state data. Since file descriptors are often device driver / OS kernel concepts, the corresponding device driver needs to expose a way to retrieve its associated hardware state data. The process of identifying all hardware state data in the absence of an application can be quite difficult.
Examples of hardware state data include various registers, fifo buffers, instruction caches (both CPU and GPU), data caches (CPU / GPU), RAM, program counters on CPU and GPU (s) / Contains instruction pointers (s). GPU instructions are for shader applications.
Hardware state data also contains migration status related information. For example, hardware may emit an interrupt signal. This interrupt signal can be regenerated, or the buffer may drain the current contents of the buffer and then reload the buffer in known safe recovery situations. In one embodiment, the hardware may be allowed to finish some request waiting or scheduled processing. Interrupts can then be used to initiate a new process or report the completion of a particular process. If the hardware is busy with processing, such interrupt signals can also be played outside the hardware, and the hardware is resuming in case the hardware is waiting for an interrupt signal for some ongoing processing. The process cannot be completed. Some processes may have less migration state to capture. In one embodiment, game operations can continue until the ongoing migration state is minimized or below a selected threshold and then has less migration hardware conditions such as interrupts, upon resuming the game. An instruction counter may be needed for the reconstruction of.
Another approach is to get help from the application. Instead of interrupting the application, the application can send a suspend signal, which causes the application to remember all internal conditions to disk, which in turn recovers some necessary hardware state data. Make it possible. It is the application's job to recover when the application is restarted. The advantage of this is that the application knows what the hardware state data really needs to capture. A significant portion of the hardware state data can usually be recovered by reloading the data from the game file. The game can also manage recovery and, for example, reduce network connectivity to online cloud controllers.
Additional, including disconnecting the online game, adjusting the time zone between the user and the game console, choosing the appropriate language for the user, and resuming the game timer, regardless of recovery through the transfer of application state data or hardware state data. There is a restart mode. Games often utilize highly accurate, constantly improving timers for internal game timing. After resuming, such timers need to be restarted at exactly the same time they were paused before, otherwise the game could make the wrong decision, eg in the game. The character can get stuck or die in the wall. Software changes are required depending on whether the operating system can manage this or not yet. As mentioned above, in steps 350 et seq., Appropriate application or game and all supported data files are required for successful resumption.
FIG. 4 is a block diagram of a game system 400 according to various embodiments of the present invention. The gaming system 400 is configured to provide a video stream to one or more clients 410 over the network 415. The game system 400 typically includes a video server system 420 and an optional game server 425. The video server system 420 is configured to provide a video stream to one or more clients 410 with minimal quality of service. For example, the video server system 420 may receive game commands that change the visibility of a video game and provide an updated video stream to the client 410 to reflect such changes with minimal time lag. can. The video server system 420 may be configured to provide video streams in a wide variety of alternative video formats, including formats not yet defined. Further, the video stream can include video frames configured to be presented to the user at various types of frame rates. Typical frame rates are 30 frames per second, 60 frames per second, and 420 frames per second. Larger or smaller frame rates are also included in alternative embodiments of the invention.
Client 410s, individually referred to here as 410A, 410B, etc., are head-mounted displays, terminals, personal computers, game consoles, tablet computers, phones, set-top boxes, kiosks, wireless devices, digital pads, stand-alone devices. , Handheld gameplay devices, etc. may be included. Typically, the client 410 is configured to receive an encoded video stream, decode the video stream, and present the resulting video to a user, eg, a player in a game. The process of receiving an encoded video stream and / or decoding the video stream typically involves storing individual video frames in the client's receive buffer. The video stream is presented to the user on a display integrated with the client 410 or on a separate device such as a monitor or television. Client 410 is optionally configured to support more than one game player. For example, a game console may be configured to support two, three, four, or more simultaneous players. Each of these players can receive a separate video stream, or one video stream is specially generated for each player, eg, a frame generated based on the perspective of each player. May include areas of. Clients 410 are optionally geographically distributed. The number of clients included in a gaming system 400 can vary widely from one or two to thousands, tens of thousands or more. As used herein, the term "game player" is used to refer to the person playing the game, and the term "game playing device" is used to refer to the device used to play the game. Used to point. In some embodiments, the gameplaying device is a plurality of computers that collaborate to deliver the gaming experience to the user. It may also refer to a ting device. For example, the game console and HMD can deliver games viewed through the HMD in collaboration with the video server system 420. In one embodiment, the game console receives the video stream from the video server system 420 and the game console transfers the video stream to the HMD for rendering or updates the video stream.
Client 410 is configured to receive a video stream over network 415. The network 415 may be any type of communication network, including telephone networks, the Internet, wireless networks, powerline networks, local area networks, wide area networks, private networks and the like. In a typical embodiment, the video stream is communicated over a standard protocol such as TCP / IP or UDP / IP. Alternatively, the video stream is communicated via its own standard.
A typical example of a client 410 is a personal computer with a processor, non-volatile memory, display, decoding logic, network communication performance and input devices. The decoding logic may include hardware, firmware and / or software stored on a computer-readable medium. Systems for decoding (and encoding) video streams are well known in the art and will vary depending on the particular encoding scheme used.
Client 410 may, but is not essential, include a system configured to modify the received video. For example, the client may be configured to perform further rendering, overlaying one video image on another, trimming the video image, and so on. For example, the client 410 is configured to receive various types of video frames, such as I-frames, P-frames and B-frames, and process these frames into images for display to the user. good. In some embodiments, the components of the client 410 are configured to perform further rendering, shading, conversion to 3-D, and other tasks on the video stream. The components of client 410 are optionally configured to receive more than one audio or video stream. Input devices of the client 410 include, for example, one-handed game controllers, two-handed game controllers, gesture recognition systems, gaze recognition systems, voice recognition systems, keyboards, joysticks, instruction devices, force feedback devices, motion and / or location sensing devices. It may include a mouse, touch screen, neural interface, camera, input device that has not yet been developed, and so on.
The video stream (and optionally the audio stream) received by the client 410 is generated and provided by the video server system 420. As described further elsewhere herein, such video streams include video frames. (And the audio stream includes audio frames). Video frames are configured to contribute meaningfully to the image displayed to the user (eg, they contain pixel information in the appropriate data structure). As used herein, the term "video frame" is used to refer to a frame that contains influential information that is configured to act, eg, to contribute to the image shown to the user. Most of the teachings herein regarding "video frames" can also be applied to "audio frames".
Client 410 is typically configured to receive input from the user. Such inputs include game commands that are configured to change the video game state or otherwise affect gameplay. Game commands can be received using the input device and / or may be automatically generated by an arithmetic command running on the client 410. The received game command is transmitted from the client 410 to the video server system 420 and / or the video server 425 via the network 415. For example, in some embodiments, the game command is transmitted to the game server 425 via the video server system 420. In some embodiments, separate copies of the game command are transmitted from the client 410 to the game server 425 and the video server system 420. The transmission of game commands is optional and depends on the identity of the commands. Game commands are optionally transmitted from client 410A via various routes or communication channels used to provide audio or video streams to client 410A. It should be understood that the game server 425 may include a part of the cloud controller 130 and / or the game manager 113 as described above.
The game server 425 is optionally operated by a different entity than the video server system 420. For example, the game server 425 may be operated by the publisher of the multiplayer game. In this example, the video server system 420 is optionally perceived as a client by the game server 425 and optionally configured to appear to be a prior art client running a prior art game engine from the perspective of the game server 425. Will be done. Communication between the video server system 420 and the game server 425 is optionally over network 415. Therefore, the game server 425 may be a conventional multiplayer game server that transmits game state information to a plurality of clients, and one of these clients is the game server system 420. The video server system 420 may be configured to communicate simultaneously with multiple instances of the game server 425. For example, the video server system 420 can be configured to provide different users with a plurality of different video games. Each of such different video games may be supported by different game servers 425 and / or published by different entities. In some embodiments, a plurality of geographically dispersed instances of the video server system 420 are configured to serve game video to a plurality of different users. Each of these instances of video server system 420 can communicate with the same instance of game server 425. Communication between the video server system 420 and one or more game servers 425 is optionally over a dedicated communication channel. For example, the video server system 420 may be connected to the game server 425 via a high bandwidth channel dedicated to communication between these two systems.
The video server system 420 includes at least one video source 430, an I / O device 445, a processor 450 and non-temporary storage 455. The video server system 420 may include one computing device or may be distributed among multiple computing devices. Such computing devices are optionally connected via a communication system such as a local area network.
The video source 430 is configured to provide a video stream, for example, a streaming video or a series of video frames forming a moving image. In some embodiments, the video source 430 includes a video game engine and rendering logic. The video game engine is configured to receive game commands from the player and maintain a copy of the situation of the video game based on the received commands. Such a game state includes the position of the object in the game environment and typically the viewpoint. The game state may also include the characteristics, images, colors and / or textures of interest. Game states are typically maintained based on game rules as well as game commands such as move, rotate, attack, focus, interact, and utilize. Part of the game engine is optionally placed inside the game server 425. The game server 425 can maintain a copy of the game state based on game commands received from multiple players using geographically dispersed clients. In such cases, the game state is provided by the game server 425 to the video source 430, where a copy of the game state is stored and rendered. The game server 425 may receive game commands directly from the client 410 over the network 415 and / or may receive game commands via the video server system 420.
The video source 430 typically includes rendering logic stored on a computer readable medium such as storage 455, such as hardware, firmware and / or software. Such rendering logic is configured to form the video frame of the video stream based on the game state. All or part of the rendering logic is optional and placed within the graphics processing unit (GPU). Rendering logic typically includes processing stages configured to determine the three-dimensional spatial relationships between objects and / or to apply appropriate textures and the like based on game state and perspective. The rendering logic produces a raw video that is normally encoded before being delivered to the client 410. For example, live video is Adobe Flash® standard, .wav, H.264, H.263, On2, VP6, VC-1, WMA, Huffyuv, Lagarith, MPG-x.Xvid.FFmpeg, x264, VP6-8, realvideo, mp3, etc. May be encoded according to. The encoding process produces an optional bundled video stream for delivery to the decoder on the remote device. This video stream is characterized by frame size and frame rate. Typical frame sizes include 800x600, 1280x720 (eg 720p), 1024x768, but any other frame size may be used. Frame rate is the number of video frames per second. Video streams can contain different types of video frames. For example, the H.264 standard includes "P" and "I" frames. An I-frame contains information for updating all macroblocks / pixels on a display device, while a P-frame contains information for updating a subset thereof. P-frames typically have a smaller data size than I-frames. As used herein, the term "frame size" means the number of pixels in a frame. The term "frame data size" is used to refer to the number of bytes required to store a frame.
In another embodiment, the video source 430 includes a video recording device such as a camera. This camera may be used to generate good time lag video or live video contained in a computer game video stream. The resulting video stream is optional and includes both rendered images and images recorded using a still camera or video camera. The video source 430 may also include a storage device configured to store pre-stored video for inclusion in the video stream. The video source 430 also identifies game states or produces video based on the detected motion and / or position with a motion or position-sensing device configured to detect an object, such as a human motion or position. It may also include logic configured as such.
The video source 430 is optionally configured to provide an overlay configured to be placed on other videos. For example, such overlays may include command interfaces, login instructions, messages to game players, images of other game players, and videos delivered by other game players (eg, webcam videos). In embodiments where client 410A includes a touch screen interface or gaze detection interface, the overlay may include a virtual keyboard, joystick, touch pad, and the like. In one example of the overlay, the player's audio is superimposed on the audio stream. Video source 430 further includes one or more sound sources at its discretion.
In an embodiment in which the video server system 420 is configured to maintain a game state based on input from two or more players, each player may have a different perspective, including position and viewing direction. The video source 430 is optionally configured to provide a separate video stream for each player based on their respective viewpoints. Further, the video source 430 is configured to provide different frame sizes, frame data sizes and / or encodings for each of the clients 410. Video Source 430 is optionally configured to provide 3-D video.
The I / O device 445 is for the video server system 420 for video, commands, information requests, game states, gaze information, device motion, device position, user motion, client identity, player identity, game commands. , Security information, voice, etc. are configured to be sent and received. The I / O device 445 typically includes communication hardware such as a network card or modem. The I / O device 445 is configured to communicate with the game server 425, network 415 and / or client 410.
The processor 450 is configured to execute logic, such as software, contained within the various components of the video server system 420 discussed herein. For example, the processor 450 may be programmed by software instructions to perform the functions of the video source 430, the game server 425 and / or the Client Qualifier 460. The video server system 420 is optional and contains two or more instances of the processor 450. The processor 450 is also programmed by software instructions to execute commands received by the video server system 420 or to coordinate the actions of the various elements of the game system 400 discussed herein. good. Processor 450 may include one or more hardware devices. The processor 450 is an electronic processor.
Storage 455 includes non-temporary analog and / or digital devices. For example, storage 455 can include analog storage devices configured to store video frames. Storage 455 may also include computer-readable digital storage such as hard disks, optical disks or solid state storage. Storage 415 is configured to store video frames, pseudoframes, video streams containing both videoframes and pseudoframes, audio streams, etc. (eg, via an appropriate data structure or fill system). Storage 455 is optionally distributed among multiple devices. In some embodiments, the storage 455 is configured to store the software components of the video source 430 considered elsewhere herein. Such components may be stored in a format prepared to be configured for use as needed.
The video server system 420 is optional and further comprises a client qualifier 460. The client qualifier 460 is configured to remotely determine the capabilities of a client, such as client 410A or 410B. Such capabilities can include both the capabilities of one or more communication channels between client 410A and the video server system 420, as well as the capabilities of client 410A itself. For example, the client qualifier 460 may be configured to test the communication channel over network 415.
The client qualifier 460 can manually or automatically determine (eg, know) the capabilities of client 410A. Manual determination involves communicating with the user of client 410A and asking the user to provide capabilities. For example, in some embodiments, the client qualifier 460 is configured to display images, text, etc. in the browser of client 410A. In one embodiment, client 410A is an HMD that includes a browser. In another embodiment, the client 410A is a game console having a browser, which can be displayed on the HMD. The subject displayed requests the user to enter information such as the client 410A's operating system, processor, video decoder type, network connection type, display resolution, and so on. This information entered by the user is propagated back to the client qualifier 460.
The automatic determination may be performed, for example, by executing a specific agent on the client 410A and / or sending a test video to the client 410A. Agents can have arithmetic instructions, such as Javascript embedded in web pages or installed as add-ons. The agent is optionally provided by the client qualifier 460. In various embodiments, the agent is the processing power of the client 410A, the decoding and display power of the client 410A, the certainty of the delay time and the bandwidth of the communication channel between the client 410A and the video server system 420, the display type of the client 410A. You can locate the firewall presented on the client 410A, the hardware of the client 410A, the software running on the client 410A, the registry entries in the client 410A, and so on.
The client qualifier 460 includes hardware, firmware and / or software stored on a computer-readable medium. The client qualifier 460 is optionally placed on a particular computing device away from one or more other elements of the video server system 420. For example, in some embodiments, the client qualifier 460 is configured to determine the characteristics of the communication channel between the client 410 and two or more instances of the video server system 420. In such an embodiment, the information found by the client qualifier is used to determine which instance of the video server system 420 is best suited to deliver stream video to one of the clients 410. Can be done.
Embodiments of the invention can be implemented in a variety of computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable household electronic devices, minicomputers, mainframe computers, and the like. The invention can also be implemented in a distributed computing environment where tasks are performed by remote processing devices coupled over a wired or wireless network.
With the above embodiments in mind, it should be understood that the present invention can use various computer implementation operations in relation to the data stored in the computer system. Such an operation requires a physical manipulation of a physical quantity. Any of the operations described herein that form part of the invention is useful for machine operation. The present invention relates to a device or device for performing such an operation. Such a device can be specially constructed for the required purpose, or if the device is a general purpose computer selectively started or configured by a computer program stored in the computer. There is also. More specifically, it is possible to use various general purpose machines with computer programs written according to the teachings herein, or to build more specialized equipment to perform the required operations. It may be convenient.
The present invention may also be embodied as computer-readable code on a computer-readable medium. A computer-readable medium is any data storage device that can store data, which data can then be read by a computer system. Examples of computer-readable media include hard disks, network-attached storage (NAS), read-only memory, random access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes and other optical and non-optical data storage devices. included. The computer-readable medium can include computer-readable tangible media distributed on a networked computer system, so that the computer-readable code is stored and executed in a distributed manner.
These method steps are described in a specific order, but other housekeeping steps may occur between these steps, or the steps may be adjusted to occur at slightly different times, or It is understood that as long as the processing of the overlay operation is performed in the desired manner, it may be distributed within a particular system that allows the processing work of the process to be performed at various intervals associated with this processing. sea bream.
Although the invention described above has been described in some detail for the purpose of clarity, it will be clear that certain modifications and amendments can be made within the scope of the appended claims. Accordingly, the present embodiment should be regarded as an example, not a limitation, and the present invention is not limited to the details presented herein, but is the scope and equivalent of the embodiments described. May be fixed within.
6 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| WO2014123169A1 | Cites | World Intellectual Property Organization (WIPO) |
| JP2012234564A | Cites | Japan |
22 members in 5 offices
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 201462099027 | United States of America | P | |
| 201462099027 | United States of America | P | |
| 62099027 | United States of America | – | |
| 14603308 | United States of America | – | |
| 201514603308 | United States of America | A | |
| 201514603308 | United States of America | A | |
| 14603308 | – | – | – |
| 62099027 | – | – | – |
| US201462099027P | – | – | – |
| US201514603308 | – | – | – |
Members22
| Document | Office | Kind | |
|---|---|---|---|
| US2016184712A1 | United States of America | A1 | |
| WO2016109066A1 | World Intellectual Property Organization (WIPO) | A1 | |
| CN107106909A | China | A | |
| US9795879B2 | United States of America | B2 | |
| EP3240616A1 | European Patent Office (EPO) | A1 | |
| JP2018504193A | Japan | A | |
| US2018043256A1 | United States of America | A1 | |
| US10512841B2 | United States of America | B2 | |
| US2020129859A1 | United States of America | A1 | |
| JP2020103941A | Japan | A | |
| CN111420397A | China | A | |
| EP3682953A1 | European Patent Office (EPO) | A1 | |
| EP3240616B1 | European Patent Office (EPO) | B1 | |
| JP2020163226A | Japan | A | |
| US10814227B2 | United States of America | B2 | |
| US2021038983A1 | United States of America | A1 | |
| JP6841952B2 | Japan | B2 | |
| US11058949B2 | United States of America | B2 | |
| US2021339136A1 | United States of America | A1 | |
| JP7066784B2This record | Japan | B2 | |
| US11612814B2 | United States of America | B2 | |
| EP3682953B1 | European Patent Office (EPO) | B1 |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 7066784
- Publication, DOCDB
- 7066784
- Publication, EPODOC
- JP7066784B
- Application
- 115573
- Application, DOCDB
- 2020115573
- Application, EPODOC
- JP20200115573
Titles2
- Japanese
- クラウドゲーミングに関するゲームステートセーブ、転送および再開
- English
- Game state related to cloud gaming Save, transfer and resume
Classification
- CPC, 8
- A63F13/355
- A63F13/49
- A63F13/493
- A63F13/79
- A63F13/90
- A63F13/497
- A63F13/45
- A63F2300/554
- IPC, 6
- A63F13 49
- A63F13 35
- A63F13 352
- A63F13 493
- A63F13 71
- A63F13 79
