System and method for procedural content generation during installation of encrypted packages
By calculating and reducing the amount of data to be downloaded from the metadata set during game installation, and using the content generation process to be performed during installation, the high network cost and unreliable data transmission caused by the asset size of game and game application are solved, and the data volume and reliability are reduced.
Patent Information
- Application Number
- CN202080034503.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-05-06
- Filing Date
- 2020-04-01
- Publication Date
- 2025-02-28
- Estimated Expiration
- 2040-04-01
AI Technical Summary
The large size of game and game application assets leads to high network transmission and export costs and low reliability of data transmission.
By computing and reducing the amount of data to be downloaded at installation time, the content generation process is performed during installation, generating the required content, and encrypting it to store it, reducing the amount of data transmitted and improving the reliability of the data.
It effectively reduces the amount of data that needs to be transmitted and downloaded, improves the reliability of data, reduces the demand for storage space, and ensures the integrity and authenticity of data through tamper-proof hashing.
Smart Images

Figure CN113841141B_ABST
Abstract
Description
Background Art
[0001] The size of game and / or game application assets, such as graphics and audio, can be large, which often results in considerable network transmission and export costs. For example, games distributed via a network such as the Internet may be on the order of several gigabytes to tens of gigabytes and may require a significant amount of time and bandwidth to download. Thus, it is desirable to reduce the size of games, application assets, and other forms of data (such as video and audio streams) to reduce the amount of data that needs to be transmitted over the network. In addition, by reducing the size associated with game and / or application assets to be downloaded, the reliability of the downloaded information is improved because there is less chance that the data will be lost, corrupted, or otherwise become unavailable.
[0002] It is with respect to these and other general considerations that the various aspects disclosed herein are made.Also, although relatively specific problems may be discussed, it should be understood that the examples should not be limited to solving specific problems identified elsewhere in this background or this disclosure.
[0003] Overview
[0004] The examples of the present disclosure describe systems and methods for generating content for encrypted packages. For example, a package such as a game or title for installation on a game console or other device can be received at the game console or other device; the package may include one or more tamper-proof hash parts and encrypted data, wherein the encrypted data includes static content, but lacks all the content required to successfully run the game at the game console or device. The package may also include one or more sets of procedural content generation instructions that detail how to generate missing content and a smaller corpus of data for generating content required for installation at installation time. Therefore, one or more procedural content generation instructions can be decrypted and data based on the execution of the one or more procedural content generation instructions can be generated. The generated data can be encrypted and a tamper-proof hash can be generated based on the generated encrypted data. The generated tamper-proof hash can be compared with one or more tamper-proof hashes in the tamper-proof hash part of the received package. Therefore, if the tamper-proof hash matches, the installation package is correct, undamaged, or otherwise complete. If the tamper-proof hashes do not match, the game console or other device may download one or more of the generated data or an entire installation package containing the generated data from another device such as a content provider's server.
[0005] This summary is provided to introduce in simplified form a selection of concepts that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additional aspects, features, and / or advantages of each example will be set forth in the following description and will be partially apparent from the description or may be learned by practicing the invention. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Non-limiting and non-exhaustive examples are described with reference to the following figures.
[0008] Figure 1 Details of a content update management system according to aspects of the present disclosure are shown;
[0009] Figure 2 Depicting details of pre-procedural content generation packages and post-procedural content generation packages, files and / or images according to examples of the present disclosure;
[0010] Figure 3 Depicting details of a process involving pre-protocol content generation package, file and / or image creation and pre-protocol generation output creation according to examples of the present disclosure;
[0011] Figure 4 Depicting details of a process involving pre-production content generation packages, file and / or image installation and production output creation according to examples of the present disclosure;
[0012] Figure 5 Describes additional details of the process involved in pre-build content packages, file and / or image installation and build output creation;
[0013] Figure 6 Depicted are details of a method for generating packages, files, and / or images in accordance with procedural content prior to generation according to examples of the present disclosure;
[0014] Figure 7 Depicting details of a method for installing and generating procedurally generated output according to an example of the present disclosure;
[0015] Figure 8 Depicting details of a method for confirming that output is generated as per procedure according to an example of the present disclosure;
[0016] Fig. 9 is a block diagram illustrating example physical components of a computing device that may be used to practice aspects of the present disclosure;
[0017] Fig. 10A is a simplified block diagram of a computing device that may be used to practice aspects of the present disclosure;
[0018] Fig. 10B is another simplified block diagram of a mobile computing device that may be used to practice aspects of the present disclosure; and
[0019] Fig.11 is a simplified block diagram of a distributed computing system in which aspects of the present disclosure may be implemented.
[0020] Detailed Description
[0021] The various aspects of the present disclosure will be described in more detail below with reference to the accompanying drawings that form part of the present disclosure and show various specific example aspects. However, the different aspects of the present disclosure can be implemented in many different forms and should not be interpreted as being limited to the various aspects set forth herein; on the contrary, these aspects are provided so that the present disclosure will be more thorough and complete, and these aspects will fully convey the scope of the various aspects to those skilled in the art. The various aspects can be implemented as methods, systems, or devices. Accordingly, these aspects can be implemented in the form of hardware implementation, in the form of full software implementation, or in the form of a combination of software and hardware implementations. Therefore, the following detailed description should not be considered to be limiting.
[0022] The size of game and / or game application assets (such as but not limited to graphics and audio) can be large, which usually results in considerable network transmission and export costs. According to examples of the present disclosure, game and / or game application assets can be calculated from metadata sets (compressed "seed" data, or via machine learning methods) at installation time and can reduce the amount of data to be downloaded. That is, since the downloaded data is used to generate additional content associated with the game and / or game application assets, less data needs to be downloaded because the downloaded data does not contain content that will be generated after downloading. According to examples of the present disclosure, the content generation process is performed during installation because operating compressed game and / or game application assets at runtime is usually inefficient and requires more computing resources to be allocated than is usually in the game environment. Generating these "conditional" application assets, which are usually larger in size, for use at runtime in an environment where the data is encrypted-at-rest and resides in a storage location is usually impossible because the encrypted data cannot be easily modified in a trusted and verifiable manner.
[0023] According to examples of the present disclosure, a software package, application, game, and / or work may be run in content generation mode and generate its assets from the original "compressed" or "seed" form included in the downloaded data; thus, the generated assets may be written back to the game or work, package in encrypted form, and the original seed assets may be deleted if desired. Thus, examples of the present disclosure not only reduce the amount of data that may need to be transmitted and / or downloaded, but by deleting the original seed assets, additional storage space may become available.
[0024] The final game or title, file can then be verified against a "gold standard" master version of the installation package. The "gold standard" master version may include, but is not limited to, the ideal form of the package on disk, which includes integrity and validation hashes for the generated data. Thus, validation hashes such as tamper-proof hashes ensure that the content generation process has not been tampered with as specified and that the file is in the expected form.
[0025] In the event that a file is accidentally modified or the generation of a file from the seed data unexpectedly fails, the hash validation check may fail and the "gold standard" file data may be downloaded from the content provider as a regular encrypted file download. This ensures that the process is robust and provides a measure of protection against unexpected or uncertain results.
[0026] Therefore, and in some examples, two or more file packages are provided, which are composed of a series of concatenated files arranged as a single binary image, with headers and metadata to detail file name information, metadata of each file, location within the image, and whether the file is "seed" data or "final" data. Each package may also include an integrity confirmation hash tree, such as but not limited to a hash array, a Merkle tree, a hash chain and / or a hash list, which may be mapped to each data block within the data of the package file and allow the file data to be verified as containing the expected known data set. The first software package may be referred to as a pre-procedural content generation (pre-PCG) package, and the second software package may be referred to as a post-procedural content generation (post-PCG) package, and the two software packages may be the same or similar to the "gold standard" master version when confirmed. One or more pre-PCG packages may include data and instructions required for generating content by procedure at the time of installation. In some examples, one or more pre-PCG packages may be used to provide (i.e., generate) data for game and / or application assets. The post-PCG package may contain all of this data and any executable files required to generate the content according to the specification, as well as the final expected output files of the content generation process.
[0027] Thus, at installation time, after the procedurally generated content source material has been installed, the application, script, or other item contained in the pre-PCG package can be run in content generation mode. The content generation mode includes the ability to read decrypted files from the pre-PCG package and write one or more resulting files to the installation package. Such files can then be confirmed against the integrity hash tree before use. Therefore, in the event of a failure in the integrity hash tree confirmation of any written file, the file can be downloaded from the "gold standard" package from the content provider. Thus, a last-ditch attempt can be made to recover the data so that it can be used with confidence, safely, and with integrity guaranteed.
[0028] Thus, other items in a content generation application, script, or package may include, but are not limited to: reading an existing file containing instructions and / or seed data; generating a new file from the instructions and / or seed data; providing the generated content to a storage location in a specific format; transcoding the output data into a format optimized for use on a GPU or otherwise targeted to a specific hardware configuration and capabilities; and validating the file against a hash tree after outputting and completing the file. If a hash mismatch occurs, the generated file may be deleted and replaced with a known good version from a "gold standard" package.
[0029] In some examples, the content generation process may vary depending on the target system to which it is applied. For example, it may be desirable to have multiple "gold standard" packages for different target hardware architectures. That is, the output data may vary significantly for each of the different target hardware architectures. Since a different set of "gold standard" reference packages can be generated for each architecture, the generated files can still be verified and validated. In some examples, implementations may use similar mechanisms within a package or across packages. Thus, a known "gold standard" reference package may be required for each target attribute combination for a given installation.
[0030] Content generation operations may be performed as, but not limited to: a background process while the application is running; a special background process while the operating system and other applications are running; and / or a foreground process only as part of an installation. The process of procedural content generation may include, but is not limited to: one or more compression / decompression codecs applied to the data; recompressing the generated data into a specific form for a specific hardware configuration and capabilities (e.g., providing the data in a texture format for a specific GPU version); using machine learning methods for generating data from compressed / unique forms, large corpus methods for compressing, transmitting or distributing data, or other mechanisms (e.g., generating speech from a markup language and then applying corrections to tailor the output to match an actor's voice, resulting in less than typical audio compression methods).
[0031] According to an example of the present disclosure, by generating a package containing procedurally generated content and then generating a tamper-proof hash based on the package including the procedurally generated content, the procedurally generated content can be removed for transmission. Therefore, the transmitted package is much smaller than the package including the procedurally generated content. In addition, once the procedurally generated content is "generated", the tamper-proof hash can be used to verify the integrity and authenticity of the "generated" content. Therefore, at least one technical benefit may include transmitting a smaller installation package over a communication network. In some examples, at least one technical benefit may include adjusting one or more procedures based on the target hardware, as previously discussed. In addition, at least one technical benefit may include generating content for encrypted files in a secure manner.
[0032] Figure 1 A system involving installation of distributed encrypted content for procedural content generation for one or more systems at installation time is described according to an example of the present disclosure. More specifically, a system may be provided such as Figure 1 The content distribution management system 100 shown. The content distribution management system 100 may generally include one or more content providers 102; the content providers 102 may include one or more servers 104A-104D. Each of the servers 104A-104D may include a content generator 108 configured to generate a game, work and / or application asset content package for installation at a target system. Alternatively or additionally, the game, work and / or application asset content package may be generated by, for example, a software developer outside the content distribution management system 100 and provided to the target system. In some examples, the content generator 108 may receive static content files and procedurally generated content files, and generate a pre-procedural content generation (pre-PCG) package for the game, work and / or game application asset and provide the pre-PCG package to the system or client device for installation.
[0033] According to an example of the present disclosure, the front PCG package 120 may be transmitted to one or more endpoints, also referred to as user devices and / or client devices 116, via the network 112. One or more client devices 116A-116E may receive the front PCG package 120 for installation. In some examples, the client devices 116A-116E may correspond to a game console 116A, a client device 116B, a smart phone 116C, and / or a tablet computer 116E. In some instances, the endpoint may correspond to a server 116D; the server 116D may run a session or otherwise require the front PCG package 120 to be installed. As another non-limiting example, at least one client device 116A-116E may be any device configured to allow a user to use an application, such as, for example, a smart phone, a tablet computer, a desktop computer, a laptop device, a gaming device, a media device, a smart TV, a multimedia cable / TV box, a smart phone accessory device, an industrial machine, a home appliance, a thermostat, a tablet accessory device, a personal digital assistant (PDA), or other Internet of Things (IOT) devices.
[0034] Figure 2Depicted are additional details of a pre-procedural content generation (pre-PCG) package 204 for a game or work according to an example of the present disclosure. Pre-PCG package 204 may correspond to or otherwise have an image form, such as an image file. That is, the package can be distributed and / or stored in the form of a computer file containing the content and structure of a disk volume, wherein the disk volume or logical structure is generally a single accessible storage area with a single file system. Pre-PCG package 204 may include, but is not limited to, a header portion 208A, a metadata portion 212A, a static file portion 216A, a procedural content generation portion 220A, and a hash portion 224A. Header portion 208A may include information generally describing pre-PCG package 204. For example, header portion 208A may include, but is not limited to, the date on which pre-PCG package 204 was created, the date on which pre-PCG package 204 was most recently modified, the size of pre-PCG package 204, and / or root hash information about pre-PCG package 204. The header portion 208A may be accessed by one or more of the content provider 102 and / or the client device 116A-116E. The metadata portion 212A may include information describing the content of the former PCG package 204. For example, the metadata portion 212A may include, but is not limited to, file directory listing information, file system description, file system, file system corresponding to an image file, file location information, data location information, and / or block location information. The static file portion 216A typically includes static files and / or other content that is usually not dependent on the device where the former PCG package 204 is located and / or is installed therein. As a non-limiting example, the static file portion 216A may include files required for the installation of the former PCG package 204 and / or other application asset content. The program content generation portion 220A includes instructions and seed data for providing program-generated content such as application asset content. For example, the program content generation portion 220A may include instructions for generating additional content (such as, but not limited to, textures, graphics content and audio content, level data, etc.) when executed. Hash portion 224A generally includes a tamper-proof hash that covers all files and data portions in the former PCG package 204, whether distributed with the former PCG package 204 or generated via the procedural content generation portion 220A. The tamper-proof hash can be generated using one or more hash functions that are used to map data of any size to data of a fixed size. The value returned by the hash function is referred to as a hash value, a hash code, a hash sum, or simply referred to as a hash. Thus, the tamper-proof hash function allows easy verification of whether some input data is mapped to a given hash value. The example of a hash function is SHA-2.
[0035] According to an example of the present disclosure, Figure 2A post-procedural content generation (post-PCG) package 228 is depicted that is similar to the pre-procedural content generation package 204. The post-PCG package 228 may include, but is not limited to, a header portion 208B that may be the same as or similar to the header portion 208A, a metadata portion 212B that may be the same as or similar to the metadata portion 212A, a static file portion 216B that may be the same as or similar to the static file portion 216A, a procedural content generation portion 220B that may be the same as or similar to the procedural content generation portion 220A, and a hash portion 224B that may be the same as or similar to the hash portion 224A. The post-PCG package 228 differs from the pre-PCG package 204 by including content generated using one or more procedures and / or seeds located in the procedural content generation portion 220A of the pre-PCG package 204 to generate or otherwise create the procedurally generated output portion 232. That is, once the pre-PCG package 204 has been downloaded to, for example, a client device 116A-E, one or more applications, executable files, scripts, and / or procedures residing in the program content generation portion 220A may be executed. By executing one or more applications, executable files, scripts, and / or procedures residing in the program content generation portion 220A, a program generated output portion 232 is generated or otherwise created. Because the hash portion 224A includes a tamper-proof hash for the program generated output portion 232, the hash portion 224A may be the same as the hash portion 224B. That is, the Merkle tree, for example, in the hash portion 224B of the post-PCG package 228 may match the hash portion 224A of the pre-PCG package 204.
[0036] According to an example of the present disclosure, Figure 3 Additional details are depicted regarding generating a pre-PCG package (e.g., pre-PCG package 204). In some examples, the pre-PCG package may be created at content provider 102, for example, in content generator 108. Content provider 102 and / or content generator 108 may read static data 312 at 308. Static data 312 may be associated with reference to Figure 2 In some examples, static data 312 may include static file portion 304A and another portion 316A. Portion 316A may correspond to a header portion and / or a metadata portion. The content provider and / or content generator 108 may read the procedural content generation code and / or the procedural content generation file 324A at 320. The procedural content generation code may be the same as the reference content generation code. Figure 2 The described procedure content generation part 220A is the same or similar. Figure 3As shown, the code generated by the content of the regulations and / or the file generated by the content of the regulations 324 may include one or more seed parts 322 and / or one or more regulations parts 326. One or more seed parts 322 may be additional data, files and / or blocks that may be specific to or not specific to the target platform. The one or more regulations parts 326 may correspond to one or more algorithms, executable files and / or regulations that operate the seed part 322 and / or other data of the static data 304. The code generated by the content of the regulations and / or the file generated by the content of the regulations 324 may be added to the static file part 304A including the static data. Figure 3 The illustrated intermediate file 328 depicts the procedural content generation code and / or procedural content generation file 324 combined with the static file portion 304A including static data according to an example of the present disclosure. Portion 316B may correspond to a header portion and / or a metadata portion.
[0037] At 332, the content provider 102 and / or the content generator 108 may utilize the procedural content generation code and / or the procedural content generation file 324 to generate, for example, procedurally generated output 340. The procedurally generated output 340A may be associated with Figure 2 The intermediate file 336 may be the same or similar to the generated output according to procedures portion 232 of the generated output according to procedures. For example, one or more applications, executable files, scripts and / or procedures residing in the generated content according to procedures code and / or generated content according to procedures file 324A may be executed. The generated output according to procedures 340A is generated or otherwise created by executing one or more applications, executable files, scripts and / or procedures residing in the generated content according to procedures code and / or generated content according to procedures file 324A. Therefore, the intermediate file 336 depicts the static file portion 304A including static data, the generated content according to procedures code and / or generated content according to procedures file 324A, and the generated output according to procedures 340A, wherein portion 316C may correspond to a header portion and / or a metadata portion.
[0038] At 344, the content provider 102 and / or the content generator 108 may receive an encryption key 342. The encryption key may be provided by a rights management system maintained by the content provider 102. In some instances, the encryption key 342 may be an encryption key used to encrypt one or more portions of the intermediate file 336; the one or more portions of the intermediate file 336 may be encrypted using, for example, AES-256, DES, FIPS, or other encryption algorithms. The encryption key 342 may correspond to a single encryption key or may correspond to multiple encryption keys. The result of 344 may be an intermediate file, such as an encrypted package 348. The encrypted package 348 may include an encrypted file portion 304B corresponding to an unencrypted or plaintext static file portion 304A. The encrypted package 348 may include an encrypted portion 324B corresponding to an unencrypted or plaintext procedurally generated content file 324A. The encrypted package 348 may include an encrypted portion 340B corresponding to an unencrypted or plaintext procedurally generated output 340A. Similar to the intermediate file 336, the encrypted package 348 may include a header portion and / or a metadata portion 316D.
[0039] At 356, the content provider 102 and / or the content generator 108 may generate a tamper-proof hash based on the encrypted file portion 304B, the encrypted portion 324B, and / or the encrypted portion 340B. In some aspects, the tamper-proof hash may be based on the encrypted file portion 304B, the encrypted portion 324B, the encrypted portion 340B, and the header portion and / or the metadata portion 316D. Therefore, the generated hash portion 364 may be added to the encrypted package 348 to generate the intermediate file 360. The intermediate file 360 may include the encrypted file portion 304B, the encrypted portion 324B, the encrypted portion 340B, and the header portion and / or the metadata portion 316E. According to an example of the present disclosure, the intermediate file may be distributed as a content package. Alternatively or additionally, the size of the intermediate file 360 (such as the file size) may be reduced by removing the encrypted portion 340B corresponding to the output 340A generated by the specification. That is, because the generated output 340A can be generated based on the generated code and / or the generated file 324 and / or the static file portion 304A, the encrypted portion 340B can be removed, resulting in a reduced file size for transmission and / or storage. Therefore, a pre-PCG package 368 can be generated at 422. The pre-PCG package 368 can be the same or similar to the pre-PCG package 204.
[0040] According to an example of the present disclosure, Figure 4Depicted are additional details about generating procedural content generation based on the former PCG package 368. More specifically, the client device 116A-E may receive the former PCG package 368 via a communication interface for installation. At 404, the client device 116A-E may read, store and / or install at least a portion of the former PCG package 368. For example, the former PCG package 368 may correspond to the former PCG package 408 when it has been stored. That is, the encrypted file portion 304B may correspond to or otherwise be equivalent to the encrypted static file portion 412A. The encrypted procedural content generation code and / or the procedural content generation file 324B may correspond to or otherwise be equivalent to the encrypted procedural content generation code and / or the procedural content generation file 416A. The header portion and / or metadata portion 316E may correspond to or otherwise be equivalent to the header portion and / or metadata portion 420. Finally, generated hash portion 364 may correspond to or otherwise be identical to generated hash portion 424 .
[0041] Once the installation of the encrypted static file portion 412A and the encrypted programmatic content generation code and / or programmatic content generation file 416A has been completed, one or more storage locations may be reserved or otherwise identified for programmatically generated output. For example, storage space 432 may be reserved for programmatically generated output generated based on the static file portion 412A and / or the programmatic content generation code and / or the programmatic content generation file 416A. Since the header and / or metadata portion 420 includes an identifier and / or lists all files that should be included in the post-PCG package, the size of the reserved storage space 432 may be based on the information in the header and / or metadata portion 420. Figure 4 As depicted, reserved storage space 432 may be part of intermediate files 428 .
[0042] Additionally, once the installation of the encrypted static file portion 412A and the encrypted generated-by-procedure content code and / or generated-by-procedure content file 416A has been completed, one or both of the static file portion 412A and the encrypted generated-by-procedure content code and / or generated-by-procedure content file 416A may be validated at 436 using the tamper-proof hash from the hash portion 424. For example, one or more hashes of the static file portion 412A may be generated and compared to one or more hashes of the static file portion 412A that have been stored or otherwise associated with the hash portion 424. If the tamper-proof hashes match, then the download, transfer, and / or installation of the encrypted static file portion 412A is deemed validated. Similarly, one or more hashes of the encrypted content-generating-by-procedure code and / or content-generating-by-procedure file 416A may be generated and compared to one or more hashes of the encrypted content-generating-by-procedure code and / or content-generating-by-procedure file 416A that have been stored or otherwise associated with the hash portion 424. If the tamper-evident hashes match, the download, transfer, and / or installation of the encrypted content-generating-by-procedure code and / or content-generating-by-procedure file 416A is deemed authenticated.
[0043] At 444, key material 440A may be accessed to decrypt at least a portion of the encrypted content-generating code by procedure and / or content-generating file 416A by procedure. Key material 440A may be the same key as 342 and may be provided by a rights management system maintained by content provider 102. In some instances, key material 440A may be an encryption key for decrypting one or more portions of static file portion 412A and / or content-generating code by procedure and / or content-generating file 416A by procedure. Key material 440A may correspond to a single encryption key or may correspond to multiple encryption keys. At 444, key material 440A may be utilized to decrypt one or more portions of content-generating code by procedure and / or content-generating file 416A by procedure. The result of decrypting the encrypted content-generating code by procedure and / or content-generating file 416A by procedure is unencrypted content-generating code by procedure and / or content-generating file 416B by procedure.
[0044] The unencrypted per-procedural content generation code and / or per-procedural content generation file 416B may then be used at 448 to generate or otherwise create a per-procedural generated output 456B. The client device 116A-E may read the per-procedural content generation code and / or per-procedural content generation file 416B at 448. The per-procedural content generation code may be used with reference to Figure 2 The described procedure content generation part 220A is the same or similar. Figure 4As shown, the code generated by the content of the regulations and / or the file generated by the content of the regulations 416B may include one or more seed parts 422 and / or one or more regulations parts 426. One or more seed parts 422 may be the same or similar to one or more seed parts 322 and one or more regulations parts 426 may be the same or similar to one or more regulations parts 326. Therefore, one or more seed parts 422 may be additional data, files and / or blocks that may be specific to or not specific to the target platform. The one or more regulations parts 426 may correspond to one or more algorithms, regulations, executable files and / or regulations that operate the seed parts 422 and / or other data 460. Other data 460 may be based on the encrypted (or decrypted) static file part 412A source from the static file. At 448, one or more algorithms, regulations, executable files and / or regulations that operate the seed parts 422 and / or other data 460 may be executed or otherwise run, and output 456B generated by the regulations may be generated. An intermediate file 452 is shown depicting a package having an encrypted static file portion 412A, unencrypted procedural content generation code and / or procedural content generation files 416A, and unencrypted procedural generation output 456B.
[0045] At 462, key material 440B may be accessed to encrypt the per-procedural content generation code and / or per-procedural content generation file 416A and the unencrypted per-procedural generation output 456B. Key material 440B may be the same key as 342 and / or 440A and may be provided by a rights management system maintained by content provider 102. Key material 440B may correspond to a single encryption key or may correspond to multiple encryption keys. The result of encrypting the encrypted per-procedural content generation code and / or per-procedural content generation file 416B and per-procedural generation output 456B at 462 is a post-PCG package 468. Post-PCG package 468 may be associated with Figure 3 At 464, one or more portions of the post-PCG package 468 may be validated using the tamper-proof hash from the hash portion 424. For example, one or more hashes of the procedurally generated output 456A may be generated and compared to one or more hashes of the procedurally generated output 456A that have been stored or otherwise associated with the hash portion 424. If the tamper-proof hashes match, then the generation of the procedurally generated output is considered validated. If the tamper-proof hashes do not match, then the post-PCG package 468 may be downloaded or otherwise obtained from a content provider, such as the content provider 102.
[0046] For example, in the case of a 464 tamper-proof hash mismatch, you can execute Figure 4, for generating procedurally generated content based on pre-PCG package content. Alternatively or additionally, the portion of the gold standard version whose tamper-proof hash does not match the tamper-proof hash of the gold standard version is downloaded from the server and applied to the post-PCG package 468 (the data is copied directly). The hash is then reconfirmed. Thus, a rollback and repair process can be performed, allowing the procedurally generated content to be repaired without having to rely on downloading the entire gold standard version, so that only the minimum amount of data required to repair the hash tree and match the generated data with the data of the gold standard version is required. Alternatively or additionally, the entire gold standard version residing at the content provider 102 can be downloaded. For example, a gold standard version image can be requested from the content provider 102.
[0047] Figure 5 1 depicts additional details of a content distribution process according to various examples of the present disclosure. As previously discussed, the content provider 102 may include a content generator 108; the content generator 108 may generate a pre-PCG package 502 and distribute the pre-PCG package 52 to an endpoint device such as an endpoint 504. The endpoint 504 may correspond to, for example, a game console and may be the same or similar to one or more of the endpoint devices 116A-116E discussed previously.
[0048] Endpoint 504 may include hypervisor portion 508, system operating system 512, and game or title operating system 516. Hypervisor portion 508 may be software, firmware, or hardware that creates and / or runs an operating system in a virtual machine or virtual environment. That is, hypervisor portion 508 may provide an environment for one or more operating systems to be executed. Hypervisor portion 508 may coordinate access to one or more system resources (such as storage location 560, one or more processors, one or more communication interfaces, memory, etc.). Game operating system 516 may be provided as a space or location for titles to be installed and executed. For example, game operating system 516 may include title space 520 and title content 524. Title space 520 may be a space required for title execution and storage of data, generated content, etc. Title content 524 may correspond to the content of a title package that has been validated against, for example, a "gold standard" package.
[0049] The system operating system 512 can coordinate the interaction of the game operating system 516 with other parts of the endpoint 504. For example, the system operating system 512 may include a security processor 528 configured to decrypt one or more portions of the pre-PCG package 502. In addition, the system operating system 512 can facilitate a user rights process so that the correct decryption key for decrypting the pre-PCG package 502 is obtained. Such a key can be associated with a user account (such as when the user logs into the account and has been properly authenticated and / or authorized to access the work and / or update package). Alternatively or additionally, the user rights / key manager 532 can obtain one or more keys from an external location associated with a medium (such as, for example, a DVD and / or CD).
[0050] According to an example of the present disclosure, the system operating system 512 may receive or otherwise access the pre-PCG package 502 via the hypervisor portion 508 and store the pre-PCG package 502 in the storage portion 560 as a pre-PCG package 536. The pre-PCG package 536 may be associated with Figure 3 The secure processor 528 may decrypt one or more portions of the pre-PCG package 536 and provide the decrypted pre-PCG package 536 to the gaming operating system 516. The gaming operating system 516 may then generate a procedurally generated output using the unencrypted data corresponding to the procedurally generated content code and / or the procedurally generated content file 544, as previously described in Figure 4 When the gaming operating system 516 has finished generating the content, the gaming operating system 516 may instruct the security processor 528 to encrypt the newly generated content with the appropriate security key.
[0051] The gaming operating system 516 may then instruct the security processor 528 to verify that the encrypted program-generated output 556 corresponding to the encrypted program-generated output matches the encrypted portion found in the "gold standard" image by generating a tamper-proof hash based on the encrypted program-generated output and comparing the generated tamper-proof hash with the tamper-proof hash received in the pre-PCG package 502. That is, the tamper-proof hash 552 generally corresponds to the tamper-proof hash 424, as previously discussed. If the tamper-proof hash 552 matches the tamper-proof hash generated based on the encrypted program-generated output 556, the program-generated output 556 content is determined to be correct or otherwise confirmed. Therefore, the post-PCG package 564 may include the same content or otherwise match the "gold standard" package. That is, the static file portion 540, the procedural content generation code and / or the procedural content generation file 544, the procedural generation output 556, the header and / or metadata portion 548, and the tamper-proof hash 552 may be equivalent to an encrypted "gold standard" version of the work content.
[0052] Although the security processor 528 and the user rights / key manager 532 are depicted as being part of or otherwise running at the system operating system 512, the security processor 528 and / or the user rights / key manager 532 may be executed anywhere at the endpoint 504. For example, decryption of the pre-PCG package 502 may occur within the gaming operating system 516; encryption of the post-PCG package 564 may occur within the gaming operating system 516. In some examples, the gaming operating system 512 may generate a programmatically generated output using unencrypted data corresponding to programmatically generated content code and / or programmatically generated content files 544, as previously described in Figure 4 That is, the generation of the post-PCG package 564 can be performed at the system operating system.
[0053] According to examples of the present disclosure, endpoint 504 may execute a single operating system or otherwise referred to as a common operating environment. That is, and by way of example, endpoint 504 may include a single system operating system at which decryption of pre-PCG package 502 may be performed, under which unencrypted data corresponding to programmatic content generation code and / or programmatic content generation file 544 may be used to generate programmatically generated output (as previously described in Figure 4 ), and this data can be encrypted under the single operating system to generate the post-PCG package 564. Thus, as in Figure 2 , Figure 4 and Figure 5 One or more of the steps included in generating the post-PCG file 564 described in can be performed within the general environment of a client computer, smart phone, or other device.
[0054] Figure 6 The details of a method 600 for creating a pre-PCG package according to an example of the present disclosure are depicted. The general order of the steps of the method 600 is as follows: Figure 6 Generally speaking, method 600 begins with start operation 604 and ends with generating one or more of the pre-PCG package files and / or "gold standard" images, packages or files for distribution. Method 600 may include more or fewer steps, or may be combined with Figure 6 The method 600 may be performed as a set of computer executable instructions executed by a computer system and encoded or stored on a computer readable medium. In addition, the method 600 may be performed by gates or circuits associated with a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on a chip (SOC), or other hardware devices. Hereinafter, the method 600 shall be referred to in conjunction with Figure 1-5 The described systems, components, modules, software, data structures, user interfaces, etc. are explained.
[0055] Method 600 begins at 604, receiving an instruction to create a file, package, or image for distribution. At 608, one or more static files may be received. The one or more static files may be located in a similar area or otherwise assembled into a static file portion (such as, for example, one or more of the previously described static file portions 304A and / or 312). Method 600 may flow to 612, where code may be added to generate a file by content of a regulation and / or a file may be added to generate a file by content of a regulation. For example, code may be added to generate a file by content of a regulation and / or a file may be added to a file, image, or package including a static file portion. Code may be added to generate a file by content of a regulation and / or a file ... The one or more procedure portions may be the same or similar to the one or more procedure portions 326 previously described. The method may then generate one or more final output versions of the procedure-generated output. In some instances, the procedure-generated code and / or the procedure-generated file may be target system specific so that a first procedure-generated output corresponds to a specific target system and a second procedure-generated output corresponds to a second specific target system. The final pre-PCG package may include one or more of the first or second procedure-generated outputs.
[0056] The method may move to 620, wherein one or more encryption keys may be used to encrypt static file portions, generate code by program content and / or generate files by program content and generate output by program, as previously discussed. At 624, the method may continue to generate tamper-proof hashes for static files, generate code by program content and / or generate files by program content and generate output by program. These tamper-proof hashes may be stored in the hash portion as package metadata. Method 600 may then determine at 628 whether the package created so far should be reduced. If the size of the package created should be reduced, method 600 may continue to 640, wherein the output generated by program can be removed from a package, file or image to create a pre-PCG package. At 636, the pre-PCG package may be distributed to, for example, one or more servers 104A-104D of a content provider 102. In some instances, the pre-PCG package may be prepared at 636 for printing and / or printed to a physical medium, such as a DVD medium. If the size of the file is not to be reduced, then the larger file, package, or image including the procedurally generated output may be distributed to one or more servers as a golden master package at 632, and then distributed to, for example, one or more servers 104A-104D of the content provider 102 at 636. In some examples, the larger file, package, or image including the procedurally generated output may be prepared for printing and / or printed to physical media at 636. The method 600 may end at 644.
[0057] Figure 7 Depicts details of a method 700 for installing a pre-PCG package, file, or image at a client device and then generating a programmatically generated output of an example of the underlying disclosure. The general order of the steps of the method 700 is as follows: Figure 7 Generally speaking, method 700 begins with start operation 704 and ends with end operation 724. Method 700 may include more or fewer steps, or may be combined with Figure 7 The method 700 may be performed as a set of computer executable instructions executed by a computer system and encoded or stored on a computer readable medium. In addition, the method 700 may be performed by gates or circuits associated with a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on a chip (SOC), or other hardware devices. Hereinafter, the method 700 shall be referred to in conjunction with Figure 1-6 The described systems, components, modules, software, data structures, user interfaces, etc. are explained.
[0058] Method 700 begins at 704, where instructions may be sent and / or received by a client device (such as client device 116A-E) at 708. At 708, client device 116A-E may obtain a pre-PCG package, such as pre-PCG package 368. One or more static file parts (such as common files, package metadata, and tamper-proof hashes) may be installed from the pre-PCG package 368 at client device 116A-E. Method 700 may also retain or otherwise identify space for generating output by procedure at 716, as previously discussed. At 720, static file data and code generated by procedure content and / or file generated by procedure content in some instances may be confirmed against one or more tamper-proof hashes of the hash part from the pre-PCG package. That is, one or more hashes may be generated based on static file content, code generated by procedure content, and / or file generated by procedure content and / or metadata content installed at client device 116A-E.
[0059] When successful confirmation, execution may include one or more seed parts and / or one or more procedures parts, and / or one or more of the procedures content generation code and / or the procedures content generation file to generate output by the procedures at 724. More specifically, the procedures, algorithms, scripts, executable files, applications and / or instructions are run and can be operated to read the seed data and / or other data in the former PCG package, file or image of the client device 116A-E. This reading of the seed data and / or other data in the former PCG package can be carried out at 728. Method 700 can flow to 732 then, wherein generating output by the procedures and storing it in the expected position. For example, the previously reserved space or position may include generating output by the procedures. At 736, method 700 can encrypt and / or encrypt the output by the procedures. Method 700 ends at 740 then.
[0060] Figure 8 The details of a method 800 for confirming that output is generated in accordance with a procedure according to an example of the present disclosure are depicted. The general order of the steps of the method 800 is as follows: Figure 8 Generally speaking, method 800 begins with a start operation 804 and ends with an end operation 820. Method 800 may include more or fewer steps, or may be combined with Figure 8 The method 800 may be performed as a set of computer executable instructions executed by a computer system and encoded or stored on a computer readable medium. In addition, the method 800 may be performed by gates or circuits associated with a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on a chip (SOC), or other hardware devices. Hereinafter, the method 800 shall be referred to in conjunction with Figure 1-7The described systems, components, modules, software, data structures, user interfaces, etc. are explained.
[0061] Method 800 begins at 804, after generating the output according to the procedure at step 736 of method 700. That is, once the output according to the procedure is generated, method 800 can be initiated at 804. At 808, method 800 determines whether the rear PCG package has been completely written. In other words, if the output according to the procedure is not generated, method 800 can flow to step 812, wherein the known good version of the rear PCG package and / or file is obtained. In some instances, only the known good version of the output according to the procedure can be obtained, so that the image, file or package residing in the client device 116A-E can simply add this file to the existing data. Once the known good version is obtained, method 800 can end at 820. In some instances, when the rear PCG package, file or image has been completely written, method 800 can continue to generate hashes based on the output according to the procedure and verify that the generated hash matches the hash found in the tamper-proof hash tree provided in the front PCG package, file or image. If the hashes match, then method 800 may continue to 820. However, if the hashes do not match, then method 800 may continue to 812, where a known good version of the post-PCG package and / or file is obtained, as previously described. After 812, method 800 may continue to one or more error handling steps to ensure that the known good version of the post-PCG package and / or file is valid and in some instances may return to 808 and / or end at 820.
[0062] Fig. 9 900 is a block diagram illustrating the physical components (i.e., hardware) of a computing device 900 that can be used to practice various aspects of the present disclosure. The computing device components described below may be applicable to the computing devices described above (such as client devices 116 and / or content generators 108). In a basic configuration, the computing device 900 may include at least one processing unit 902 and a system memory 904. Depending on the configuration and type of the computing device, the system memory 904 may include, but is not limited to, volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memories. The system memory 904 may include operating systems 905A and 905B and one or more program modules 906 that are suitable for executing various aspects disclosed herein, such as a security processor 924, a program-generated output validator 928, and / or a content generator 932. For example, the operating system 905A may be suitable for controlling the operation of the computing device 900. For example, the operating system 905B may be suitable for controlling game and / or production execution. Furthermore, aspects of the present disclosure may be practiced in conjunction with graphics libraries, other operating systems, or any other application programs, and the embodiments are not limited to any particular application or system. Fig. 9 908. The computing device 900 may have additional features or functionality. For example, the computing device 900 may also include additional data storage devices (removable and / or non-removable), such as, for example, magnetic disks, optical disks, or tapes. Such additional storage Fig. 9 909 and the non-removable storage device 910.
[0063] As described above, a number of program modules and data files may be stored in system memory 904. While executing on processing unit 902, program modules 906 (e.g., one or more applications 920) may perform processes including, but not limited to, the various aspects described herein. Other program modules that may be used in accordance with various aspects of the present disclosure may include email and contact applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided applications, and the like.
[0064] According to examples of the present disclosure, the use of a "gold standard" master image on a server may be used to rescue content in a failure scenario where the integrity hash does not match the generated data is contemplated and described. In addition, encrypted file data is decompressed and procedurally generated from its compressed / seed form to a fully expanded form ready for high-performance use by an application via one or more of any of a variety of different mechanisms for generating file data including, but not limited to: standard compression / decompression codecs such as LZ compression, arithmetic compression, JPEG compression; decompressing these assets into a form suitable for use by the game work or GPU - for example, decoding an asset mesh stored in a high-resolution curved form into a triangle mesh, or generating a GPU-efficient texture form from a glossy compressed image (e.g., JPEG compressed texture to DXn or BCn graphics format), retiming an image on the fly, or generating or discarding MIP layers in a texture chain; using machine learning techniques to reconstruct textures upon installation or update; using machine learning techniques to generate any data required for the game from a low-entropy form; generating data from a random seed in a procedural manner, and then applying "correction" patches to the generated data to customize the result through human intervention; and using machine learning methods to generate speech from a markup language, and then applying corrections to customize the output to match the voice of an actor, the resulting data being smaller than typical audio compression methods are contemplated and described herein. According to examples of the present disclosure, launching an application in a special install- or update-time mode that instructs the application to programmatically generate content from its available input data is contemplated and described herein.
[0065] In addition, various aspects of the present disclosure may be implemented in circuits including discrete electronic components, packaged or integrated electronic chips containing logic gates, circuits utilizing a microprocessor, or on a single chip containing electronic components or a microprocessor. For example, various aspects of the present disclosure may be practiced via a system on a chip (SOC), wherein Fig. 9 Each or many of the components illustrated in the examples may be integrated onto a single integrated circuit. Such a SOC device may include one or more processing units, a graphics unit, a communication unit, a system virtualization unit, and various application functions, all of which are integrated into (or "burned into") a chip substrate as a single integrated circuit. When operated via the SOC, the functions described herein regarding the ability of the client to switch protocols can be operated via dedicated logic that integrates other components of the computing device 900 on a single integrated circuit (chip). Various aspects of the present disclosure may also be practiced using other technologies that can perform logical operations such as, for example, AND, OR, and NOT, including, but not limited to, mechanical, optical, fluid, and quantum technologies. In addition, various aspects of the present disclosure may be implemented in a general-purpose computer or any other circuit or system.
[0066] The computing device 900 may also have one or more input devices 912, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, and the like. Output devices 914 may also be included, such as a display, a speaker, a printer, and the like. The above-mentioned devices are examples, and other devices may be used. The computing device 900 may include one or more communication connections 916A that allow communication with other computing devices 950. Examples of suitable communication connections 916A include, but are not limited to, radio frequency (RF) transmitters, receivers, and / or transceiver circuit systems; universal serial bus (USB), parallel, network interface cards, and / or serial ports.
[0067] As used herein, the term computer-readable media may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method and technology for storing information (such as computer-readable instructions, data structures or program modules). System memory 904, removable storage device 909 and non-removable storage device 910 are all examples of computer storage media (e.g., memory storage). Computer storage media may include RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, cassette, magnetic tape, disk storage or other magnetic storage device, or any other product that can be used to store information and can be accessed by computing device 900. Any such computer storage media can be part of computing device 900. Computer storage media do not include carrier waves or other propagated or modulated data signals.
[0068] Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" may describe a signal that has one or more of its characteristics set or changed in a manner that encodes information in the signal. By way of example and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.
[0069] Fig. 10A and 10B A computing device, client device, or mobile computing device 1000 is illustrated, such as a mobile phone, a smart phone, a wearable computer (such as a smart watch), a tablet computer, a laptop computer, etc., which can be used to practice various aspects of the present disclosure. In some aspects, the client device (e.g., 116A-116E) can be a mobile computing device. Fig. 10A , illustrates one aspect of a mobile computing device 1000 for implementing various aspects. In a basic configuration, the mobile computing device 1000 is a handheld computer having both input elements and output elements. The mobile computing device 1000 typically includes a display 1005 and one or more input buttons 1010 that allow a user to input information into the mobile computing device 1000. The display 1005 of the mobile computing device 1000 may also be used as an input device (e.g., a touch screen display). The optional side input element 1015 will allow more user input if included. The side input element 1015 may be a rotary switch, a button, or any other type of manual input element. In alternative aspects, the mobile computing device 1000 may incorporate more or fewer input elements. For example, the display 1005 may not be a touch screen in some aspects. In yet another alternative aspect, the mobile computing device 1000 is a portable telephone system such as a cellular phone. The mobile computing device 1000 may also include an optional keypad 1035. The optional keypad 1035 may be a physical keypad or a "soft" keypad generated on the touch screen display. In various aspects, output elements include a display 1005 for showing a graphical user interface (GUI), a visual indicator 1020 (e.g., a light emitting diode), and / or an audio transducer 1025 (e.g., a speaker). In some aspects, the mobile computing device 1000 includes a vibration transducer for providing tactile feedback to the user. In yet another aspect, the mobile computing device 1000 incorporates input and / or output ports such as audio input (e.g., a microphone jack), audio output (e.g., a headphone jack), and video output (e.g., an HDMI port) for sending signals to or receiving signals from external sources.
[0070] Fig. 10B 104A-104D), or a mobile computing device (e.g., client devices 116A-E). That is, electronic device 1000 may include system (e.g., architecture) 1002 to implement some aspects. System 1002 may be implemented as a "smart phone" capable of running one or more applications (e.g., browser, email, calendar, contact manager, messaging client, game, and media client / player). In some aspects, system 1002 is integrated as a computing device, such as an integrated personal digital assistant (PDA) and wireless phone.
[0071] One or more application programs 1066 may be loaded into memory 1062 and run on or in association with operating system 1064. Examples of application programs include a phone dialer, an email program, a personal information management (PIM) program, a word processing program, a spreadsheet program, an Internet browser program, a messaging program, and the like. System 1002 also includes a non-volatile storage area 1068 within memory 1062. Non-volatile storage area 1068 may be used to store persistent information that is not lost if system 1002 loses power. Application programs 1066 may use and store information in non-volatile storage area 1068, such as email or other messages, header content, and the like used by an email application. A synchronization application (not shown) also resides on system 1002 and is programmed to interact with a corresponding synchronization application residing on a host computer to keep information stored in non-volatile storage area 1068 synchronized with corresponding information stored at the host computer. As should be appreciated, other applications may be loaded into memory 1062 and executed on the mobile computing device 1000 described herein (eg, a search engine, an extractor module, a relevance ranking module, an answer scoring module, etc.).
[0072] The system 1002 has a power source 1070 that can be implemented as one or more batteries. The power source 1070 may also include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
[0073] The system 1002 may also include a radio interface layer 1072 that performs the functions of transmitting and receiving radio frequency communications. The radio interface layer 1072 facilitates wireless connectivity between the system 1002 and the "outside world" via a communications carrier or service provider. Transmissions to and from the radio interface layer 1072 are performed under the control of the operating system 1064. In other words, communications received by the radio interface layer 1072 may be propagated to the application 1066 via the operating system 1064, and vice versa.
[0074] Visual indicator 1020 can be used to provide visual notification, and / or audio interface 1074 can be used to generate audible notification via audio transducer 1025. In the illustrated configuration, visual indicator 1020 is a light emitting diode (LED) and audio transducer 1025 is a speaker. These devices can be directly coupled to power supply 1070 so that they remain turned on for a duration specified by the notification mechanism when activated, even if processor 1060 and other components may be turned off to save battery power. LED can be programmed to remain turned on indefinitely until the user takes action to indicate the power-on state of the device. Audio interface 1074 is used to provide audible signals to the user and receive audible signals from the user. For example, in addition to being coupled to audio transducer 1025, audio interface 1074 can also be coupled to a microphone to receive audible input, such as to facilitate telephone conversations. According to various aspects of the present invention, a microphone can also serve as an audio sensor to facilitate the control of notifications, as will be described below. The system 1002 may also include a video interface 1076 that enables operation of the onboard camera 1030 to record still images, video streams, and the like.
[0075] The mobile computing device 1000 implementing the system 1002 may have additional features or functionality. For example, the mobile computing device 1000 may also include additional data storage devices (removable and / or non-removable), such as magnetic disks, optical disks, or tapes. Such additional storage Fig. 10B , shown by non-volatile storage area 1068.
[0076] Data / information generated or captured by the mobile computing device 1000 and stored via the system 1002 may be stored locally on the mobile computing device 1000 as described above, or the data may be stored on any number of storage media accessible by the device via the radio interface layer 1072 or via a wired connection between the mobile computing device 1000 and a separate computing device associated with the mobile computing device 1000, such as a server computer in a distributed computing network such as the Internet. As should be understood, such data / information may be accessed via the mobile computing device 1000, via the radio interface layer 1072, or via a distributed computing network. Similarly, such data / information may be easily transferred between computing devices for storage and use according to well-known data / information transfer and storage means, including electronic mail and collaborative data / information sharing systems.
[0077] Fig.11An aspect of the architecture of a system for processing data received from a remote source at a computing system 1102 (e.g., content generator 108) as described above is shown. The content at the server device 1102 can be stored by different communication channels or other storage types. For example, various game / work images and outputs generated by procedures and pre-PCG packages, images or files can be stored using directory services 1122, web portals 1124, mailbox services 1126, instant messaging storage 1128 or social networking sites 1130. The unified profile API based on user data tables 1110 can be used by the client communicating with the server device 1102, and / or the content generator can be used by the server device 1102. The server device 1102 can provide data to a client computing device (such as client devices 116A-116E) through a network 1115 and receive data from the client computing device. As examples, the client device 116 described above may be embodied in a personal computer 1104, a tablet computing device 1106, and / or a mobile computing device 1108 (e.g., a smartphone). In addition to receiving graphics data available for pre-processing at a graphics originating system or post-processing at a receiving computing system, any of these configurations of computing devices may obtain content (such as game / title images and / or pre-PCG packages, images, or files) from storage 1116.
[0078] The above specification, examples and data provide a complete description of the manufacture and use of the components of the invention.Since many aspects of the invention can be made without departing from the spirit and scope of the invention, the invention lies within the scope of the appended claims.
[0079] The phrases "at least one", "one or more", "or", and "and / or" are open expressions that are both conjunctive and disjunctive in operation. For example, each of the expressions "at least one of A, B, and C", "at least one of A, B, or C", "one or more of A, B, and C", "one or more of A, B, or C", "A, B and / or C", and "A, B, or C" means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together.
[0080] The term "a" or "an" entity refers to one or more of that entity. Thus, the terms "a" (or "an"), "one or more" and "at least one" can be used interchangeably herein. It should also be noted that the terms "including", "comprising" and "having" can be used interchangeably.
[0081] As used herein, the term "automatic" and its variations refer to any process or operation that is performed without substantial human input, which is typically continuous or semi-continuous, when the process or operation is performed. However, if the input is received prior to the performance of the process or operation, then the process or operation may be automatic, even if the performance of the process or operation uses substantial or immaterial human input. Human input is considered substantial if it affects the manner in which the process or operation is performed. Human input that consents to the performance of the process or operation is not considered "substantial."
[0082] The exemplary systems and methods of the present disclosure have been described with respect to computing devices. However, in order to avoid unnecessary confusion of the present disclosure, many known structures and devices have been omitted from the foregoing description. This omission should not be interpreted as a limitation on the scope of the disclosure claimed. Specific details are set forth to provide an understanding of the present disclosure. However, it should be understood that the present disclosure can be practiced in a variety of ways beyond the specific details set forth herein.
[0083] In addition, although the exemplary aspects illustrated herein show various components of the system being collocated, certain components of the system may be remotely located in a distant portion of a distributed network (such as a LAN and / or the Internet), or located within a dedicated system. Therefore, it should be understood that the components of the system may be combined into one or more devices (such as a server, a communication device), or collocated on a specific node of a distributed network (such as an analog and / or digital telecommunications network, a packet switching network, or a circuit switching network). It can be understood from the foregoing description, and for reasons of computational efficiency, the components of the system may be arranged at any location within the distributed network of components without affecting the operation of the system.
[0084] In addition, it should be understood that the various links connecting the elements may be wired or wireless links or any combination thereof, or any other known or later developed element capable of providing data to and / or transmitting data from the connected elements. These wired or wireless links may also be secure links and may be capable of transmitting encrypted information. For example, the transmission medium used as a link may be any suitable carrier of an electrical signal, including coaxial cable, copper wire, and optical fiber, and may take the form of sound waves or light waves (such as those generated during radio wave and infrared data communications).
[0085] Any of the steps, functions, and operations discussed herein may be performed continuously and automatically.
[0086] While the flow charts have been discussed and illustrated with respect to a particular sequence of events, it should be understood that changes, additions, and omissions to this sequence may occur without materially affecting the operation of the disclosed configurations and aspects.
[0087] Various variations and modifications of the disclosure may be used.Some features of the disclosure may be provided without providing other features.
[0088] In yet another configuration, the systems and methods of the present disclosure may be implemented in conjunction with a special purpose computer, a programmable microprocessor or microcontroller and peripheral integrated circuit components, an ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit (such as a discrete component circuit), a programmable logic device or gate array (such as a PLD, PLA, FPGA, PAL), a special purpose computer, any similar device, etc. In general, any device or apparatus capable of implementing the methods illustrated herein may be used to implement various aspects of this disclosure. Exemplary hardware that may be used for the present disclosure includes computers, handheld devices, (e.g., cellular, Internet-enabled, digital, analog, hybrid, and other) phones, and other hardware known in the art. Some of these devices include processors (e.g., single or multiple microprocessors), memory, non-volatile memory, input devices, and output devices. In addition, alternative software implementations including, but not limited to, distributed processing or component / object distributed processing, parallel processing, or virtual machine processing may also be constructed to implement the methods described herein.
[0089] In yet another configuration, the disclosed method can be readily implemented in conjunction with software using an object or object-oriented software development environment that provides portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system can be implemented in part or in whole in hardware using standard logic circuits or VLSI designs. Whether software or hardware is used to implement a system according to this disclosure depends on the speed and / or efficiency requirements of the system, the specific functionality, and the specific software or hardware system or microprocessor or microcomputer system being used.
[0090] In yet another configuration, the disclosed methods may be implemented in part in software, which may be stored on a storage medium and executed on a programmed general-purpose computer in cooperation with a controller and memory, a special-purpose computer, a microprocessor, etc. In these examples, the systems and methods of the present disclosure may be implemented as a program (e.g., an applet, a microprocessor, etc.) embedded on a personal computer. or CGI scripts), as resources resident on a server or computer workstation, as routines embedded in a dedicated measurement system, system component, etc. The system may also be implemented by physically incorporating the system and / or method into a software and / or hardware system.
[0091] Although the present disclosure describes components and functions implemented with reference to specific standards and protocols, the present disclosure is not limited to such standards and protocols. Other similar standards and protocols not mentioned here exist and are considered to be included in the present disclosure. In addition, the standards and protocols mentioned herein and other similar standards and protocols not mentioned herein are periodically replaced by faster or more effective equivalents with substantially the same functions. Such replacement standards and protocols with the same functions are considered to be equivalents included in the present disclosure.
[0092] The present disclosure includes in various configurations and aspects components, methods, processes, systems and / or devices substantially as depicted and described herein, including various combinations, subcombinations and subsets thereof. After understanding the present disclosure, those skilled in the art will understand how to make and use the systems and methods disclosed herein. The present disclosure includes in various configurations and aspects providing equipment and processes in the absence of items not described and / or described herein or in various configurations or aspects, including in the absence of items that may be used in previous equipment or processes, for example, in order to improve performance, achieve ease of use and / or reduce implementation costs.
[0093] Aspects of the present disclosure are described above with reference to, for example, block diagrams and / or operational diagrams of methods, systems, and computer program products according to aspects of the present disclosure. The functions / actions mentioned in each frame may not occur in the order shown in any flow chart. For example, two frames shown in succession may actually be executed substantially concurrently, or each frame may sometimes be executed in the opposite order depending on the functionality / action involved.
[0094] The description and illustration of one or more aspects provided in this application are not intended to limit or restrict the scope of the invention as claimed in the claims in any way. The various aspects, examples and details provided in this application are considered to be sufficient to convey ownership and enable others to make and use the best mode of the claimed invention. The disclosure claimed should not be understood as being limited to any aspect, example or detail provided in this application. Whether shown and described in combination or individually, each (structure and method) feature is intended to be selectively included or omitted to produce a configuration with a set of specific features. In the case of having been provided with the description and illustration of this application, those skilled in the art can imagine that the changes, modifications and substitutions within the spirit of the broader scope of the general inventive concept embodied in this application do not deviate from the broader scope of the disclosure claimed.
[0095] According to at least one example of the present disclosure, a system for generating content for an encrypted package is provided. The system may include at least one processor and at least one memory including instructions, and the instructions, when executed by the at least one processor, cause the at least one processor to: receive a package including one or more tamper-proof hash portions and encrypted data, the encrypted data including one or more instructions; and decrypt the portion of the encrypted data including the one or more instructions. The instructions may cause the at least one processor to generate data based on the execution of the one or more instructions and a data corpus, encrypt the generated data, and validate the generated data using one or more tamper-proof hashes from the tamper-proof hash portion of the package.
[0096] At least one aspect of the above examples may include wherein the one or more instructions for validating the generated data using one or more tamper-proof hashes from the tamper-proof hash portion of the packet include generating a hash value based on an encrypted portion of the generated data, receiving a hash value from the tamper-proof hash portion of the packet, and comparing the generated hash value with the received hash value. At least one aspect of the above examples may include wherein the one or more instructions cause the at least one processor to obtain the generated data from another device if the generated hash value does not match the received hash value. At least one aspect of the above examples may include wherein the one or more instructions cause the at least one processor to obtain a packet including one or more tamper-proof hash portions and encrypted data from another device when the generated hash value does not match the received hash value, the encrypted data including the second generated data. At least one aspect of the above examples may include wherein the one or more instructions cause the at least one processor to validate the received packet before decrypting the encrypted data including the data corpus and the one or more instructions. At least one aspect of the above examples may include wherein the execution of the one or more instructions generates at least one of image data, audio data, and / or texture data. At least one aspect of the above examples may include wherein the instructions cause the at least one processor to decrypt the encrypted data in an operating system different from an operating system that generates data based on execution of the one or more instructions. At least one aspect of the above examples may include wherein the instructions cause the at least one processor to reserve storage space based on a metadata portion in a received packet.
[0097] According to at least one example of the current examples, a method for generating content for an encrypted package is provided. The method may include receiving a package including one or more tamper-proof hash portions and encrypted data, the encrypted data including one or more seed portions and one or more instructions; decrypting a portion of the encrypted data including the one or more instructions and the one or more seed portions; generating data based on the execution of the one or more instructions, wherein the one or more instructions operate on the one or more seed portions; encrypting the generated data; and validating the generated data using one or more tamper-proof hashes from the tamper-proof hash portion of the package.
[0098] At least one aspect of the above examples may include generating a hash value based on an encrypted portion of the generated data, receiving a hash value of the tamper-proof hash portion of the packet, and comparing the generated hash value to the received hash value. At least one aspect of the above examples may include obtaining the generated data from a device different from the device from which the hash value was generated if the generated hash value does not match the received hash value. At least one aspect of the above examples may include obtaining a packet including one or more tamper-proof hash portions and encrypted data from a device different from the device from which the hash value was generated if the generated hash value does not match the received hash value. At least one aspect of the above examples may include generating at least one of image data, audio data, and / or texture data. At least one aspect of the above examples may include decrypting the encrypted data in an operating system different from the operating system that generates data based on the execution of the one or more instructions.
[0099] According to at least one example of the present disclosure, a system for generating install-time per-procedure content for an encrypted package is provided. The system may include at least one processor and at least one memory including instructions, which, when executed by the at least one processor, causes the at least one processor to receive seed data and procedure instructions; execute the procedure instructions to generate content based on the seed data; encrypt the generated content, the seed data, and the procedure instructions; generate one or more tamper-proof hashes based on the encrypted content, the encrypted seed data, and the encrypted procedure instructions; and assemble an install-time per-procedure content file, the install-time per-procedure content file including at least the encrypted seed data, the encrypted procedure instructions, and the one or more tamper-proof hashes.
[0100] At least one aspect of the above examples may include wherein the instructions cause the at least one processor to exclude the encrypted generated content from the install-time program content file. At least one aspect of the above examples may include wherein the instructions cause the at least one processor to receive a first program instruction and a second program instruction, wherein the second program instruction is specific to a target device different from the target device of the first program instruction. At least one aspect of the above examples may include wherein the program instructions operate on the seed data to generate content. At least one aspect of the above examples may include wherein the execution of the one or more program instructions generates at least one of image data, audio data, and / or texture data. At least one aspect of the above examples may include wherein the instructions cause the at least one processor to transmit the install-time program content file to a game console.
[0101] Any one or more aspects substantially as disclosed herein.
[0102] Any one or more aspects substantially disclosed herein are optionally combined with any one or more other aspects substantially disclosed herein.
[0103] One or more means adapted to perform any one or more of the above-described aspects as substantially disclosed herein.
Claims
1. A system for generating content for an encrypted package, the system comprising: at least one processor; as well as at least one memory comprising instructions that, when executed by the at least one processor, cause the at least one processor to: receiving a packet including one or more tamper-resistant hash portions and encrypted data, the encrypted data including one or more per-procedural content generation instructions, wherein the one or more tamper-resistant hash portions include one or more tamper-resistant hashes mapped to each data block within the encrypted data; decrypting a portion of the encrypted data including the one or more instructions for generating content according to the program; generating data based on the execution of the one or more procedural content generation instructions and the data corpus; encrypting data generated based on execution of the one or more procedural content generation instructions and the data corpus; as well as The generated data is validated using the one or more tamper-evident hashes from the tamper-evident hash portion of the packet.
2. The system of claim 1 , wherein the instructions to validate the generated data using one or more tamper-evident hashes from the tamper-evident hash portion of the packet include: generating a hash value based on the encrypted portion of the generated data; receiving a hash value from the tamper-resistant hash portion of the packet; as well as The generated hash value is compared to the received hash value.
3. The system of claim 2, wherein the instructions cause the at least one processor to obtain the generated data from another device if the generated hash value does not match the received hash value.
4. The system of claim 2, wherein the instructions cause the at least one processor to obtain a packet including one or more tamper-proof hash portions and encrypted data from another device when the generated hash value does not match the received hash value, the encrypted data including the second generated data.
5. The system of claim 1, wherein the instructions cause the at least one processor to validate the received packet before decrypting the encrypted data including the data corpus and the one or more procedural content generation instructions.
6. The system of claim 1, wherein execution of the one or more procedural content generation instructions generates at least one of image data, audio data, and / or texture data.
7. The system of claim 1, wherein the instructions cause the at least one processor to decrypt the encrypted data in an operating system different from an operating system that generated the data based on execution of the one or more procedural content generation instructions.
8. The system of claim 1, wherein the instructions cause the at least one processor to reserve storage space based on a metadata portion of the received packet.
9. A method for generating content for an encrypted package, comprising: receiving a packet including one or more tamper-resistant hash portions and encrypted data, the encrypted data including one or more seed portions and one or more per-procedural content generation instructions, wherein the one or more tamper-resistant hash portions include one or more tamper-resistant hashes mapped to each data block within the encrypted data; decrypting a portion of the encrypted data including the one or more procedural content generation instructions and the one or more seed portions; generating data based on execution of the one or more generated-by-procedure content instructions, wherein the one or more generated-by-procedure content instructions operate on the one or more seed portions; Encrypt the generated data; as well as The generated data is validated using the one or more tamper-evident hashes from the tamper-evident hash portion of the packet.
10. The method of claim 9, further comprising: generating a hash value based on the encrypted portion of the generated data; receiving a hash value from the tamper-resistant hash portion of the packet; as well as The generated hash value is compared to the received hash value.
11. The method of claim 10, further comprising obtaining the generated data from a device different from the device from which the hash value was generated if the generated hash value does not match the received hash value.
12. The method of claim 10, further comprising obtaining a packet including one or more tamper-proof hash portions and the encrypted data from a device different from the device from which the hash value was generated if the generated hash value does not match the received hash value.
13. The method of claim 9, further comprising generating at least one of image data, audio data, and / or texture data.
14. The method of claim 9, further comprising decrypting the encrypted data in an operating system different from an operating system that generated data based on execution of the one or more procedural content generation instructions.
15. A computer system comprising means for performing the method as claimed in any one of claims 9 to 14.
Citation Information
Patent Citations
Decryption and encryption of application data
WO2013048418A1